當前系統呼叫都採用的是posix標準,posix標準以其簡潔易用在類unix作業系統中流行,以至於linux從一開始就遵從posix標準。
本節介紹應用程式和作業系統之間的介面系統呼叫。採用的是
posix
,這個介面被
minix3, unix, linux
等許多現代作業系統所遵循。系統呼叫以
c語言的形式出現。
系統呼叫和普通過程呼叫的區別:系統呼叫時在核心狀態執行,
cpu存在乙個切換。普通過程呼叫不存在切換。
以讀檔案操作為例:
count = read(fd, buffer, nbytes);
minix
系統主要的系統呼叫列表:
程序管理:
pid = fork();
pid = waitpid(pid, &statloc, opts);
s = wait(&status);
s = execve(name, argv, envp);
exit(status);
size = brk(addr);
pid = getpid();
pid = getpgrp();
pid = setsid(); 訊號
(singnals)
l = ptrace(req, pid, addr, data);
s = sigaction(sig, &act, &oldact);
s = sigreturn(&context);
s = sigprocmask(how, &set, &old);
s = sigpending(set);
s = sigsuspend(sigmask);
s = kill(pid, sig);
residual = alarm(seconds);
s = pause();
檔案管理:
fd = create(name, mode)
fd = mknod(name, mode, addr)
fd = open(file, how, ...)
s = close(fd);
n = read(fd, buffer, nbytes)
n = write(fd, buffer,nbytes)
pos = lseek(fd, offset, whence)
s = stat(name, &buf)
s = fstat(fd, &buf)
fd = dup(fd)
s = pipe(&fd[0])
s = ioctl(fd, request, argp)
s = access(name, amode)
s = rename(old, new)
s = fcntl(fd, cmd, ...)
目錄和檔案系統管理
s = mkdir(name, mode)
s = rmdir(name)
s = link(name1, name2)
s = unlink(name)
s = mount(special, name, flag)
s = umount(special)
s = sync()
s = chdir(dirname)
s = chroot(dirname)
保護許可權相關
s = chmod(name, mode)
uid = getuid()
gid = getgid()
s = setuid(uid)
s = setgid(gid)
s = chown(name, owner, group)
oldmask = umask(complmode)
時間管理
seconds = time(&seconds)
s = stime(tp)
s = utime(file, timep)
s = times(buffer)
作業系統設計與實現 讀書筆記1
rel file list href file c 5cdocume 7e1 5czhangx 7e1.sdh 5clocals 7e1 5ctemp 5cmsohtml1 5c01 5cclip filelist.xml 最近對作業系統的原理頗感興趣,上學期間學習作業系統課程時沒有珍惜,只是為了拿...
作業系統讀書筆記
前言管程 訊號量體系有內容如下 整型訊號量 記錄型訊號量 and型訊號量 訊號量集。最容易搞混的就是整型訊號量和記錄型訊號量,理解之後很容易區分,記住一點 整型訊號量不遵循 讓權等待 的原則,只要待操作的訊號量s 0,就會處於一種 忙等待 的狀態,更嚴重的是,一旦事件發生,會導致一種稱之為 驚群現象...
Linux核心設計與實現讀書筆記一 作業系統與核心
1 unix強大的原因 a unix很簡潔,僅僅提供幾百個系統呼叫介面 b 所有東西都被看成檔案對待 這種抽象使得對資料和對裝置都通過一套系統呼叫來操作 c 使用c語言編寫,易於移植 d 程序建立迅速 e 簡單穩定的程序間通訊元語。2 作業系統 作業系統是指在整個系統中負責完成最基本功能和系統管理的...