进程管理笔记一、进程的概念及其产生的背景
2018-03-17 11:32
357 查看
[align=center]进程管理笔记一、进程的概念及其产生的背景[/align]
引言:计算机的根本特征是其本身为人造学科。进程从根本上说,是操作系统对CPU进行的抽象和装扮。关于进程的系列笔记,会由进程产生背景讲起,本篇是我们故事的起源。进程管理笔记一、进程的概念及其产生的背景
一、进程产生的背景
1.1、单道处理系统—效率低下
1.2、改进策略—多道编程
1.3、多道编程的好处
1.4、I/O操作脱离CPU如何实现?
二、进程相关概念
2.1、进程—逻辑并发
2.2、进程的位置
2.3、进程的属性
2.4、进程的产生与消亡
2.5、进程的状态
一、进程产生的背景
1.1、单道处理系统—效率低下
在单道处理系统下,CPU和I/O设备的运行是串行的,即在程序进行输入输出时,CPU只能等待。CPU只能不断询问I/O操作是否完成,因而不能执行别的程序。由于I/O设备的运行速度相对于CPU来说实在太慢,这种让高速设备等待低速设备的状况效率较低。1.2、改进策略—多道编程
人们想,能否将CPU运行和I/O设备的运行重叠起来而改善整个系统的效率呢?基于此想法,人们想起将多个程序同时加载到计算机里面,并发执行。这些同时存在于计算机内存中的程序就称为进程。进程让每个用户感觉到自己独占CPU,因此进程就是为了在CPU上实现多道编程而出现的概念,如下图1所示。<cc8c
/p>
[align=center]图1、进程让每个用户感觉到自己独占CPU[/align]
1.3、多道编程的好处
1)、提高CPU利用率人们发明进程是为了支持多道编程,进行多道编程的目的则是提高计算机CPU的效率,或者说系统的吞吐量。
实例分析:假定一个进程有20%的时间使用CPU进行计算,另外80%的时间来进行I/O,如果使用单道编程,CPU的利用率为20%,但如果是同时运行两个这样的进程,则CPU的利用率将提高至36%(CPU仅在两个进程同时进行I/O时才处于闲置状态,因此利用率为1 - 0.8 * 0.8 = 0.36%)。
随着进程数量的增加,CPU的利用率会逐步提升,但提升的幅度则逐步降低,直到某个临界点时为止,这个临界点为多道编程的极限。之后CPU利用率的提升空间就很小了,进行进程切换带来的开销则变得非常明显。
[align=center]图2、多道编程度数与CPU利用率的关系[/align]
2)、改善响应时间—提升用户体验
多道编程的第二个好处是改善系统的响应时间,即用户等待时间。毕竟,对于大多数用户来说,关心的是计算机的响应速度。下图为多道编程时事件的发生顺序,其为逻辑并发。
[align=center]图3、多道编程时事件的发生顺序[/align]
实例分析:我们可以举一个生活中例子,假定我们去银行取号办理业务,1号客户在阐述清楚需要办理的业务后,就在柜台前面填写单子,耗时很长很长,在这个阶段,我们只有排队等待。如果可以让出柜台,那其他人排队等待时间会明显缩短。同理,多道编程,当进程处于I/O时,可以让出CPU处理其他进程,会缩短用户等待的时间,提升用户体验。
1.4、I/O操作脱离CPU如何实现?
这是关于并发实现的问题,简单回答是I/O占用的CPU资源非常少,大部分工作是派给DMA完成的。其I/O过程可以简化如下:CPU计算文件地址 ->委托DMA读取文件 ->DMA接管总线 ->CPU进程A阻塞,挂起 ->CPU切换到进程B ->DMA读完文件后通知CPU(一个中断异常)->CPU切换回A进程操作文件。正是这样派发任务,并发系统才彰显出它的意义,假定原先读取文件CPU需要等待50ns,现在尽管两次切换上下文各耗时5ns,CPU还是赚取了40ns的执行时间。
二、进程相关概念
人们发明进程是为了支持多道编程,进而提高CPU的利用率,改善用户体验。在深入剖析fork函数、学习进程通信方式等之前,介绍进程逻辑并发概念、进程管理涉及的位置及属性信息、进程的产生及消亡过程、进程的状态转换等。2.1、进程—逻辑并发
进程,顾名思义就是进展中的程序,一个程序加载到内存后就变为进程,即进程 = 程序 + 执行。下图为不同视角下的进程模型。因为CPU在任意时刻执行的进程只能有一个,概括讲,进程实际是逻辑并发。[align=center]图4、进程模型的三个视角[/align]
进程是操作系统对CPU进行的抽象和装扮。这种抽象同样需要一个物理基础,内存管理让多个进程共享同一个物理内存而不发生冲突。进程调度将CPU在多个进程间切换。
2.2、进程的位置
我们知道进程最少必须包括一个或一组被执行的程序,与这些程序相关联的是局部变量、全局变量和已经定义常量的数据单元。因此,一个进程至少包括足够的内存空间,以保存该进程的程序和数据;此外程序的执行通常涉及用于跟踪过程调用和过程见参数传递的栈。最后,与每个进程相关联的还有操作系统用于控制进程属性的进程控制块(PCB)。程序、数据、栈和属性的集合称为进程映像(Process image)。其如下图5所示:[align=center]图5、进程映像中的典型元素[/align]
进程映像的位置依赖于使用的内存管理方案,现代操作系统多采用段页式划分的方式 。为执行该程序,整个进程映像必须载入内存或至少载入虚拟内存中。(在任意时刻,进程映像的一部分可以在内存中,剩余部分可以在外存中),因此操作系统维护的进程表必须表明每个进程映像中每页的位置。
[align=center]图6、操作系统控制表反映出系统资源使用情况[/align]
尽管图6给出了四种不同的表,但是这些表必须以某种方式链接起来或者交叉使用。内存、I/O和文件是代表进程而被管理的,因此进程表中必须有对这些表的直接或间接引用。文件表中的文件可以通过I/O设备访问,有时他们也位于内存或者虚拟内存中,这些表必须可以被操作系统访问到,因此他们受制于内存管理。
2.3、进程的属性
与一个社会管理人的过程类似,操作系统要管理进程就要维护关于进程的属性信息。当一个进程产生时,操作系统也为其创建记录。操作系统用于维护进程记录信息的结构就是进程控制块(Process Control Block, PCB),进程控制块中存放的信息即为有关该进程的资料。进程控制块包括的信息:可以想象一个人的出生对于一个社会意味着什么。在一个人出生后,医院需要在几天内为其建立记录,该记录包括诸如姓名、性别、体重、身高、父母、何时何地出生、健康状态等,然后该记录用以登记户口,办理身份证,便于政府职能部门对其进行管理。
[align=center]图7、进程控制块中的典型元素[/align]
可以简单把进程控制块信息分为三类,即进程标识信息、进程状态信息、进程控制信息。
- 1、进程标识信息:每个进程分配了一个唯一的数字标识符(Process Indetification, 进程标识符PID),其可以简单的表示为主进程表的一个索引,使得操作系统可以根据进程标识符定位相应的表。用户标识符用于表明拥有该进程的用户。
- 2、处理器状态信息:包括处理器寄存器的内容,当一个进程正在运行时,其信息保存在寄存器中,当进程被中断时,所有的寄存器信息必须保存起来,使得进程恢复执行时这些信息可以恢复。
- 3、进程控制信息:这是操作系统控制和协调各种活动进程所需要的额外信息。
进程控制块保持在操作系统所在的内核空间里,如下图8所示:
[align=center]图8、进程表存放在操作系统所在的内核空间里面[/align]
2.4、进程的产生与消亡
1)、进程的产生:- 1、系统初始化时,产生服务进程,使得新的进程和用户程序的执行成为可能。
- 2、 系统初始化后,用户双击可执行文件或者启动程序,系统为其创建进程
- 3、用户可以在程序里面调用fork生成新的进程
操作系统创建进程的步骤如下:
1、分配进程控制块PCB(Process Control Block)
2、初始化机器寄存器
3、初始化页表
4、将程序代码从磁盘读进内存
5、将处理器状态设置为“用户态”
6、跳转到程序的起始地址(设置程序计数器)
2)、进程的消亡:
- 寿终:进程运行完成而退出
- 自杀:进程因错误而自行退出
- 他杀:进程被其他进程所终止
- 处决:进程因异常而被强行终结
2.5、进程的状态
可简单将进程分为三种状态:执行、阻塞和就绪。其状态转换如下图5所示,我们在下篇笔记将介绍进程的调度算法。[align=center]图9、进程的三个典型状态[/align]
小结:本文介绍了多道编程下进程产生的背景、进程逻辑并发、进程位置、进程属性、进程产生于消亡等概念。
参考资料:
1、《操作系统的哲学》 邹恒明 著
2、《操作系统 - 精髓与设计原理 第七版》William Stallings著
纠错与建议
邮箱:db_hebut@163.com
相关文章推荐
- 进程管理笔记二、进程调度概念及基本策略
- 韩顺平Linux笔记(十二)——进程的概念和管理
- UNIX环境编程学习笔记(17)——进程管理之进程的几个基本概念
- UNIX环境编程学习笔记(17)——进程管理之进程的几个基本概念
- 计算机操作系统笔记(2)--进程管理之进程的基本概念
- Linux 学习笔记_8_进程管理_1_进程的概念
- Perl语言入门笔记 第十六章 进程管理
- Android(java)学习笔记160:Framework运行环境之 Android进程产生过程
- 【项目管理】 PMBOK 基础概念 (引论 PMBOK 笔记)
- 操作系统学习笔记-进程的概念
- 【鸟哥的linux私房菜-学习笔记】进程管理
- 【归纳总结】Unix/linux下的进程管理(二):创建进程的函数及其应用、对比
- java学习笔记之环境的配置及其相关概念的解释
- UNIX环境编程学习笔记(19)——进程管理之fork 函数的深入学习
- linux笔记06(进程管理)
- Linux基础(13)/Linux进程概念&管理(pending)
- 10、进程管理,case和函数 学习笔记
- Linux学习笔记:进程管理和任务计划
- linux kernel 学习笔记二 进程管理
- 【Java学习-J.160406.0.6】笔记5-Linux基础-linux进程管理