聊城大学计算机学院计算机操作系统课件 第2章(2).ppt

聊城大学计算机学院计算机操作系统课件 第2章(2).ppt

  1. 1、本文档共111页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Send(receiver,m) Begin 向系统申请一个消息缓冲区; 把m送入新申请的消息缓冲区, wait(mutex); 把消息缓冲区挂入接收进程的消息队列。 signal(mutex); signal(Sm); End; Receive(n) Begin wait(Sm); Wait(mutex); 摘下消息队列中的消息n, Signal(mutex); 将消息n从缓冲区复制到接收区; 释放缓冲区; End; 发送进程是否可以发送消息,则取决于是否申请到缓冲区。 具体见课本P70 3 发送原语 procedure send(receiver,a) begin getbuf(a.size,i) i.sender:=a.sender i.size:=a.size i.text:=a.text i.next:=0 getid(PCB.receiver.j) wait(j.mutex) insert(j.mq.I) signal(j.mutex) signal(j.sm) end a为发送进程在自己的内存空间中设置的一发送区。 把消息正文、发送进程标识符、消息长度等信息填入a中。 根据a.size申请一缓冲区i,把a中信息复制到i中, 获得接收进程的内部标识符j,将i挂在j.mq上。因为消息队列为临界资源,对其操作要求互斥。 4 接收原语 procedure receive(b) begin j:=internal name wait(j.sm) wait(j.mutex) remove(j.mq.i) signal(j.mutex) b.sender:=i.sender b.size:=i.size b.text:=i.text end 接收进程调用接收原语,在自己的消息缓冲队列mq中,摘下第一个消息缓冲区(如i),将其复制到以b为首址的指定消息接收区内。 2.7 线 程 ( Thread) 一、线程的引入(the introduction of thread) 进程的两个基本属性:是构成进程并发执行的基础。 资源的拥有者:每个进程分配PCB,保存进程映像,控制一些资源,状态、优先级等。 调度/执行:进程是一个执行轨迹,在一个时刻只能有一个执行控制流。 2.7.1 线程的基本概念(The Basic Concept of Thread) 创建进程:分配整套资源。(分配PCB,分配除CPU之外的其他所需资源) 撤消进程:释放整套资源。(回收资源,撤销PCB) 进程切换:切换整套资源。(保留当前进程的PCB环境,设置新选中进程的CPU环境) 时间空间开销大,限制并发度。 进程操作存在的问题: 缺点: 将原来进程的两个属性(资源分配单位和运行调度单位)分开处理。 资源拥有单元称为进程(或任务); 调度的单位称为线程。 线程定义:轻型进程(LWP) 解决方案: ——引入线程 是进程中的一个运行实体,是CPU调度的基本单位。 为了减少时空开销,提高并发度,引入线程。 轻型实体。只拥有少量运行中必不可省的资源。TCB、程序计数器、一组寄存器和堆栈; 独立调度的基本单位。由于线程很“轻”,故线程的切换开销小,速度快。 共享进程资源。进程只是资源的拥有者,进程创建线程,一个进程可包含多个线程,它们共享进程拥有的资源。一个线程可创建和撤销另一个线程。 并发执行。多个线程可并发执行。 具有就绪、阻塞和执行三种基本状态。运行中也呈现间断性。 二、线程属性(The Attribute of thread) 三、进程和线程的比较 1 线程与进程的关系 一个进程可以有多个线程,线程只能在一个进程的地址空间内活动。 资源分配给进程。同一进程的所有线程共享该进程的所有资源。 处理机分配给线程。真正在处理机上运行的是线程。进程的“执行”状态实际是进程中某线程的执行状态。 线程在执行过程中需要协作同步,不同进程的线程要利用消息通信的办法实现同步。 User Stack Kernel Stack User AddressSpace Process Control Block Single-Threaded Process Model User Stack Thread Control Block Kernel Stack Thread Multithreaded Process Model User Address Space Process Control Bloc

文档评论(0)

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

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

1亿VIP精品文档

相关文档