- 1、本文档共149页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
os_第2章进程管理
对用户级线程的核心活动 核心不知道线程的活动,但仍然管理线程所属进程的活动 当线程调用系统调用时,整个进程阻塞 但对线程库来说,线程仍然是运行状态 即线程状态是与进程状态独立的 用户级线程的优点和缺点 优点: 线程切换不调用核心 调度是应用程序特定的:可以选择最好的算法 ULT可运行在任何操作系统上(只需要线程库) 缺点: 大多数系统调用是阻塞的,因此核心阻塞进程,故 进程中所有线程将被阻塞 核心只将处理器分配给进程,同一进程中的两个线 程不能同时运行于两个处理器上 可采用ULT和KLT结合方法 线程创建在用户空间完成 大量线程调度和同步在用户空间完成 程序员可以调整KLT的数量 可以取两者中最好的 分派 唤醒 继续 抢占 停止 可运行 睡眠 睡眠 停止 停止 停止 用户级线程 活跃 连接在LWP上 2.7.4 线程控制 1.内核支持线程的实现: 任务数据块PTDA 2. 用户级线程的实现: 中间系统 运行时系统 内核控制线程LWP 进程 1 进程 2 进程 3 进程 4 进程 5 进程库 用户 内核 硬件 用户级线程 内核级线程 轻型线程 处理器 * 2.6.1 进程通信的类型 共享存储器系统 基于共享数据结构 基于共享存储区 消息传递系统 直接通信方式 间接通信方式 管道通信 互斥、同步、 对方是否存在 2.6.2 消息传递通信的实现方法 1、直接通信方式 发送进程发消息时要指定接收进程的名字, 反过来,接收时要指明发送进程的名字 Send(Receiver,message); Receive(Sender,message); * 对称形式:一对一 * 非对称形式:多对一 (顾客/服务员) Receive(id,message); repeat: ┇ produce an item in nextp; ┇ send(consumer,nextp); until false; repeat receive(producer,nextc); ┇ consume the item in nextc; until false; 生产者、消费者的通信过程如下: 2、间接通信方式 信箱头 信箱体 信箱 发送进程发消息时不指定接收进程的名字,而是指定一个中间媒介,即信箱。进程间通过信箱实现通信 Receive(mailbox,message) 从指定信箱中接收一个消息。 (1)信箱的创建和撤消。 (2)消息的发送和接收。 Send(mailbox,message) 将一个消息,发送到指定信箱。 信箱分为三类: (1)私用信箱 (2)公用信箱 (3)共享信箱 也称共享文件方式,基于文件系统,利用一个打开的共享文件连接两个相互通信的进程,文件作为缓冲传输介质 3 管道通信(Pipe) 2.6.3 消息传递系统中的几个问题 1、通信链路 2、消息的格式 消息头:控制信息。 消息正文:发送进程实际所发送的数据。 3、进程同步方式 1、发送进程阻塞,接收进程阻塞 2、发送进程不阻塞、接收进程阻塞 3、发送进程和接收进程均不阻塞 2.6.4 消息缓冲队列通信机制 1、消息缓冲队列通信机制中的数据结构 (1)、消息缓冲区,可描述为: type message buffer=record sender; 发送者进程标识符 size; 消息长度 text; 消息正文 next; 指向下一个消息缓冲区的指令针 end (2)、PCB中有关通信的数据项 进程标识符信息 进程控制块的信息 处理机状态信息 进程调度信息 进程控制信息 利用消息缓冲队列通信机制中,在PCB中应增加的数据项为: type processcontrol block=reeord ┇ mg; 消息队列队首指针 mutex; 消息队列互斥信号量
文档评论(0)