进程
进程是操作系统的核心
进程由以下三部分组成:
- 一个可执行的程序。
- 该程序所需的相关数据(变量,工作空间,缓冲区)
- 该程序的执行上下文(context)。
上下文是必不可少的。所有操作系统用来管理进程和处理器执行进程的信息都包括在执行上下文中。这个上下文包括寄存器的内容,进程的优先级以及进程是否等待I/O事件的完成。
操作系统设计和层次结构
层名字 | 对象 |
---|---|
13 外壳 | 用户程序设计环境 |
12 用户进程 | 用户进程 |
11 目录 | 目录 |
10 设备 | 外设,打印机,显示器等 |
9 文件系统 | 文件 |
8 通信 | 管道 |
7 虚拟存储器 | 段,页 |
6 局部辅存 | 数据块,设备通道 |
5 进程原语 | 进程原语,信号量,就绪队列 |
4 中断 | 中断处理程序 |
3 过程 | 过程,调用栈,显示 |
2 指令集 | 演算栈,微程序解释器 |
1 电子线路 | 寄存器,逻辑门,总线等 |
第一层:由电路组成,其中的对象是寄存器,村粗单元和逻辑门,对这些对象的操作是一些动作如清除寄存器或读取内存单元等。
第二层:是处理器的指令集,这一层的操作是那些机器语言指令集所允许的一些指令,入ADD,SUBTRACT,LOAD,STORE等。
第三层:这一层加入过程概念,包括调用返回操作。
第四层:中断时处理器保存当前内容并调用中断处理程序。
这四层并不是操作系统的一部分,但他们组成了处理器硬件,然而,操作系统中的一些元素,如中断处理程序,已在这一层出现。
第五层:进程作为程序的执行在本层出现。w为了支持多进程,对操作系统而言基本的要求包括要有挂起和重新执行进程的能力。这就要求保存寄存器和值以便从一个进程切换到另一个进程。
第六层:处理计算机的辅存,这一层的主要功能有读/写扇区,进行定位,以及传输数据块。第六层依靠第五层的调度操作。
第七层:为进程创建逻辑空间。真一层将虚拟空间组织成块,并在主,辅存之间调度,当一个所需块不在主存中时,本层将逻辑地要求第六层传输。
第八层:处理进程间的信息和消息通信。其最有利的工具之一就是管道(pipe)。管道是进程间数据流的一个逻辑通道,它也可用来将外部设备和文件同进程连起来。
第九层:支持长期存储文件。
第十层:利用标准接口,提供对外部设备的访问。
第十一层:负责保存系统资源和对象的外部和内部定义间的联系。外部定义是应用程序和用户可以使用的名字。内部定义是能够被操作系统底层部分用来控制一个对象的地址或其他指示符。
第十二层:这一层支持所有管理进程所必须的信息,这包括进程虚拟地址空间,与该进程由相互作用的进程和对象表列,创建该进程时传递的参数等。
第十三层:在操作系统同用户间提供一个界面。他被成为“外壳(shell)”,这是因为他将用户和操作系统具体实现分开并使操作系统就像一个功能的集合。这个外壳接受用户命令,解释后根据需要创建并控制进程。
进程状态
有2种进程状态模型:
- 每个进程只有2种状态:运行,非运行。
- 有一个进程队列,操作系统从这个对列中分派任务。
进程的产生和终止
当有一个新进程要加入当钱进程队列时,操作系统产生一个控制进程的数据结构,并且为该进程分配地址空间,这样,新进程就产生了。
通常有4种事件会导致产生新的进程:
- 新批处理任务
- 交互式登录
- OS产生以提供服务
- 由已存在进程产生。
进程的终止:
- 正常结束
- 超时限制
- 内存不足
- 超界(进程试图对不允许接近的区域进行操作)
- 保护错误(例如对只读文件进行写操作)
- 算术错误(例如除以零)
- 超越时限(进程等待时间超过了某事件发生的制定时间)
- I/O失败
- 非法指令
- 特权指令(进程试图执行一个保留给OS使用的指令)
- 错误使用数据(数据类型出错或数据为初始化)
- 操作员或OS干预
- 父进程终止
- 父进程需要(父进程拥有终止所有子孙进程的权利)
现代操作系统中最基本的组件就是进程。操作系统的重要功能就是创建,管理和终止进程。当进程处于活动状态时,操作系统必须保证每一进程都分到处理器执行时间,还要协调他们的活动,管理冲突请求,并分配系统资源给这些进程。要履行其进程管理职能,操作系统还必须维持对每一进程的描述。每个进程是由一个进程映像来表示的,它包括进程执行的地址空间和一个进程控制块。后者包含了操作系统管理该进程所需的全部信息,包括其目前的状态,分配给他的资源,优先级及其他有关数据。
在进程生命周期中,他会在很多状态之间移动。这些状态中最重要的是就绪,运行和阻塞。就绪进程是指目前并未执行但一旦得到操作系统调度就准备运行的进程。运行进程是指当前正被处理器执行的进程。在多处理其系统中,可有不止一个进程处于该状态。阻塞进程是等待某件事完成(比如I/O操作)的进程。
运行进程可能被中断或执行操作系统的访管而终止,所谓中断是指发生在进程之外并可被处理器所识别的事件。在这两种情况下,处理器都将执行切换操作,将控制转交给操作系统例程。在完成所需工作后,曹组系统可能恢复被终止的进程或切换到另一进程。
一些操作系统区分了进程和线程的概念,前者与资源的拥有有关,而后者与程序的执行有关。