作業系統設計與實現 系統呼叫

2021-05-05 14:57:02 字數 2002 閱讀 9811

當前系統呼叫都採用的是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)

作業系統 作業系統的設計與實現

系統設計的首要問題是定義目標和規範。從高層來說,系統設計取決於所選硬體和系統型別 批處理 分時 單使用者 多使用者 分布式 實時或通用。除了最高設計層外,需求可能很難說清,但需求可以分為兩類 使用者目標和系統目標。使用者要求系統具有一定的優良效能 系統應該易於學習和使用 可靠 安全和快速。研發人員為...

作業系統設計與實現

額,沒有看完,但是 目前看得還是沒有壓力就是 好奇心和問題都太多,丟下一段 對於如下一條命令 cp file1 file2 其功能是為檔案file1作乙個拷貝file2,在shell建立乙個子程序後,子程序執行程式cp,同時向該程式傳遞執行的引數 源檔名和目標檔名。cp程式的主函式格式如下 main...

作業系統設計與實現 讀書筆記6 系統呼叫

當前系統呼叫都採用的是posix標準,posix標準以其簡潔易用在類unix作業系統中流行,以至於linux從一開始就遵從posix標準。本節介紹應用程式和作業系統之間的介面系統呼叫。採用的是 posix 這個介面被 minix3,unix,linux 等許多現代作業系統所遵循。系統呼叫以 c語言的...