Loading...

该书为课程MIT6.S081的准备工作

chapter1: Os interfaces

xv6是Unix Version 6

操作系统的工作是在多个程序之间共享一台计算机,并提供比硬件单独支持更有用的一组服务。操作系统能够管理和抽象底层硬件,因此文字管理器不需要关系正在使用哪种类型的硬件。为了接口简单且功能多,所以要设计一些依赖机制的接口。

一个给定的电脑可以有许多进程但只能有一个内核。

一个进程实在使用者空间和内核空间交替执行的。

内核使用CPU提供的硬件保护机制

shell是一个普通的程序,从用户那里读取命令并执行他们。shell是用户程序,并不是内核的一部分。

1.1 进程与内存

xv6进程由用户空间内存和内核私有的每个进程状态组成。xv6分时进程:它透明的在一组等待执行的进程之间切换可用的cpu。当进程为执行的时候,xv6保存其cpu寄存器,并在下次运行该进程的时候恢复它们。内核将进程标识符或pid与每个进程相关联。

进程可以使用fork系统调用创建一个新进程。fork创建一个成为子进程的新进程,其内存内容和调用进程和父进程完全相同。fork在父节点和子节点中都有返回,父进程中返回子进程的pid,子进程中返回0.

PID是Process ID的缩写,表示进程身份的唯一标识符,每次程序被操作系统加载时都会动态分配

exit系统调用导致调用进程停止执行,释放内存和打开的文件等资源。exit接受一个整型的参数,0表示成功,1表示失败。
wait系统调用返回当前进程exit子进程的pid,并将子进程的退出状态复制到wait的地址。

  • 如果子进程都没有退出,那么等待其中一个退出
  • 如果没有子进程返回-1
  • 如果父进程不关心子进程,返回0

虽然子进程最初与父进程具有相同的内存内容,但父进程和子进程使用不同的内存和寄存器进行执行:更改其中一个变量并不会影响另一个。