进程和进程控制线程进程互斥和同步死锁问题进程间通信处理

上传人:艾力 文档编号:49110029 上传时间:2018-07-23 格式:PPT 页数:49 大小:332KB
返回 下载 相关 举报
进程和进程控制线程进程互斥和同步死锁问题进程间通信处理_第1页
第1页 / 共49页
进程和进程控制线程进程互斥和同步死锁问题进程间通信处理_第2页
第2页 / 共49页
进程和进程控制线程进程互斥和同步死锁问题进程间通信处理_第3页
第3页 / 共49页
进程和进程控制线程进程互斥和同步死锁问题进程间通信处理_第4页
第4页 / 共49页
进程和进程控制线程进程互斥和同步死锁问题进程间通信处理_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《进程和进程控制线程进程互斥和同步死锁问题进程间通信处理》由会员分享,可在线阅读,更多相关《进程和进程控制线程进程互斥和同步死锁问题进程间通信处理(49页珍藏版)》请在金锄头文库上搜索。

1、 进程和进程控制 线程 进程互斥和同步 死锁问题 进程间通信 处理器调度第三章 处理机管理(下)1进程间通信(IPC)要解决的问题是进程间的信息交流 进程间通信的类型 共享存储区(shared memory) 管道(pipe) 消息(message) 套接字(socket)进程间通信进程间通信2进程间通信的类型 低级通信:只能传递状态和控制信息, 包括进程互斥和同步所采用的信号量和 管程机制。 优点:速度快。 缺点: 传送信息量小:效率低,每次通信传递的信息量 固定,若传递较多信息则需要进行多次通信。 编程复杂:用户直接实现通信的细节,编程复杂 ,容易出错。 高级通信:能够传送任意数量的数据,

2、 包括:共享存储区、管道、消息、套接 字。低级通信和高级通信按通信量的大小划分进程间通信3直接通信和间接通信 直接通信:信息直接传递给接收方,如管道。 在发送时,指定接收方的地址或标识,也可以指定 多个接收方或广播式地址; 在接收时,允许接收来自任意发送方的消息,并在 读出消息的同时获取发送方的地址。 间接通信:借助于收发双方进程之外的共享数据结 构作为通信中转,如消息队列。通常收方和发方的 数目可以是任意的。进程间通信 进程间通信的类型按通信过程中是否有第三方作中转4共享存储区(shared memory)共享存储区用于进程间的大数据量通信。进行通信的各进程可以任意读写共享存储区,也可在共享

3、存储 区上使用任意数据结构。在使用共享存储区时,需要进程互斥和同步机制的辅助来确保 数据一致性。进程间通信5Windows 采用文件映射机制实现共享存储区采用文件映射机制。用户进程可以将整个文件映射为进程虚拟地址空间的 一部分来加以访问。与共享存储区的使用相关的系统调用: CreateFileMapping为指定文件创建一个文件映射对象,返回对象指针 ; OpenFileMapping打开一个命名的文件映射对象,返回对象指针; 使用CreateFileMapping和OpenFileMapping时可以指定对象名称。 MapViewOfFile把文件映射到本进程的地址空间,返回映射地址空间的

4、首地址; 这时可利用首地址进行读写; FlushViewOfFile可把映射地址空间的内容写到物理文件中; UnmapViewOfFile解除文件映射与本进程地址空间间映射关系; CloseHandle关闭文件映射对象;进程间通信 共享存储区6进程间通信 共享存储区7管道(pipe)管道是在进程间以字节流方式传送信息的通信通道。例如, 用于命令行所指定的输入输出重定向和管道 命令。在使用管道前要建立相应的管道,然后才可使用。进程间通信8Windows 提供匿名管道和命名管道两种管道机制匿名(无名)管道:利用CreatePipe可创建匿名管道,得到两个 读写句柄;利用ReadFile和Write

