网站大量收购独家精品文档,联系QQ:2885784924

操作系统OS_lecture-2.ppt

  1. 1、本文档共138页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统OS_lecture-2

操 作 系 统;本章主要讨论进程的基本概念,进程的描述和进程控制,并引入了线程的基本概念。; 80x86 CPU 进程的基本概念 进程控制 进程同步 经典进程同步问题 管程机制 进程通信 线程; 80x86 CPU;(1)8086/8088 CPU芯片引脚图;(2)8086/8088主要引脚信号;(1)基本概念; 8086/8088操作时序;前驱图 ; 进程的基本概念;程序的顺序执行 ;例2:语句执行顺序 S1: a∶=x+y; S2: b∶=a-5; S3: c∶=b+1;;顺序执行的特征: 顺序性 按照程序结构所指定的次序(可能有分支或循环) 封闭性 独占全部资源,计算机的状态只由该程序的控制逻辑所决定。 可再现性 初始条件相同则结果相同。;对于编程人员讲,某个程序能够由计算机执行,需满足两个条件:将程序放入内存并将该程序的地址送入计数器PC。CPU的执行轨迹完全取决于程序计数器PC的内容是什么,即CPU要知道到内存何处去取指令。因此,只要想办法把程序存入内存,记下该程序的起始地址,并把该起始地址存入程序计数器PC,则CPU就可以执行该程序了,这就是单道程序执行的基本原理。;当多个程序顺序执行时,则需要将几个程序都放到内存中,然后将第一个被执行程序的起始地址放入PC中,这样CPU便可执行第一个程序。第一个程序完成后,再把第二个程序的起始地址放入PC中,可以执行第二个程序,……依次顺序下去,直到所有程序都被执行一次。这就是多个程序顺序执行的方式。;程序的并发执行 ; 进程的基本概念;例4:下述四条语句的程序段: S1: a∶=x+2 S2: b∶=y+4 S3: c∶=a+b S4: d∶=c+b;并发执行的特征: 间断性 “走走停停”,一个程序可能走到中途停下来,失去原有的时序关系。 失去封闭性 共享资源,受其他程序的控制逻辑的影响。 如:一个程序写到存储器中的数据可能被另一个程序修改,失去原有的不变特征。 不可再现性 失去封闭性 -失去可再现性;例5:有两个循环程序A和B,它们共享一个变量N。程序A每执行一次时,都要做N∶=N+1操作;程序B每执行一次时, 都要执行Print(N)操作,然后再将N置成“0”。程序A和B以不同的速度运行。 (1) N∶=N+1在Print(N)和N∶=0之前,此时得到的N值分别为? (2) N∶=N+1在Print(N)和N∶=0之后,此时得到的N值分别为? (3) N∶=N+1在Print(N)和N∶=0之间,此时得到的N值分别为?; 程序执行是为了对输入信息进行处理,并得到相应的处理结果。为此程序在并发执行时必须保持封闭性和可再现性。并发执行失去封闭性的原因是共享资源的影响,如何去掉这些影响? 1966年,Bernstein给出了程序并发执行的条件,假设程序P(i)所访问的共享变量的读集和写集分别为R(i)和W(i),则任意两个程序P(i)和P(j)并发的 条件:;1) R(i)∩W(j)=Φ 2) W(i)∩R(j)=Φ 3) W(i)∩W(j)=Φ 前两个条件保证一个程序在两次读操作之间存储器中的数据不会发生变化;第三个条件保证程序的写操作的结果不会丢失。同时满足三个条件,并发执行的程序就可保持封闭性和可再现性。实际中很难检查这三个条件。;多个程序并发执行轮流占有CPU,这种情况下,被中断的程序如果不把中断点的地址保存下来,不把通用寄存器的内容保存下来,下次再轮到它执行时,便不能保证能够从曾被中断的地方继续执行。即便是从曾被中断的地方继续执行,也不能保证其结果是正确的。因为在它被中断期间,已有别的程序在执行,可能已经对通用寄存器的内容进行了变更。;为了保证在平分CPU时间的进程之间能够正确执行,必须在内存中开辟一个区域,将这些通用寄存器的值和被中断地点的地址保存起来,已备再用。对于这个区域,可用一个数据结构描述,它存放了对程序的控制信息,包括:程序的起始地址、程序的断点地址、通用寄存器的内容、程序的当前状态。 把这个数据结构与对应的程序一起,命名为进程,这个记录程序控制信息的数据结构称之为进程控制块。; 例:设有堆栈S,栈指针top,栈中当前存放数据情况如图。现有两个程序getdata(top)和reldata(x),其中getdata(top)是从top所指的栈顶中取出数据;reldata(x)是将数据x存放到堆栈S中。 procedure getdata(top) begin local r; r:=(top); t

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档