分布式操作系统4探究.ppt

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 分布式系统中的进程和处理机 4.1 线程 一、线程简介 在系统要求更高的吞吐量、更高的性能,并在同一地址空间,共享同一缓冲区,创建两个服务进程不可能达到目的,从而需要新的机制 线程像微小进程,按照顺序执行,有自己的程序计数器和堆栈。当一个线程被阻塞时,运行同一进程中的另一线程。 所有线程共享全局变量,能够存取每个虚拟地址,线程之间没有保护,每个线程能够读写其他线程的堆栈,甚至清除另一线程的堆栈: 线程是同一任务的一部分且紧密合作 线程的状态 运行 线程占有CPU,处于激活状态 阻塞 等待其他线程的某个事件触发后才能唤醒并能够运行的线程 就绪 等候CPU服务的线程 结束 结束为线程退出,但还没有被父进程回收 二、线程的用途 派遣者/工作者模型 从系统邮箱内读出输入请求,检查请求,选择一个空闲的工作者线程处理 当工作者线程被唤醒后,检查任何一个线程可访问的共享块缓冲区是否可以满足,若不满足,则给磁盘发出消息,要求所需的数据块,等待磁盘操作完成 调用调度程序,开始另一线程 构造服务器的方法 线程 特点:并行,阻塞系统调用 单线程进程 服务器的主循环是接收一个请求,检查请求,在下一个请求到来前完成请求,当等待磁盘操作时,服务是空闲的且不处理另一请求 特点:不并行,阻塞系统调用 有限状态机 当请求到来后,有唯一的一个线程检查它,如果缓冲区能满足,进行运行,否则,向磁盘发送一条消息,但并不阻塞服务线程,而将当前请求的状态记录在一张表中,然后处理下一条消息。下条消息如果是请求新工作则激活它,若是磁盘对上次操作的回答,则从表中取出相关信息并处理 特点:并行,非阻塞系统调用 2. 团队模型 所有线程都是平等的,每个都获得和处理自己的请求,但由于缺少派遣者,请求到来线程不能处理,可以通过维护一个作业队列,挂起的作业保存在作业队列中 使用这种组织结构,线程在查看系统邮箱前应先查看作业队列 管道线模型 第一个线程产生一些数据传给下一个线程处理。数据持续从一个线程传到另一个线程,经过的每一个线程都进行处理。 多线程的优点: 多客户端有用 一个客户端将一个文件复制到多个服务器 与RPC或通信无关 并行处理程序编写比较容易 可以在同一地址空间的不同CPU中并行运行 三、线程包的设计问题 线程包:与线程相关的用户可得的原语集 线程管理: 静态多线程 程序编写或编译时就要决定选择多少线程,每个线程分配一个固定的堆栈 简单但不灵活 动态多线程 线程在运行过程中动态地创建和回收 线程结束的两种方式 完成时自动退出 被外界终止:如文件服务器进程 线程共享存储器的操作 打开互斥体 如果一个或多个线程由于互斥体被锁住而阻塞,则只能打开其中的一个,其余的继续等待 锁住互斥体 如果一个互斥体处于打开状态,它将仅仅用一个原子操作锁住互斥体。 试锁 尝试锁住互斥体,如果互斥体是打开状态,则试锁将返回成功的状态标志码,否则,返回失败的状态码但不阻塞线程 条件变量 互斥体用于短期加锁,以监视进入临界区;条件变量是用于长时间等待直到资源可用 线程的代码通常由多个过程构成,局部变量和参数不会产生任何麻烦,但相对于线程的全局变量而不是相对于整个程序的全局变量会产生麻烦 解决办法 禁止使用全局变量 给每个线程分配它自己的私有全局变量 引入新的库过程来创建、设置和读取这些线程全局变量 四、实现一个线程包 在用户空间中实现线程 特点: 用户级的线程包能够在不支持线程的操作系统中实现 线程切换比使用内核陷阱要快 允许每一个进程有自己定制的调度算法 阻塞调用的实现存在问题,非阻塞系统调用将需要修改现存的许多用户程序 线程产生页面错时,内核将阻塞整个进程的执行 用户级线程中同一进程内部线程的切换的实现存在困难 在内核中实现线程 特点: 调度者行为 模拟内核线程的功能,像用户空间内实现的线程包一样有更好的性能和更大的灵活性,特别地,用户线程不必发出特殊的非阻塞系统调用或者事先检查发出某个系统调用是否安全;当一个线程由于系统调用或页面错阻塞时,若其他线程就绪,系统可以运行同一进程呢感中的其他线程 特点: 通过避免在用户空间和内核空间进行不必要的切换实现高效率 五、线程和远程过程调用(RPC) 大量的RPC调用是调用与它们在同一机器上的进程 可以使一个进程中的线程以一种比普通方法更有效的方法调用同一机器上的另一进程中的线程 当服务器线程S启动时,输出它的接口告诉内核,这个接口定义了哪些过程及其相关参数,当客户线程C启动时,从内核输入该接口,获得用于调用的特殊标志。内核现在知道C以后将调用S,并且创建特殊的数据结构为调用做准备 当一个新消息进入服务器时,内核动态创建一新线程去为此请求服务,并把消息映像到服务器地址空间,然后建立新线程的堆栈来存取该消息 特点: 线程不会因等待新任务而阻塞,

文档评论(0)

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

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

1亿VIP精品文档

相关文档