- 1、本文档共241页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章进程管理课件
* 第二章 进程管理 * 1、调度 在传统OS中,拥有资源、独立调度和分派的基本单位都是进程,在引入线程的系统中,线程是调度和分派的基本单位,而进程是拥有资源的基本单位。 在同一个进程内线程切换不会产生进程切换,由一个进程内的线程切换到另一个进程内的线程时,将会引起进程切换。 线程与进程的比较 * 第二章 进程管理 * 2、并发性 在引入线程的系统中,进程之间可并发,同一进程内的各线程之间也能并发执行。因而系统具有更好的并发性。 线程与进程的比较 * 第二章 进程管理 * 3、拥有资源 无论是传统OS,还是引入线程的OS,进程都是拥有资源的独立单位,线程一般不拥有系统资源,但它可以访问隶属进程的资源。即一个进程的所有资源可供进程内的所有线程共享。 线程与进程的比较 * 第二章 进程管理 * 4、系统开销 进程的创建和撤消的开销要远大于线程创建和撤消的开销,进程切换时,当前进程的CPU环境要保存,新进程的CPU环境要设置,线程切换时只须保存和设置少量寄存器,并不涉及存储管理方面的操作,因此进程切换的开销远大于线程切换的开销。 同一进程内的各线程由于它们拥有相同的地址空间,它们之间的同步和通信的实现也变得比较容易。 线程与进程的比较 * 第二章 进程管理 * 对用户来说,多线程系统比无线程系统可减少用户的等待时间,提高系统的响应速度。 线程和进程一样,都有自己的状态,也有相应的同步机制,不过由于线程没有单独的数据和程序空间,因此线程不能像进程的数据与程序那样,交换到外存存储空间,从而线程没有挂起状态。 进程的调度、同步等大多由OS内核完成,而线程的控制既可以由OS内核进行,也可以由用户控制。 线程与进程的比较 * 第二章 进程管理 * 线程的执行特性 线程有3个基本状态,即执行、就绪和阻塞。 针对线程的3种基本状态,存在5种基本操作来转换线程的状态。 派生(spawn):线程在进程内派生出来,它既可由进程派生,也可由线程派生。用户一般用系统调用(或相应的库函数)派生自己的线程。新派生线程被放入就绪队列。 阻塞(block):如果一个线程在执行过程中需要等待某个事件发生,则被阻塞。 激活(unblock):如果阻塞线程的事件发生,则该线程被激活并进入就绪队列。 * 第二章 进程管理 * 调度(schedule):选择一个就绪线程进入执行状态。 结束(finish):如果一个线程执行结束,它的寄存器上下文以及堆栈内容等将被释放。 就绪 阻塞 执行 结束 派生 激活 阻塞 调度 结束 线程的执行特性 线程的另一个执行特性是同步。线程中所使用的同步控制机制与进程中所使用的同步控制机制相同。 * 第二章 进程管理 * 消息缓冲通讯技术由Hansen在1973年首先提出的,基本思想是:根据“生产者——消费者关系”原理,利用公用消息缓冲区实现进程间的信息交换。 发送进程在发送消息前,先在自己的内存空间设置一个发送区,把欲发送的消息填入其中,然后再用发送过程将其发送出去。接收进程则在接收消息之前,在自己的内存空间内设置相应的接收区,然后用接收过程接收消息。 消息缓冲机制(直接通信) * 第二章 进程管理 * 消息缓冲通信的实现 在操作系统空间设置一组缓冲区。 当发送进程需要发送消息时,执行send系统调用,产生访管中断,进入操作系统。 操作系统为发送进程分配一个空缓冲区,并将所发送的消息从发送进程copy到缓冲区中,然后将该载有消息的缓冲区连接到接收进程的消息链链尾,如此就完成了发送过程。 发送进程返回到用户态继续执行。 * 第二章 进程管理 * 在以后某个时刻,当接收进程执行到receive接收原语时,也产生访管中断进入操作系统。 由操作系统将载有消息的缓冲区从消息链中取出,并把消息内容copy到接收进程空间,之后收回缓冲区,如此就完成了消息的接收,接收进程返回到用户态继续进行。 * 第二章 进程管理 * 消息缓冲机制(直接通信) 两通信进程必须满足下列条件: 、在发送进程把消息写入缓冲区和把缓冲区挂入消息队列时, 应禁止其他进程对该缓冲区消息队列的访问。同理,接收进程取消息时也应禁止其他进程对该消息队列的访问 2、当缓冲区中没有信息存在时,接收进程不能接收到任何消息 * 第二章 进程管理 * Send(R, M) begin 在OS中分配M.size大小的缓冲区t; 将M中的内容复制到t; 得到进程R的PCB的指针q; P(q.mutex); 将t挂到队列q.mq队尾; V(q.mutex); V(q.sm); end 用P、V操作来实现Send原语 * 第二章 进程管理 * Receive(N)
文档评论(0)