操作系统 国家精品课程配套教材 教学课件 ppt 罗宇 文艳军 4.1并发执行问题

上传人:E**** 文档编号:89358051 上传时间:2019-05-23 格式:PPT 页数:21 大小:122KB
返回 下载 相关 举报
操作系统 国家精品课程配套教材  教学课件 ppt 罗宇 文艳军 4.1并发执行问题_第1页
第1页 / 共21页
操作系统 国家精品课程配套教材  教学课件 ppt 罗宇 文艳军 4.1并发执行问题_第2页
第2页 / 共21页
操作系统 国家精品课程配套教材  教学课件 ppt 罗宇 文艳军 4.1并发执行问题_第3页
第3页 / 共21页
操作系统 国家精品课程配套教材  教学课件 ppt 罗宇 文艳军 4.1并发执行问题_第4页
第4页 / 共21页
操作系统 国家精品课程配套教材  教学课件 ppt 罗宇 文艳军 4.1并发执行问题_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《操作系统 国家精品课程配套教材 教学课件 ppt 罗宇 文艳军 4.1并发执行问题》由会员分享,可在线阅读,更多相关《操作系统 国家精品课程配套教材 教学课件 ppt 罗宇 文艳军 4.1并发执行问题(21页珍藏版)》请在金锄头文库上搜索。

1、第七讲 并发执行问题,目的与要求:了解并发程序的同步与互斥问题,及上述问题的硬件解决方法。 重点与难点:并发程序中的同步与互斥与硬件解决方法。 作业:例举两个现实生活中需要同步与互斥的例子。,第四章 并发控制 并发的需求,操作系统利用进程或线程支持用户态程序并发执行。 用户程序设计要利用进程或线程,尽量安排并行事务在不同进程或线程中并发执行。 操作系统核心程序也要尽可能地并发运行,4.1 并发编程,计算任务存在并行成分,S1和S2两个子任务可并发执行,S1,S3,S2,并发编程有三种方法: 程序员写顺序程序,用识别工具识别可并行成分后组织使用操作系统的并发机制。 由程序员识别可并行成分,用并发

2、程序设计语言设计并发程序,由编译系统安排使用进程或线程并发; 或直接利用操作系统的系统调用/高级并发程序库设计并发程序。,与进程相关的系统调用,Unix操作系统利用进程(或线程)支持并发执行 它提供了如下系统调用: fork():创建一个新进程。该系统调用执行完成后,系统已创建了一个子进程,该子进程继承了父进程的程序空间,复制了父进程的数据段和栈段。也就是说不管是父进程还是子进程,在占有处理机后,都从fork()调用的返回点开始运行,而父进程fork()调用的返回值是子进程的进程标识pid;子进程fork()调用的返回值是0。,exit(status):进程结束。该系统调用发出后,操作系统将从

3、系统中删除调用exit的进程,并将status值传给等待它结束的父进程。 wait(&status):等待子进程结束。当有多个子进程时,任一个子进程结束即将控制返回调用者,并将子进程调用exit(status)时的status值送到&status指针所指单元中。在控制返回调用者时,同时将所等到的子进程pid作为wait()系统调用函数的返回值。 waitpid(pid,):等待pid所指定的进程结束。,4.2 进程的互斥与同步,同步关系(亦称直接制约关系) 指完成同一任务的伙伴进程间,因需要在某些位置上协调它们的工作而相互等待、相互交换信息所产生的制约关系。 互斥关系(亦称间接制约关系) 即进

4、程间因相互竞争使用独占型资源(互斥资源)所产生的制约关系。,4.2.1 同步与临界段问题,例1:同步问题。如果进程P1执行S1,S3 进程P2执行S2,则P1在执行S3之前必须等待P2执行完S2。,S1,S3,S2,例2: P1、P2两进程使用同一打印机。如果不互斥使用会交叉输出,Entry code,exit code,使用打印机,P1,Entry code,exit code,使用打印机,P2,Parbegin A(amount) R1=count; R2=amount; R1=R1+R2; count=R1; ; B(amount) R1=count; R2=amount; R1=R1-

5、R2; count=R1; ; Parend;,例3: 对共享变量count的互斥访问,例4:有限缓冲区的生产者/消费者问题(生产者和消费者共享一个产品缓冲链),共享N个缓冲区,P1 P2 Pm C1 C2 Cn,typedef struct item; / 消息类型 typedef struct struct buffer *next; struct item inst; buffer; / 缓冲类型 struct buffer *P,*C,*First; struct item nextp,nextc; First= nil;,数据结构,new(P); #获得一空缓冲区 P.inst=ne

6、xtp; P.next=First; First=P; while(1); ;,Parbegin Producer() do produce an item in nextp; ., consume the item in nextc; while(1); ; Parend;,Consumer() do while (first=nil) ; #空循环等 C=First; first=first.next; nextc=C.inst; dispose(C); #释放缓冲区,T0:consumer C= First T1:producer P.next= First T2:producer Fi

7、rst= P T3:consumer First= First.next 则会发生生产者加入队列的缓冲区丢失,临界资源(critical resource):一次仅允许一个进程使用的资源 临界段(critical section) :各进程必须互斥执行的程序段。,4.2.2实现临界段的硬件方法,利用处理机提供的特殊指令实现临界区加锁 常见硬件指令有: 1.屏蔽中断 Parbegin A(amount) disableInterrupt(); R1=count; R2=amount; R1=R1+R2; count=R1; enableInterrupt(); ;,B(amount) disab

8、leInterrupt(); R1=count; R2=amount; R1=R1-R2; count=R1; enableInterrupt(); ; Parend;,2、“Test_and_Set”指令。 该指令功能描述为: boolean Test_and_Set(boolean ,设Lock为全局布尔变量,利用Test&Set指令,即可实现对临界区的加锁与解锁:,“test&set” 读后置1指令实现互斥实例: T&S Ri,Aj 解释为将(Aj)地址所指内存单元内容读到Ri寄存器中,同时将1置入Aj所指的内存单元中. 设Lock为临界段锁变量,则安排如下指令,即可实现加锁与解锁:*,临界段,非临界段,A1 (If (R1=1)then goto Loop ),A1 =(0置Lock内存单元),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号