Modern Operating Systems chapter 2 notes processes

6月底final,还有很多课内的知识没总结,总之,加快脚步复习总结吧。

以下是Modern Operating Systems一书chapter2 processes and threads的笔记。

The Process Model

multiprogramming

What is process? Executing program is called process.

What is multiprogramming? Program rapidly switching back and forth is called multiprogramming.

timing

虽然单CPU使用multiprogramming的技术也能造成并行的错觉,但是这样的multiprogramming不能保证某个程序一定能在规定时间内完成,所以如果某个程序对于timing有要求的话, 使用multiprogramming可能会造成不良的后果,

When a process has critical real-time requirements like this, that is, particular events must occur within a specified number of milliseconds, special measures must be taken to ensure that they do occur.

process and program

What is the difference between process and program?

简单来说,process是running的程序。书上说这两者的关系是subtle的,program其实可以理解成代码,process就可以理解成正在执行这段代码的东西。
并且,一个程序可以有几个进程。

Process Creation

一共有四种情况会引起Process的创建:

  1. System initialization. 系统初始化的时候创建一些daemons。
  2. Execution of a process-creation system call by a running process. 一些进程在完成任务时创建其它进程来辅助其完成工作。
  3. A user request to create a new process. 用户显式的创建进程。
  4. Initiation of a batch job. 批处理工作时创建进程。

UNIX和Windows在创建进程的时候有什么区别?

  1. 在UNIX中,使用指令fork创建进程,在windows中使用CreateProcess创建进程。
  2. 无论在UNIX还是在windows中,都需要system call来创建进程。并且父进程和子进程都拥有各自的address space。但是UNIX的更复杂,两个新创建的进程可能会共享空间,而在Windows中,进程的address space从一开始就肯定不同。

Process Termination

进程的结束也有四种情况:

  1. Normal exit (voluntary).
  2. Error exit (voluntary).
  3. Fatal error (involuntary).
  4. Killed by another process (involuntary).

这里就不细讲了,其中UNIX杀死进程用的是kill,Windows用的是TerminateProcess。(第4种情况) 自然结束进程分别用的是exitExitProcess

Process Hierarchies

在Windows中不存在process hierarchies的概念,所有的进程都是平等的,父进程会有一个叫handle的东西控制子进程,也可以把handle转交给其它进程让其代控制子进程。
而在UNIX中不存在权限转交这样的操作,并且有process hierarchies这样的概念,就比如一个系统的所有进程的root process都应该是init(第一个创建的进程)。

In UNIX, a process and all of its children and further descendants together form a process group.

Process State

0

如图所示,进程一共有3种状态,4种转化。

3种状态的解释:

  1. Running (actually using the CPU at that instant).
  2. Ready (runnable; temporarily stopped to let another process run).
  3. Blocked (unable to run until some external event happens).

4种transitions的解释:

  1. 从Running到Blocked,在UNIX中,调用waitpause等会出现这种情况,这是因为某些进程需要等待I/O或者其它进程的结束,就从running变成了blocked。
  2. 从Running到Ready,当系统进行scheduling的时候决定运行其它进程就会出现这种情况。
  3. 从Ready到Running,进程准备完毕了,就等系统scheduling运行此进程了。
  4. 从Blocked到Ready, I/O或其它因素准备完成了。

还有2种transistions呢?

  1. 从Blocked到Running, 在某种情况是可能发生的,在进程准备就绪时刚好系统决定运行此进程,Blocked转换成ready又马上转换成running。
  2. 从Ready到Blocked,是不可能的,A ready process cannot do I/O or anything else that might block it. Only a running process can block. 只有运行的程序能够blocked。

Implemetation of Process

没什么好说的,这里提到了一个process tableinterrupt vector的概念,稍微留点印象就行。 大概的意思就是说,当中断发生时,需要保存此时process的状态,在下次重新运行此process时要使其状态和中断发生时一模一样。

Modeling Multiprogramming

这里就提到了一个模型,这个模型假设系统中存在n个process,每个process wait for I/O的概率是p,那么CPU的utilization就是1-p^n。需要注意,此模型是近似的,不是精确模型。(感觉也没什么用