分布式系统的进程和处理机.ppt
《分布式系统的进程和处理机.ppt》由会员分享,可在线阅读,更多相关《分布式系统的进程和处理机.ppt(82页珍藏版)》请在三一办公上搜索。
1、第4章 分布式系统中的进程和处理机,4.1 线程,4.1.1 线程简介,进程与线程 进程是程序在一个数据集合上运行的过程,使系统进行资源分配和调度的一个独立单位。引入进程的目的是为了使多个程序并发执行,以提高资源利用率和系统吞吐量。线程:能够独立运行的基本单位,轻量级的进程,一个进程可以创建多个线程,有统一的地址空间。引入线程的目的是为了减少程序在并发执行时所付出的时空开销。,进程,线程,程序计数器,计算机,计算机,4.1 线程,4.1.1 线程简介,进程与线程 线程有运行、阻塞、就绪、结束状态。每个线程有自己的程序计数器和堆栈。像进程一样共享处理机。同一进程中的线程不像不同进程之间完全是独立
2、的,所有线程有同一地址空间。线程共享进程所有拥有的资源。,每个线程的项目 程序计数器 堆栈 寄存器组 子线程 状态,每个进程的项目 地址空间 全局变量 打开的文件 子进程 计时器 标志 信号量 计算信息,4.1 线程,4.1.2 线程的用途,派遣者/工作者模型 某一个线程作为派遣者,它从系统邮箱内读出输入请求,然后检查请求,选择一个空闲的工作者线程去处理它。然后派遣者唤醒睡眠的工作者。工作者被唤醒后,它检查共享块缓冲区是否可以满足这个请求。如不能满足,给磁盘发送消息,要求所需的数据块。且进入休眠状态等待磁盘操作的完成。,4.1 线程,4.1.2 线程的用途,团队模型 所有线程都是批平等的,每个
3、都获得和处理自己的请求。没有派遣者。如果工作来了不能处理,尤其是如果每个线程用来处理一种特殊的工作,可以维护一个队列,挂起的作业保存在作业队列中。线程在察看系统信箱前先察看作业队列。,4.1 线程,4.1.2 线程的用途,管道线模型 这种模型中第一个线程产生一些数据传给下一个线程去处理。数据持续从一个线程传到另一个线程,经过的每一个线程都进行处理。(生产者-消费者问题),邮箱,内核,4.1 线程,4.1.3 线程包的设计问题,线程包设计 与线程相关的用户可得的原语集叫作线程包。线程管理:静态多线程:当程序编写或被编译时就要决定选择多少个线程。每个线程分配一个固定堆栈。这种方法简单,但不灵活。动
4、态多线程:允许线程在运行过程中动态的创建和回收。这种模型中进程以一个线程开始运行,但能根据需要创建多个线程,该线程完成后可以退出。线程结束:当一个线程完成它自己的工作时,可以自己退出,或者被外界中止。,4.1 线程,4.1.3 线程包的设计问题,线程包设计 共享问题互斥体 互斥体也是一种消耗信号量。互斥体总是处于两种状态:打开和锁住。互斥体定义了两种操作:一种是加锁操作,一种是开锁操作。如果互斥体处于打开状态,它将仅仅用一个原子操作锁住互斥体。如果一个线程要给一个已经锁住的互斥体加锁则它将被阻塞。开锁操作是打开互斥体。如果一个或多个线程由于互斥体被锁住而等待,实际上只有一个被开锁,其余的继续等
5、待。试锁(trylock):尝试锁住互斥体,如果互斥体是打开的,则返回成功的状态标识码。反之,试锁不会阻塞线程,而是返回失败状态的标识码。,4.1 线程,4.1.3 线程包的设计问题,线程包设计 共享问题条件变量 每一条条件变量通常在创建时与一个互斥体相关联。互斥体与条件变量的区别在于互斥体用于短期加锁,以监视进入临界区。而条件变量是用于长时间等待直到资源可用为止。,lock mutex;lock mutex Check data structures mark resourse as free While(resourse busy)unlock mutex;Wait(condition v
6、ariable);wakeup(condition variable);Mark resourse as busy;unlock mutex;,wakeup唤醒在特定条件变量上等待的一个或所有的线程。,4.1 线程,4.1.3 线程包的设计问题,线程包设计 共享问题全局变量 使用全局变量线程之间的冲突(例子),4.1 线程,4.1.3 线程包的设计问题,线程包设计 共享问题全局变量 使用全局变量线程之间的冲突解决方案 禁止使用全局变量 给每个线程分配它自己的私有全局变量,4.1 线程,4.1.3 线程包的设计问题,线程包设计 共享问题全局变量 存取私有全局变量 分配一大块内存给全局变量并将它作
7、为一个额外的参数传递给线程中的每一个过程。引入新的库例程来创建、设置和读取这些线程全局变量。create_global(“bufptr”);set_global(“bufptr”,4.1 线程,4.1.4 实现一个线程包,在用户空间中实现线程 用户级线程包 结构,4.1 线程,4.1.4 实现一个线程包,在用户空间中实现线程 用户级线程包优点 在不支持线程的操作系统中实现;线程切换比使用内核陷阱快一个数量级;允许每个进程有自己定制的调度算法。缺点 阻塞调用怎样实现?系统调用改为非阻塞,使用SELECT 如何实现调度?旋转锁,时钟信号中断;,4.1 线程,4.1.4 实现一个线程包,在内核中实现
8、线程 由内核管理的线程包 结构,4.1 线程,4.1.4 实现一个线程包,在内核中实现线程 由内核管理的线程包 当一个线程想去创建一个新线程或撤销已存在的线程时,它发出一个内核调用,由它完成创建和回收工作。内核中每个进程都有一张包含线程信息(线程的寄存器、状优先权等)的表。优点:容易实现调度。缺点:系统开销大。共性问题 可重入问题,4.1 线程,4.1.4 实现一个线程包,调度者行为 Anderson等人设计的一种结合用户线程和内核线程的长处的一种方法,称为调度者行为。目标:模拟内核线程的功能,像用户空间内实现的线程包一样有更好的性能和有更大的灵活性。通过避免在用户空间和内核空间之间不必要的转
9、换来实现高效率。重要思想:内核分配一定数量的虚拟处理机给每个进程,并且让(用户空间)运行期系统将线程分配给处理机。优点:效率,很好地解决了控制权有阻塞线程传递给非阻塞线程。缺点:可能产生死锁,与分层系统的内在结构相违背。,4.1 线程,4.1.5 线程和远程过程调用(RPC),主要思想 当服务器线程S启动时,输出它的接口告诉内核,这个接口定了哪一个过程可调用,调用的参数等。当客户端线程C启动时,从内核输入该接口,获得用于调用的特殊标识。在客户端使用内存映像,同一台机器上的RPC能很快完成。在服务器,使用弹出线程,不会因等待新任务而阻塞。,4.2 系统模型,讨论的问题 分布式系统中处理机的组织方
10、式。介绍两种主要的模型:工作站模型和处理机池模型以及混合模型。工作站模型 系统是由分布在建筑物中或校园中并由高速局域网连接起来的工作站(高性能终端个人计算机)构成的。,4.2 系统模型,工作站模型,无盘工作站:系统中工作站没有本地磁盘,称为无盘工作站。如果工作站是无盘的,文件系统必须由一个或多个远程文件服务器实现。无盘工作站流行的原因:,价格:买大量的带有低速小容量磁盘的工作站比买一台或两台配置有高速、海量磁盘并可通过LAN访问的文件服务器昂贵的多。容易维护:系统管理员很容易将某个新版软件安装在机房中很少的几台文件服务器上。磁盘有机风扇并产生噪音对称性和灵活性:由于所有的文件都在文件服务器上,
11、各个无盘工作站其实是一样的。,4.2 系统模型,工作站模型,有盘工作站:系统中工作站有本地磁盘,称为有盘工作站。当工作站有私人磁盘时,这些磁盘至少能以下列四种方式使用:,分页和临时文件:用于分页和存储临时的、不能共享的、并在登陆会话结束后丢弃文件分页,临时文件和系统二进制文件:可以保存二进制程序(编译程序、文本编辑程序等),当调用某一程序时,从本地加载,减少网络负载。分页,临时文件,系统二进制文件和文件缓存:用户能从文件服务器下载文件到本地磁盘上,在本地读写这些文件,然后在登陆会话结束之前上载修改后的文件。完整的局部文件系统:每个机器都能有自己独立完备的文件系统。,4.2 系统模型,工作站模型
12、 无盘模型和四种有盘工作站模型的比较,对文件服务器的依赖程度,4.2 系统模型,4.2.2 使用空闲工作站,rsh程序:Berkeley UNIX中的rsh程序,这个程序的调用方式是:rsh machine mand 机器名命令名,用户必须告诉使用哪台机器,将跟踪空闲机器的任务完全交给了用户;程序在远程机器的环境中执行,而这种环境通常不同于本地机器的环境;如果某用户登陆到一个有远程进程正在运行的机器上,要么忍受低性能,要么使用另一台机器。,rsh程序存在的缺陷:,4.2 系统模型,4.2.2 使用空闲工作站,空闲工作站的研究集中解决的问题 怎么样找出一台空闲机器?服务器驱动:当一台工作站空闲时
13、,向注册文件注册声明其可用性。(单注册表或多注册表),4.2 系统模型,4.2.2 使用空闲工作站,空闲工作站的研究集中解决的问题 怎么样找出一台空闲机器?客户端驱动:当调用remote时,向空闲机器发请求消息。当返回应答时,remote调用从中选择一台并启动它。优化方法:令“空闲”工作站延迟它们的回答,并使这些延迟与工作站当前的负载呈正比。于是,负载最轻的工作站的应答最先返回并被选择。,4.2 系统模型,4.2.2 使用空闲工作站,空闲工作站的研究集中解决的问题 远程进程怎么样透明的运行?设置环境:设置远程进程使它有与本地工作站一样的环境,如同样的文件系统,同样的工作目录和同样的条件变量等等
14、。考虑与其它机器或宿主机的交互:如程序在运行后执行系统调用read。如果是无硬盘的,则向相应的文件服务器发送请求;如果是系统有本地磁盘,且每一个都有完整的系统,请求必须返回到宿主机上执行。与时间相关的调用。,4.2 系统模型,4.2.2 使用空闲工作站,空闲工作站的研究集中解决的问题 如果(空闲)机器的主人回来重新使用它怎么办?什么也不做 杀掉正在进入的进程。缺点是所有的工作信息会丢失,并且可能造成文件系统的混乱状态。较好的方法是给出一个适当的“警告”。将这个进程移植到另一台机器上去(本机或者另一台空闲工作站)。这种方法在实践中很少使用,因为实际的机制相当复杂。,4.2 系统模型,4.2.3
15、处理机池模型,当可以提供相当于用户十倍至百倍数量的CPU时,如何处理。建造处理机池(processor pool)在机柜中放满CPU,可以根据需要动态地分配给用户。处理机池模型如下图所示:,4.2 系统模型,4.2.3 处理机池模型,基本思想:将所有的计算能力转变为能够动态访问的“空闲工作站”,用户可以在短时间内分配到它们所需要数量的CPU。用户使用完毕后,释放这些CPU返回处理机池中供其它用户使用。根据:排队论:用一个是小系统功能n倍的大系统来代替n个独立的小系统的资源可以把平均响应时间减少为原来的1/n。,4.2 系统模型,4.2.4 混合模型,基本思想:提供给每个用户一个私有工作站并附加
16、有处理机池。该方法的开销比单纯的工作站模型或单纯的处理机池模型更加昂贵,但是综合了两者的优点。为了保证响应时间,交互式的工作在工作站上运行。所有非交互式进程运行在处理机池中。优点:快速的交互响应、有效的资源利用和简单的设计。,4.3 处理机分配,4.3.1 分配模型,两个假设 所有的处理机都是一样的:几乎所有的模型都假设所有的计算机都是一样的,或至少是代码兼容的,至多在速度上有所不同。系统是完全连接的:即每台处理机都能与其它的任何一台处理机进行通信。处理机分配策略的种类 不可迁移的:当创建一个进程时,系统就决定为该进程分配哪台处理机。一旦分配完毕,进程将一直在这个处理机上运行,直到结束。可迁移
17、的:已经开始运行的进程可迁移到别的处理机上继续运行。提供了更好的负载均衡。,4.3 处理机分配,4.3.1 分配模型,处理机分配算法优化 CPU的利用率最大化:尽可能减少CPU的空闲时间 平均响应时间最小化,处理机1运行进程A,处理机2运行进程B的平均响应时间为(10+8)/2=9秒处理机处理机1运行进程B,处理机2运行进程A的平均响应时间为(30+6)/2=18秒,4.3 处理机分配,4.3.1 分配模型,处理机分配算法优化 最小化响应率,响应率是在一台机器上运行一个进程的时间除以这个进程在一个无负载的标准处理机上运行时应该花的时间。响应率是一个比响应时间更加有效的参数,它考虑了大作业会比小
18、作业花更多的时间。例子:一个1秒的任务花了5秒时间完成,1个一分钟的任务花 了70秒完成。显然,按响应时间前者好;按响应率后者好些!,4.3 处理机分配,4.3.2 处理机分配算法的设计问题,处理机分配算法设计者要考虑的问题包括以下五个方面:确定性与启发性(试探性)算法 确定性算法适用于当进程的所有行为都是事先知道的情况。或者是可以得到一个合理的近似,如银行、航空定票系统。如果系统的负载是完全不可预测的,处理机分配算法不能用数学的、确定性的算法来实现,而只能使用特别的启发性(试探性)算法。集中式与分布式算法 把所有的信息集中到一个地点便于作出更好的决定,但是中心机器负载过重。倾向于采用分布式算
19、法。,4.3 处理机分配,4.3.2 处理机分配算法的设计问题,处理机分配算法设计者要考虑的问题包括以下五个方面:最优与次优算法 得到最优解比次优解付出的代价大很多。因为要搜集更多的信息,并进行全面的处理。大多数分布式系统目标定位在启发性的、分布式的、次优的解决方案上。本地与全局算法 是否根据本地信息决定转移策略。本地算法认为如果机器的负载低于某个值就让该进程在这台机器上运行,否则迁移。全局算法认为收集全局信息,看看其它机器的负载后再决定是否在本机上运行该进程。,4.3 处理机分配,4.3.2 处理机分配算法的设计问题,处理机分配算法设计者要考虑的问题包括以下五个方面:发送者发起与接收者发起算
20、法 当定位策略需要别处的负载信息来对进程传输到何处做出决定时,这个信息可以通过两种方法传递:发送者发起和接收者启动。,4.3 处理机分配,4.3.3 处理机分配算法的实现问题,处理机分配算法实现方面要考虑的问题 如何计算负载 计算每台机器上的进程数,并将它作为负载情况;只对处于运行或就绪状态的进程计数。测量CPU的利用率 如何处理额外开销 许多理论上的处理机分配算法都忽略了测量处理机搜集信息和转移进程的额外开销。一个好的算法应考虑算法本身所占用的CPU时间、内存的使用及网络带宽等等。,4.3 处理机分配,4.3.3 处理机分配算法的实现问题,处理机分配算法实现方面要考虑的问题 复杂性 应考虑软
21、件的复杂性对系统的性能、正确性和健壮性产生的影响。例如:Eager等人的三个算法(如何定位远程机器以进行进程转移)算法1:随机选择,如果选择的机器仍然过载,继续随机选择,直到找到轻载机器或者计数器溢出。算法2:随机选择一台机器,然后向它发出询问。算法3:询问K台机器,确定它们的确切负载情况。将新进程传送到负载最小的那台机器上。,4.3 处理机分配,4.3.3 处理机分配算法的实现问题,处理机分配算法实现方面要考虑的问题 复杂性 结论:如果使用一个简单的算法获益接近于使用昂贵并复杂得多的算法所带来的收益,那么应采用简单的算法。稳定性 由于不同的机器都在异步的运行它们的算法,所以整个系统很少是平衡
22、的。系统信息不全面。非平衡的系统环境造成了不稳定问题。,4.3 处理机分配,4.3.4 处理机分配算法举例,图论确定性算法 算法要求进程知道它所要求的CPU和内存要求,并且知道系统中每对进程之间要求的平均通信量。如果系统的CPU数量k小于进程数,则将多个进程指派到同一个CPU上。算法的思想是使这种指派能够使网络的通信量最小化。,寻找紧耦合的聚集,这些聚集之间很少相互作用,4.3 处理机分配,4.3.4 处理机分配算法举例,一个集中式的算法 算法中有一个协调者,保存一张使用情况表。每个工作站在表中都有一个条目,初始值为0。使用情况表中的记录值可以是正数、0或是负数。正数表示用户纯粹在使用系统资源
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 系统 进程 处理机
链接地址:https://www.31ppt.com/p-6094361.html