5、File可进行匿名管道的读写;BOOL CreatePipe( PHANDLE hReadPipe, / address of variable for read handle PHANDLE hWritePipe, / address of variable for write handle LPSECURITY_ATTRIBUTES lpPipeAttributes, / pointer to security attributes DWORD nSize/ number of bytes reserved for pipe ); 进程间通信 管道9 命名管道:一个服务器端与一个客户进程间

6、的 通信通道;可用于不同机器上进程通信; 类型分为:字节流,消息流(报文); 访问分为:单向读,单向写,双向; 通常采用client-server模式连接本机或网络中的 两个进程 管道名字:作为客户方(连接到一个命名管道 实例的一方)时,可以是 “serverNamepipepipename“;作为服务器方 (创建命名管道的一方)时,只能取serverName 为.pipePipeName,不能在其它机器上创建 管道;进程间通信 管道10 与命名管道相关的主要系统调用: CreateNamedPipe在服务器端创建并返回一个命名 管道句柄; ConnectNamedPipe在服务器端等待客户进

7、程的请求 ; CallNamedPipe从管道客户进程建立与服务器的管 道连接; ReadFile、WriteFile(用于阻塞方式)、 ReadFileEx、WriteFileEx(用于非阻塞方式)用于 命名管道的读写;进程间通信 管道11 消息通常是不定长数据块。消息的发送不需要接收 方准备好,随时可发送。Windows 中的邮件槽(mailslot)是一种不定长、不可靠的单向消息机制, 通常采用client-server模式单向:从client发往server server负责创建邮件槽,它可从邮件槽中读消息;client可利用邮件槽的名 字向它发送消息; 邮件槽名字:作为client(

8、发送方)打开邮件槽时,可以是 “rangemailslotpathname“,这里range可以是 .(local computer), computerName, domainName, *(primary domain); 作为server(接收方)只能在本机建立邮件槽,名字可为 “.mailslotpathname“;进程间通信 消息(message)12 有关的API: CreateMailslot服务器方创建邮件槽,返回其句柄 ; GetMailslotInfo服务器查询邮件槽的信息,如: 消息长度、消息数目、读操作等待时限等; SetMailslotInfo服务器设置读操作等待时限

9、; ReadFile服务器读邮件槽; CreateFile客户方打开邮件槽; WriteFile客户方发送消息; 在邮件槽的所有服务器句柄关闭后,邮件槽 被关闭。这时,未读出的报文被丢弃,所有 客户句柄都被关闭。进程间通信 消息(message)13套接字(socket) 套接字是一种网络通信机制,它通过网络在不 同计算机上的进程间进行双向通信。套接字所 采用的数据格式可为可靠的字节流或不可靠的 报文,通信模式可为client-server模式或peer-to -peer模式。 为了实现不同操作系统上的进程通信,需约定 网络通信时不同层次的通信过程和信息格式, TCP/IP协议就是广泛使用的网

10、络通信协议。 在Windows 中的套接字规范称为“Winsock”, 实现了一个真正与协议独立的应用编程接口, 可支持多种网络通信协议。进程间通信14处理器调度处理器调度的类型 调度的性能准则 进程调度器 调度算法 Windows的线程调度15调度的类型 作业:又称为“宏观调度“、“高级调度“。从用户工作流程的 角度,一次提交的若干个流程,其中每个程序按照进程调度 。时间上通常是分钟、小时或天。 内外存交换:又称为“中级调度“。从存储器资源的角度。将 进程的部分或全部换出到外存上,将当前所需部分换入到内 存。指令和数据必须在内存里才能被CPU直接访问。 进程或线程:又称为“微观调度“、“低级

11、调度“。从CPU资 源的角度,执行的单位。时间上通常是毫秒。因为执行频繁 ,要求在实现时达到高效率。从处理机调度的对象、时间、功能等不同角度,可以把处理 机调度分成不同类型。 按照调度的层次 处理器调度16处理机调度的层次调度的类型处理器调度17调度的性能准则可从不同的角度来判断处理机调度算法的性 能,如用户的角度、处理机的角度和算法实 现的角度。 实际的处理机调度算法选择是一个综合的判 断结果。处理器调度18 周转时间:作业从提交到完成(得到结果)所经历的时间。 包括:在收容队列中等待,CPU上执行,就绪队列和阻塞队列 中等待,结果输出等待批处理系统 响应时间:用户输入一个请求(如击键)到系

