理解“进程”(process)

进程,即process,到底是什么?

OSTEPv1.01第4.1节对其定义如下:

The abstraction provided by the OS of a running program is something we will call a process.

Abstraction在计算机科学和程序开发中是一个相当重要的概念和工具,它表示对于具体细节的忽略和封装。说进程是OS提供的abstraction,说明所有的(至少是现代的)操作系统,不管其底层实现如何,都有这么个相同的概念,用以代表一个正在运行的程序。

那么在这个共有的“进程”概念下,包括了哪些相通的组成部分呢?换句话说,不管在什么操作系统,任一时刻,某个进程都有一个状态,那么这个状态包括哪些内容呢?

  • 内存地址空间:该进程此刻所能访问的内存区域,以及该区域内的大小、具体数据等
  • 寄存器:包括程序计数器(program counter, PC)
  • IO信息:比如说该进程此刻打开的文件、socket等
  • 运行状态:该进程此刻是否正在CPU上运行,是否在等待IO事件等等
  • 其他信息,如该进程当前栈帧的位置

在每个OS的具体实现层面,就必须

  1. 为上面这些数据设计相应的数据结构,除此之外OS还会定义其它的用于管理进程的数据结构
  2. 开发操作这些数据结构及管理进程的逻辑(函数),这部分属于OS的内部逻辑
  3. 提供OS用户使用的操作进程的API(system calls)

你可能感兴趣的:(理解“进程”(process))