- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 进程管理
引言:
在所有采用微内核结构的操作系统中,都涉及到了“进程”的概念。“进程”犹如操作系统的灵魂伴随操作系统始终,对进程进行控制、调度、完成进程间通信,以及解决进程死锁问题等就构成了进程管理的主要内容。
进程还是操作系统中独立运行的基本单位,只有深刻理解了进程的概念,才能够更好地理解操作系统其他各部分的功能和工作流程。
§3.1 为什么要引入进程的概念
§3.1.1 从顺序程序设计谈起
(1)什么是顺序程序
在计算机上运行的程序是众多指令有序的集合,每一个程序只能完成预先规定的任务和操作。
在早期的计算机系统中,只有单道程序执行的功能,也就是说,每次只允许一道程序独立运行。在这个程序的运行过程中,将占用整个计算机系统资源,而且系统将按照程序步骤顺序执行,其他程序只能处于等待状态。因此,从宏观上看,各个程序是以线性状态排列并顺序执行的。
(2)顺序程序的特征
a. 顺序性
CPU单步顺序地执行程序,无论程序下一步操作是否需要等待上一步操作的结果都必须等待上一步操作结束后才能开始,无法实现并发执行。
b. 封闭性
资源独占:只有正在执行的程序本身所规定的动作才能改变当前资源状态。
结果封闭:一旦程序开始运行后,其输出结果就不受外因的干扰。
c. 可再现性
程序不受外部条件的影响,只要系统资源充足,在给定相同初始条件的情况下,无论程序执行多少次,总能得到相同的执行结果。
§3.1.2 程序的并发执行和资源共享
由于单道程序执行过程中浪费了很多系统资源,因此,人们设法在只有一个处理器的系统中让多个程序同时执行。这里应注意并发执行和多个程序在多个处理器环境下的并行执行。
(1)程序并发执行的定义
多道程序在计算机中交替执行,当一道程序不占用处理器时,另一道程序马上接管CPU处理权,大大提高了处理器的使用率。
尽管在每一时刻或者说某一时刻CPU中仍然只有一道程序在执行,但是由于主存中同时存放了多道程序,在同一时间间隔内,这些程序可以交替的进行,从而提高CPU的使用率。
(2)并发执行的软硬件支持
软件方面:
a. 要求有具备并发特征的源程序
b. 要有能够将源程序编译成可并发执行程序的编译器
c. 要有支持并发执行的数据结构,如树形结构
硬件方面:要有互不干扰的存储空间,能够提供每道程序使用的私有数据结构和空间,以解决多个程序争用存储空间和程序运行中的安全性问题。
(3)举例
内存中同时驻留有两个用户程序J1和J2,并假定J1占用CPU的优先级比J2高,它们在运行过程中需要用到设备D1和D2。J1、J2、D1、D2以及CPU的系统供求状况如下图所示:
从图中可以看出,两个用户程序并非顺序执行的,而是出现了交叉执行的情况。从上图可以列出各程序使用系统资源时间段的表格,如下所示:
从以上表格可以得出如下结论:
a. 因为J1占用CPU的优先级比J2高,所以J1使用CPU的时刻从B点开始,J2使用CPU的时刻从D点开始。
b. CPU资源是比其他设备更重要的资源,因而出现了分段占用的情况。
c. 各道程序在顺序执行的基础上形成了一种重叠的运行方式,虽然每道程序的执行时间不变,但执行的总时间缩短了。
d. 产生了资源共享的特征,如CPU资源从原先的由某道程序独占变为多道程序轮流使用。
§3.1.3 程序并发执行的特性
(1)系统封闭性消失
在单道程序环境中,由一个程序独占系统资源的局面打破了,资源状态由多个程序共同决定。尤其是当多个程序或进程共享某个数据或变量时,就会因为程序执行的先后顺序不同而造成输出结果的不同。
举例:
设有观察者和报告者并行工作。在一条单向行驶的公路上经常有卡车通过。观察者不断观察并对通过的卡车计数。报告者定时地将观察者的计数值打印出来,然后将计数器重新清“0”。
有如下程序,其中Cobegin和Coend表示它们之间的程序可以并发执行。
begin
count∶integer;
count∶=0;
cobegin
observer
begin
L1;……
observe next car;
count∶=count+1;
go to L1
end
reporter
begin
L2: ……
print count;
count∶=0
go to l2
end
coend
end
由于观察者和报告者各自独立地并行工作, count∶=count+1 的操作,既可以在报告者的print count和count∶=0 操作之前,也可以在其后,还可以在print count和count∶=0 之间。即可能出现以下三种执行序列:
(1) count∶=count+1
文档评论(0)