12、统给出首次响 应(如屏幕显示)的时间分时系统 截止时间:开始截止时间和完成截止时间实时系统,与 周转时间有些相似。 公平性:不因作业或进程本身的特性而使上述指标过分恶化 。如长作业等待很长时间。1. 面向用户的调度性能准则处理器调度192. 面向系统的调度性能准则 吞吐量:单位时间内所完成的作业数,跟作业本身 特性和调度算法都有关系批处理系统 平均周转时间不是吞吐量的倒数,因为并发执行的作业在 时间上可以重叠。 处理机利用率高: 各种设备的均衡利用:如CPU繁忙的作业和I/O繁忙 (指次数多,每次时间短)的作业搭配处理器调度3. 调度算法本身的调度性能准则 易于实现 执行开销比小20进程调度器

13、( dispatcher ) 功能: 记录所有进程的运行状况(静态和动态) 当进程出让CPU或调度程序剥夺执行状态进程占用的CPU 时,选择适当的进程分派CPU 完成上下文切换 进程的上下文切换过程: 用户态执行进程A代码进入OS核心(通过时钟中断或 系统调用) 保存进程A的上下文,恢复进程B的上下文(CPU寄存器 和一些表格的当前指针) 用户态执行进程B代码 注:上下文切换之后,指令和数据快速缓存cache通 常需要更新,执行速度降低处理器调度21调度算法先来先服务 短作业优先 时间片轮转算法 多级队列算法 优先级算法 多级反馈队列算法通常将作业或进程归入各种就绪或阻塞队列。有的算法适用于

14、作业调度,有的算法适用于进程调度,有的两者都适应。处理器调度22先来先服务 先来先服务(FCFS, First Come First Service)按进程的 到达先后顺序进行调度。 短作业优先 短作业优先(SJF, Shortest Job First)预计执行时间短的 作业(进程)优先分派处理机。它的设计目标是减少进程的 平均周转时间。 时间片轮转 时间片轮转(Round Robin)系统中所有的就绪进程排成 一个队列,每次调度时将处理机分派给队首进程,让其执行 一个时间片。在一个时间片结束时,进程调度器暂停当前进 程的执行,将其送到就绪队列的末尾。 调度算法处理器调度23调度算法处理器调

15、度多级队列算法 多级队列算法(Multiple-level Queue)根据作业或进程的性质 或类型的不同引入多个就绪队列,不同队列可有不同的时间片 长度、调度策略等,达到一个综合的调度目标。 优先级算法 优先级算法(Priority Scheduling)是多级队列算法的改进, 协调各进程队列中进程的响应时间要求。 多级反馈队列算法 多级反馈队列(Round Robin with Multiple Feedback)是时 间片轮转算法和优先级算法的综合和发展。通过动态调整进程 优先级和时间片大小,可兼顾多方面的系统目标。 24WindowsWindows的线程调度的线程调度Windows处理机调度的调度对象是线程。 Windows 的线程调度并不是单纯使用某一种调度算 法,而是多种算法的综合体,针对实际系统的需要 进行针对性的优化和改进。 Windows 线程调度的特征 与线程调度相关的Win32 API函数 线程优先级 线程时间配额 调度数据结构 调度策略 线程优先级提升 空闲线程25Windows 线程调度的特征调度单位是线程而不是进程,采用严格的抢先式 动态优先级调度,依据优先级和分配时间配额来 调度。 每个优先级的就绪线程排成一个先进先出队列; 当一个线程状态变成就绪时,它可能立即运行或排 到相应优先级队列的尾部。 系统总是运行优先级最高的就绪线程;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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