操作系统原理ppt课件.ppt

操作系统原理ppt课件.ppt

ID:56948723

大小:398.00 KB

页数:92页

时间:2020-07-21

操作系统原理ppt课件.ppt_第1页
操作系统原理ppt课件.ppt_第2页
操作系统原理ppt课件.ppt_第3页
操作系统原理ppt课件.ppt_第4页
操作系统原理ppt课件.ppt_第5页
资源描述:

《操作系统原理ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、2.4进程互斥和同步2.4.1互斥算法2.4.2信号量(semaphore)2.4.3经典进程同步问题2.4.2管程(monitor)2.4.5进程互斥和同步举例返回在多道程序系统中,由于资源共享和进程合作,使各进程之间存在两种类型的制约关系:(1)间接制约关系(互斥)(2)直接制约关系(同步)所谓进程同步指多个相关进程在执行次序上的协调,用于保证这种关系的相应机制称为进程同步机制2.4.1互斥算法2.4.1.1临界资源2.4.1.2临界区的访问过程2.4.1.3同步机制应遵循的准则2.4.1.2进程互斥的软件方法2.4.1.5进程互斥的硬件方法2.4.1.1临界资源进程间资源访问冲

2、突共享变量的修改冲突操作顺序冲突进程间的制约关系间接制约:进行竞争--独占分配到的部分或全部共享资源,“互斥”直接制约:进行协作--等待来自其他进程的信息,“同步”硬件或软件(如外设、共享代码段、共享数据结构),多个进程在对其进行访问时(关键是进行写入或修改),必须互斥地进行--有些共享资源可以同时访问,如只读数据多道程序环境->进程之间存在资源共享,进程的运行时间受影响共享变量的修改冲突操作顺序冲突有3个进程:get,copy和put,它们对4个存储区域f、s、t和g进行操作。有6种可能的操作顺序,只有一种结果是正确的。进程的交互关系:可以按照相互感知的程度来分类互斥,指多个进程不

3、能同时使用同一个资源;死锁,指多个进程互不相让,都得不到足够的资源;饥饿,指一个进程一直得不到资源(其他进程可能轮流占用资源)2.4.1.2临界区的访问过程临界区临界区(criticalsection):进程中访问临界资源的一段代码。进入区(entrysection):在进入临界区之前,检查可否进入临界区的一段代码。如果可以进入临界区,通常设置相应"正在访问临界区"标志退出区(exitsection):用于将"正在访问临界区"标志清除。剩余区(remaindersection):代码中的其余部分。2.4.1.3同步机制应遵循的准则空闲则入:其他进程均不处于临界区;忙则等待:已有进程处

4、于其临界区;有限等待:等待进入临界区的进程不能"死等";让权等待:不能进入临界区的进程,应释放CPU(如转换到阻塞状态)2.4.1.4进程互斥的硬件方法在许多机器中,都提供了专门的硬件指令TestandSet,它可以用做解决临界区问题。Test-and-Set指令该指令读出标志后设置为TRUEbooleanTS(varlockboolean):booleanbegints:=lock;lock=TRUE;endlock表示资源的两种状态:TRUE表示正被占用,FALSE表示空闲利用TS实现进程互斥利用TS实现进程互斥:每个临界资源设置一个公共布尔变量lock,初值为FALSE在进入区

5、利用TS进行检查:有进程在临界区时,重复检查;直到其它进程退出时,检查通过;WhileTS(Lock)Doskip;Criticalsection;Lock:=false;Remaindersection;Untilfalserepeat硬件方法的优点适用于任意数目的进程,在单处理器或多处理器上简单,容易验证其正确性可以支持进程内存在多个临界区,只需为每个临界区设立一个布尔变量硬件方法的缺点等待要耗费CPU时间,不能实现"让权等待"可能"饥饿":从等待进程中随机选择一个进入临界区,有的进程可能一直选不上可能死锁2.4.2信号量(semaphore)2.2.2.1信号量和P、V原语2.

6、2.2.2信号量集前面的互斥算法是平等进程间的一种协商机制,OS可从进程管理者的角度来处理互斥的问题,信号量就是OS提供的管理公有资源的有效手段。信号量代表可用资源实体的数量。2.4.2.1信号量和P、V原语1965年,由荷兰学者Dijkstra提出是一种卓有成效的进程同步机制。每个信号量s除一个整数值s.value(计数)外,还有一个进程等待队列s.queue,其中是阻塞在该信号量的各个进程的标识信号量只能通过初始化和两个标准的原语来访问--作为OS核心代码执行,不受进程调度的打断初始化指定一个非负整数值,表示空闲资源总数(又称为"资源信号量")--若为非负值表示当前的空闲资源数,

7、若为负值其绝对值表示当前等待临界区的进程数1.P原语wait(s)Procedurewait(s)var:semaphore;begins.value:=s.value-1;//表示申请一个资源;if(s.value<0)then//表示没有空闲资源;begin调用进程进入等待队列s.queue;阻塞调用进程;end;end2.V原语signal(s)Proceduresignal(s)vars:semaphore;begins.value:=s.valu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。