- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 进程管理 §3.1 进程的概念 §3.2 进程的描述 §3.3 进程状态及其转换 §3.4 进程控制 §3.5 进程互斥 §3.6 进程同步 §3.7 进程通信 §3.8 死锁问题 §3.9 线程 本章小结 §3.1 进程的概念 现代操作系统的重要特点 程序的并发执行 系统所拥有的资源被共享 系统的用户随机地使用 它们是互相独立的用户如何使用有限的计算机 系统资源的反映。 采用一个什么样的概念,来描述计算机程序的 执行过程和作为资源分配的基本单位才能充分反映 操作系统的执行并发、资源共享及用户随机的特点 呢?----------进程 3.1.1 程序的并发执行1. 程序的顺序执行 程序是一个在时间上按严格次序前后相继的操作序列,是一个静态的概念。 其执行过程可以描述为: Repeat IR ← M [pc] pc ← pc+1 〈 Execute (instruction in IR)〉 Until CPU halt 1. 程序的顺序执行 程序的顺序执行:一个具有独立功能的程序独占处理机直至最终结束的过程。 程序的顺序执行具有如下特点: (1) 顺序性:程序顺序执行时,其执行过程可看作一系列严格按程序规定的状态转移过程。 (2) 封闭性:程序执行得到的最终结果由给定的初始条件决定,不受外界因素的影响。 (3) 可再现性:只要输入的初始条件相同,则无论何时重复执行该程序都会得到相同的结果。 2. 多道程序系统中程序执行环境的变化 三个特点: 独立性:每道程序都是逻辑上独立的,它们之间不存在逻辑上的制约关系。 随机性:在多道程序环境下,特别是在多用户环境下,程序和数据的输入与执行开始时间都是随机的。 资源共享:资源共享将导致对进程执行速度的制约。 3. 程序的并发执行 什么是程序的并发执行 程序的并发执行可进一步分为两种: 第一种是多道程序系统的程序执行环境变化所引起的多道程序的并发执行。 第二种并发执行是在某道程序的几个程序段中(例如几个程序),包含着一部分可以同时执行或顺序颠倒执行的代码。 例如语句: read (a) ; read (b) ; 程序的并发执行 一组在逻辑上互相独立的程序或程序段在执行过程中,其执行时间在客观上互相重叠,即一个程序段的执行尚未结束,另一个程序段的执行已经开始的执行方式。 程序的并行执行 一组程序按独立的、异步的速度执行。并行执行不等于时间上的重叠。 3. 程序的并发执行-----并发执行的特征 间断(异步)性:走走停停,一个程序可能走到中途停下来,失去原有的时序关系 失去封闭性:共享资源,受其他程序的控制逻辑的影响。如:一个程序写到存储器中的数据可能被另一个程序修改,失去原有的不变特征 失去可再现性:失去封闭性 -失去可再现性;外界环境在程序的两次执行期间发生变化,失去原有的可重复特征 并发执行过程描述为: S0 Cobegin P1;P2;... Pn Coend S0,Sn分别表示并发程序段P1,P2,…,Pn开始执行前和并发执行结束后的语句。 P1,P2,…,Pn:也可以由同一程序段中的不同语句组成。 1966年Bernstein 提出了两相邻语句S1,S2可以并发执行的条件。 并发执行的条件: 将程序中任一语句Si划分为两个变量的集合R(Si 和W(Si)。其中 R(Si)={a1 a2 … am},aj(j=1,…,m) 是语句Si在执行期间必须对其进行读的变量; W(Si)={b1 b2 … bn},bj(j=1,…,n) 是语句Si在执行期间必须对其进行修改、访问的变量; Bernstein并发执行的条件: 如果对于语句S1和S2,有 ① R(S1)∩ W(S2)={∮}, ② W(S1)∩ R(S2)={∮}, ③ W(S1)∩ W(S2)={∮} 同时成立, 则语句S1和S2是可以并发执行的。 程序的并发执行所带来的影响 如果并发执行的程序段不按照特定的规则和方法进行资源共享和竞争,则其执行结果将不可避免地失去封闭性和可再现性。 例如: 图3.1 堆栈的取数和存数过程 例:设有堆栈S,栈指针top,栈中存放内存中相应数据块地址(如图3.1(a))设有两个程序段getaddr(top)和reladdr(blk): procedure getaddr(top) begin local r r ←(top) top ← top-1 return(r) end procedure reladdr(blk) beg
文档评论(0)