0%

操作系统-进程

1 简介

进程是对正在运行程序的一种抽象,或者说是实例,它包括程序计数器、寄存器和变量的当前值。

关于进程的一个重要思想:一个进程是某种类型的一个活动,它有程序、输入、输出以及状态。单个处理器可以被若干个进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务。

2 进程的创建

有4种主要事件会导致进程的创建:

  • 系统初始化
  • 正在运行的程序执行了创建进程的系统调用
  • 用户请求创建一个新的进程
  • 一个批处理作业的初始化

Unix系统,只有一个系统调用用于创建进程:fork。这个系统调用会创建一个与调用进程相同的副本。对于不可写的内存区是共享的;但对于可写的内存是不可以共享的,而是会进程写时复制,即当两者之一想要修改这部分数据时,则这块内存被明确的复制,以保证修改发生在私有区域。

Windows系统,使用CreateProcess函数创建进程,父子进程的地址空间一开始就是不同的。

3 进程的终止

以下条件将引起进程的终止:

  • 正常退出(自愿):执行结束后由编译器执行一个系统调用(Unix系统:exit;Windows:ExitProcess)
  • 出错退出(自愿):程序错误,例如除零
  • 严重错误(非自愿)
  • 被其他进程杀死(非自愿):另外一个进程通过一个系统调用杀死该进程(Unix系统:kill;Windows系统:TerminateProcess)

4 进程的层次结构

  • 对于Unix系统,进程和它的所有子进程以及后裔共同组成进程组;整个系统中,所有进程都属于以init为根的一棵树。

  • 对于Windows系统,没有层次的概念,所有的进程地位相同。

5 进程的状态

三状态:

  • 就绪态
  • 运行态
  • 阻塞态。

状态转换图如下:

1
2
3
4
就绪态 ----> 运行态 ----> 阻塞态
^ <---- |
| |
-------------------------

6 进程的实现

操作系统维护了一张进程表,每个进程占用一个进程表项(也称进程控制块),其中包含了程序计数器、堆栈指针、内存分配状况、所打开文件的转台、账号和调度信息,以及其他在进程由运行态装换到就绪态或阻塞态时必须保存的信息