技术 · 阅读记录

操作系统之进程原理篇

操作系统对 CPU 进行管理的重要手段就是进程模型。同时,进程管理、内存管理和文件管理是操作 系统的三大核心功能。

一、进程

存在于计算机内存中运行着的程序被称为进程。

人们发明进程是为了多道编程,而进行多道编程的目的则是提高计算机 CPU 的效率,或者说系统的 吞吐量。此外,还会使响应时间得到改善。

进程的产生与消亡

进程产生:

  • 系统初始化
  • 执行进程创立程序
  • 用户请求创立新进程

进程消亡的情况:

  • 进程运行完成而退出
  • 进程因错误而自行退出
  • 进程被其他进程所终止
  • 进程因异常而被强行终结

进程的层次结构

一个进程在执行过程中可以通过系统调用所创建新的进程。这个新创建的进程就被称为子进程,而 创建子进程的进程被称为父进程。

UNIX 称这个进程树里面的所有进程为一个进程组,进程组里面的进程分布在不同的层次上,从而形成 一个层次架构。

Windows 没有进程组的概念,而是所有进程均地位平等。

进程的状态

  • 执行
  • 阻塞
  • 就绪

进程与地址空间

进程空间也被称为地址空间,简单来说,地址空间就是进程要用的所有资源。

进程与地址空间的研究的主要内容是如何让多个进程空间共享一个物理内存。具体来说,就是高效、 安全地让多有进程共享这片物理内存。

进程管理

操作系统要管理进程就要维护关于进程的一些信息。当进程产生时,操作系统也需要为其创建记录。 操作系统用于维护进程记录的结构就是进程表或进程控制块(Process Control Block,PCB)。

一般来说,维护的资料信息应当包括寄存器、程序计数器、状态字、栈指针、优先级、进程 ID、 信号、创建时间、所消耗 CPU 时间、当前持有的各种句柄等。

而采纳的数据结构主要是线程表、链表和结构(struct),当然也可能使用树和图(网络)结构。

进程表保持在操作系统所在的内核空间里。

创建进程的步骤:

  • 分配进程控制块
  • 初始化机器寄存器
  • 初始化页表
  • 将程序代码从磁盘读进内存
  • 将处理器状态设置为“用户态”
  • 跳转到程序的起始地址(设置程序计数器)

UNIX 将进程创建分为两个步骤:

  • fork,创建一个与自己完全一样的新进程
  • exec,将新的进程的地址空间用另一个程序的内容覆盖。

Windows 使用一个系统调用就可以完成进程的创建。这个系统调用就是 CreateProcess。在调用该 函数时我们把欲执行的程序名称作为参数传过来,创建新的页表,而不需要复制别的进程。

进程管理的最大问题就是资源分配。公平和效率就成为了进程管理中永恒的主题。

二、进程调度

三、进程通信

参考

1 操作系统之哲学原理(第2版) https://book.douban.com/subject/10528447/