第二章 进程的描述与控制
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在多进程系统中,可以把进程的相互制约关系按 感知程度分成下标所列的三种类型:
相互感知的程度 交互关系
一个进程对其他进程 的影响
潜在的控制问 题
相互不感知(完 竞争 全不了解其它进 程的存在)
一个进程的操作对 其它进程的结果无 影响
互斥,死锁( 可释放的资源 ),饥饿
互斥,死锁(可释 放的资源),饥饿 ,数据一致性
1. 引起终止的事件 –正常结束 –异常结束 • 越界错误 • 保护错 • 特权指令错 • 非法指令错 • 运行超时 • 等待超时 • 算数运算错 • I/O故障 –外界干预 • 操作员或系统干预 • 父进程请求 • 父进程终止
2、 进程终止时应做的工作 –终止所有子进程 –回收资源 –若本身是运行的,通知调度程序进行CPU的调度
例:共享变量的修改冲突
10111 -5
10111 +10 存10万
DB 取5万
10111 10
服务器程序 process(id,m) { 在DB中取记录id; 帐号id +m; 修改记录送回DB; }
例:共享变量的修改冲突
10111 -5
10111 +10 存10万
process(10111,+10) { 在DB中取记录10111; 帐号10111 +10; 修改记录送回DB; }
•
注意问题:原语执行时间尽可能短;若由于忘记开中断,则 系统无法正常运行。
2.3.2
进程的创建(Creation of Process)
在创建一个进程中,不应有外界干扰,所以系统中一 般都有进程创建原语(如UNIX的newproc( )) 1.进程图(Process Graph) 进程可以创建子进程,个数一般系统都没有限制(只取 决于系统当前的资源),所以会构成树状结构——进程 树。 2. 引起创建进程的事件 用户登录 作业调度 提供服务 应用请求:用户程序自己创建子进程
• 地址空间 – 子进程是父进程的复制(克隆). – 子进程将自己代码装入其中。 Windows NT支持两种 • 例子:UNIX – fork 系统调用:创建一个子(新)进 程。精确复制父进程 – exec系统调用: 在 fork 之后执行,用 来用新的代码替换原父进程的代码。
2.3.3 进程的终止
DB 取5万
10111 10
process(10111,-5) { 在DB中取记录10111; 帐号10111 -5; 修改记录送回DB; }
例:共享变量的修改冲突
10111 -5
10111 +10 存10万
间接感知(双方 通过共享进 一个进程的结果依 都与第三方交互 行协作 赖于从其它进程获 ,如共享资源) 得的信息
直接感知(双方直 接交互,如通信)
通过通信进 一个进程的结果依赖 于从其他进程获得的 行协作
信息
死锁,饥饿
2.临界资源
必须互斥使用的资源。 可以是硬件,也可以是软件(如外设、共享代码段、共享 数据结构),多个进程在对其进行访问时(主要指进行写入 或修改),必须互斥地进行。(有些共享资源可以同时访问, 如只读数据。)
运行态
等待某个 事件发生
就绪态
某个事件已经发生
阻塞态
2、增加创建、与结束的状态
fork() 接纳 进程调度
创建态
就绪态
时间片完
运行态 进程完成
创建态:进程刚创建,但还不能 结束态(Exit):进程已结 运行(一种可能的原因是OS对并 束运行,等待OS做善后工 发进程数的限制);如:分配和 作。 建立PCB表项(可能有数目限 制)、建立资源表格(如打开 文件表)并分配资源,加载程 序并建立地址空间表。
1. 进程的含义 一个具有一定独立功能的程序在一个数据集合上的一 次动态执行过程。 2. 进程的特征 (1)动态性:创建产生,调度执行,撤销消亡。 (2)并发性:多个进程同时存在于内存,宏观上同时 运行。 (3)独立性:独立运行的基本单位。 (4)异步性:各进程各自独立的运行,以不可预知速 度前进。 (5)结构化:代码段,数据段和进程控制块组成。
运行态
等待某个 事件发生
就绪态
某个事件已经发生
阻塞态
2.2.2
1、三个基本状态 void main() { int i; cin>>i; cout<<i;}
阻塞态:由于进程等待某种条 件(如I/O操作或进程同步), 在条件满足之前无法继续执行 进程的基本状态 。该事件发生前即使把处理机 分配给该进程,也无法运行。
2.3.1操作系统内核 出于结构上的考虑,将OS分为若干层次。 内核:程序模块的集合,这些模块通常为与硬件紧密相关的( 如中断处理、设备驱动程序)或执行频率较高的(如处理机调 度)程序模块。它们常驻内存,不会被交换出去。 内核的功能: • 支撑功能:中断处理、时钟管理、原语操作。 • 资源管理功能:进程管理、存储器管理、设备管理等。 原语操作:由若干条指令构成的“原子操作(atomic operation)”过程 ,作为一个整体而不可分割--要么全都 完成,要么全都不做。在执行其间不能被中断。(实现时, 屏蔽所有中断,执行完,开中断)
3、进程的创建的步骤: • 申请空白PCB • 为子进程分配资源 • 初始化进程控制块 资源往往继承父进程 • 将新进程插入就绪队列
进程创建
• 父进程创建子进程,子进程还可创建子进程,从 而形成进程树。 • 父子进程关系: • 资源继承共享 – 父子进程共享所有的资源. – 子进程共享父进程资源的子集. – 父进程和子进程之间不共享资源. • 执行关系: – 父进程和子进程并发执行. – 父进程等待执行结束.
2)在进程进行切换时的处理机及其相关现场。(CPU, 程序状态字,通用寄存器,栈指针) 3)为保证进程再次运行的:进程调度信息、控制信息 3、进程表的组织 以线性表的方式管理 1)顺序存储 2)静态链表,具有相同状态的进程形成一个链 3)索引表,建立若干个索引,如就绪索引,阻塞索引
2.3 进程控制
术语:核心态(系统态、管态、 特权态)和用户态(目态) (supervisor mode monitor mode system mode Privileged mode user mode) 现代的计算机的程序状态字中都至少有一个位,其值为0 或1。这样区分出两种状态。分别称为核心态和用户态。机器 的一部分指令只能在核心态下运行,这样的指令称为特权指 令。
2)并发执行 具有许多新的特征,目的是为了提高资源利用率。 并发执行的特征:
I1 I2 I3 I3
C1
C2
C3
C3
P1
P2
P3
P3
T
特征: – 间断性:表现为“走走停停”,一个程序可能走到 中途停下来,失去原有的时序关系; – 失去封闭性:共享资源,受其它程序的控制逻辑的 影响。如:一个程序写到存储器中的数据可能被另 一个程序修改,失去原有的不变特征。 – 失去可再现性:失去封闭性 ->失去可再现性;外 界环境在程序的两次执行期间发生变化,失去原有 的可重复特征。
阻塞
结束态
3、引入挂起状态 接纳
激活 挂起 进程调度
静止 就绪
挂起 运行态
fork()
创建态
就绪态
时间片完
进程完成 释放 阻塞 目的: (1)调整系统负荷 (2)用户程序调试 结束态
挂起
静止 阻塞
2.2.4进程控制块(PCB, process control block)
1. 作用 – 记录系统管理进程全部信息。 – 一般常驻于内存,由OS维护。 • 每个进程都有唯一的一个PCB。 • 不能由应用程序自身的代码来直接访问。 2. 包含信息 不同的操作系统差别很大,随系统复杂性而异 。 共性的有: 1)进程描述信息 进程标识符(process ID,内部标识符,具有唯一性,通 常是一个整数); 用户标识符(user ID); 进程组标识符(process group)
实现: 计算机提供一条陷阱指令,如在SUN公司的机器中为trap指 令,指令格式样为: 指令码 参数1 参数2 其中,参数1为本次系统调用的调用号,这由编译解决转换 参数2为一个地址,给出了调用参数表的首地址
trap码
1Βιβλιοθήκη Baidu2
文件号 缓冲地址 字节数 0
在trap指令执行后,状态位自动从用户态转到核心态
核心态:可执行所有机器指令。OS运行在核心态,可以访问所有 资源。 用户态:用户进程运行在用户态。无法直接访问硬件资源,不可 直接访问受保护的OS代码,只可以访问OS指定的寄存器和存储区 域及有关资源。
1)现代某些计算机的状态多于一位(80386以后的芯片), 因此能提供更强的保护机制(如2位,形成四种方式,称为保 护环,操作系统在0环,DB等在1环等) 2)用户进程在用户态运行,在需要操作系统为其服务时,将 转到OS,从用户态转到核心态;OS完成任务后回到用户进程, 也就是用户态。
2.3 进程同步
目的:为了改善资源的利用率和提高系 统的吞吐量,引入了进程,但同时失去了程 序的封闭性及可再现性。本章讨论OS保证并 发程序的封闭性和可再现性的机制及策略。
2.3.1 进程同步的基本概念
1.两种形式制约关系(同步形式)
由于多进程在操作系统中的并发执行,诸进程之间存 在相互制约的关系,表现为: 1)间接相互制约关系(进程互斥):由于共享资源所 要求的排它性,进程间要相互竞争,以获得这些资源的 使用权。 2)直接相互制约关系(进程同步):多个进程中发生 的事件存在某种时序关系,必须协同工作、相互配合, 以共同完成一项任务。
unix进程终止过程
• 进程执行完最后一条语句,请求操作系统删 除进程(通过执行exit系统调用)。 – 将子进程运行数据传递给父进程(通过 wait系统调用)。 – 回收的系统资源由操作系统再另行分配 • 父进程也可以终止子进程的执行(通过 abort系统调用)。原因: – 子进程超额使用资源. – 分配给子进程执行的任务不在需要执行. – 父进程退出。 • 如果父进程终止,操作系统不再允许 子进程继续执行。
并发执行的条件:达到封闭性和可再现性(正确性的要 求)。
2.2 进程的描述
2.2.1 进程的定义与特征
进程这个概念是为了描述系统中各并发活动而引入的。 为了满足成千上万个用户的要求,现代操作系统正是围 绕进程这个概念建造的。最早使用进程(process)概念进 行操作系统设计的是美国的麻省理工学院在MULTICS系统 和IBM公司的CTSS/360系统上实现的。只是IBM/360使用 了另一个术语——任务(task),但两者的实际含义是相同 的。
3. 进程与程序的区别 1) 进程是动态的,程序是静态的:程序是有序代码的 集合;进程是程序的执行。 2) 进程是暂时的,程序的永久的:进程是一个状态变 化的过程,程序可长久保存。 3) 进程与程序的组成不同:进程的组成包括程序、数 据和进程控制块(即进程状态信息)。 4) 进程与程序的对应关系:通过多次执行,一个程序 可对应多个进程。
2.2.2
1、三个基本状态
就绪状态:进程已获得除处理 机外的所需资源,等待分配处 理机资源;只要分配到CPU就可 进程的基本状态 执行。在某一时刻,可能有若 干个进程处于该状态
运行态
等待某个 事件发生
就绪态
某个事件已经发生
阻塞态
2.2.2
1、三个基本状态
运行状态:占用处理机资源运 行;处于此状态的进程的数目 小于等于CPU的数目。 进程的基本状态
第2章
进程的描述与控制
为了描述程序在并发执行时对系统资源的 共享,需要一个描述程序执行时动态特征的概 念,这就是进程。
2.1 程序执行特点
1)顺序执行
1
程序顺序执行 有什么不利的 2 因素?
3
特征: – 顺序性:按照程序结构所指定的次序(可能有分支或 循环) – 封闭性:独占全部资源,计算机的状态只由该程序的 控制逻辑所决定,结果不受外界因素的影响 – 可再现性:初始条件相同则结果相同。如:可通过空 指令控制时间关系。
2.3.3 进程的阻塞和唤醒
1.引起阻塞的事件: • 所需资源得不到满足(如申请内存暂时无法满足) • 启动输入/输出后 • 同步关系在等待其它进程的消息 • 无事可做 2. 进程阻塞所做工作(block) 进程自身调用阻塞原语,进入等待队列(是进程 的主动性行为),然后进行处理机调度。 3.进程的唤醒过程(wakeup) 唤醒原因:等待的事件产生。 由阻塞队列转入就绪队列,状态标志改动。