涉及内容:进程标识、竞争条件、僵尸进程

这一章描述UNIX内饰如何进行进程控制。程序的执行实例被称为进程(Process)。程序(Program)是一个存储在磁盘上某个目录中的可执行文件。

不废话,直接进入主题。

进程标识

每个进程都有一个非负整型表示的唯一进程ID。

虽然进程ID是唯一的,但是其可以被复用。大多数UNIX系统实现延迟复用算法,使得赋予新建进程的ID不同于最近终止进程所使用的ID。

系统中存在一些专用进程,如:

  • ID为0的进程通常是调度进程,称为交换进程(swapper)。该进程是内核的一部分。
  • ID为1的进程通常是init进程,在自举过程结束时由内核调用。init进程决不会终止。它是一个普通的用户进程,非系统进程,但是它以超级用户特权运行。
  • 某些系统中,ID为2的进程是页守护进程,负责支持虚拟存储器系统的分页操作。

子进程

创建

一个现有的进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程。
fork函数被调用一次,但返回两次:子进程的返回值是0,父进程的返回值是新建子进程的进程ID。
子进程和父进程继续执行fork调用之后的指令。子进程是父进程的副本。父进程和子进程并不共享存储空间部分,但共享正文段。

针对存储空间副本的优化,现在使用了写时复制(Copy-On-Write,COW)技术。

文件共享

TBA

参考文献

  1. 进程和线程有什么区别?
  2. 百度百科:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

本文作者:Tobin
本文地址http://www.thirteenyu.com/2018/04/20/tech-apue-process-control/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!