多处理机定义:多处理机指的是某个计算机系统中有多个cpu,在多处理机调度中,多处理机一般指的是共享存储器处理机,其两个或更多的cpu全部共享一个公用的RAM。
根据系统中的处理机相同与否,可将多处理机系统分为如下两类:
1、对称多处理机系统:在系统中所包含的各处理机单元在结构和功能上都是相同的。
2、非对称多处理机系统:在系统中有多类型的处理单元,他们的功能和结构各不相同,系统中只有一个主处理器,但有多个从处理机。
(二、进程分配方式
1、非对称MPS,其OS大多数采用主-从式OS,即OS的核心部分驻留在一个主机上,而从机只是用户程序,进程调度只在主机执行。
调度过程如下:
1、每当从机空闲的时候,使向主机发送一索求进程的信号,然后,使等待主机为它分配进程。
2、在主机中保持一个就绪队列,只要就绪队列不空,主机便从其队首3摘下一个进程分配给请求的队列。
3、从机接收到分配的进程后使运行该进程,该进程结束后从机又向主机发出请求。
优点:系统处理比较简单,因为所有的进程分配都由一台主机独自处理。
缺点:1、一旦主机出现故障。将会导致整个系统瘫痪。
2、很容易因为主机太忙,来不及处理因而形成系统瘫痪。
2、对称MPS中的进程分配方式
在SMP中,所有处理机都是相同的,可以将任何一盒进程分配任何一个处理机。
对于这种进程可以采用以下三种方式:
1、静态分配方式
该方式下,一个进程从开始执行至其完成,,都被固定到一个处理机上执行。此时,需要为每一个处理机设置一专用的就绪队列,该队列中的就绪进程先后都是被分配到该处理机上执行。
在该进程阻塞后再次就绪,也仍然挂在该就绪队列上,因而它仍在处理机上执行。感觉每个进程相当于绑定了一个CPU
优点:进程调度开销小
缺点:使各处理机忙而不均。有的进程频繁调度,有的则很闲。
2、动态分配方式
为了防止系统的多个处理机忙而不均,可以在系统中设置一个公共就绪队列,系统中所有就绪进程都被放在该队列中,分配进程时,可讲进程分配到任何处理器。
优点:消除了忙而不均
缺点:不容易实现处理机亲和度
处理器亲和度就是指绑定某一进程到CPU(这不就是静态分配方式嘛)
CPU亲和度利用了:进程上一次运行后的残余信息保留在CPU的状态中。如果下一次仍然将该进程调度到同一CPU上,就能避免缓存中未命中等对处理机不利的情况,使进程运行更高效。
CPU亲和度分为:软亲和度和硬亲和度
软亲和度主要是由操作系统来实现,操作系统的调度器会倾向于保持一个进程不会频繁在多个CPU 之间迁移。
调度器会根据各CPU的负载均衡开合理调度运行中的进程,减轻繁忙CPU 的压力
硬亲和度指用户可以通过调用系统API实现自定义进程运行在哪个CPU上,进而满足特殊性能的请求。
3、混合方式
这种就是上两种方式的综合。
这种方式下,同时使用本地队列和全局队列,本地队列是每个CPU共享的,全局队列就是所有CPU共享的
全局队列就是保证负载均衡
本地队列就是减少进程调度开销影响,保证了亲和度
除了全局队列,还有两种负载均衡的技术
1、基于推的迁移
一个特定的任务周期性检查每个处理机的负载均衡,如何发现不平衡,那么通过进程从超载处理机推到空闲或不太忙的处理机上实现负载均衡
2、基于拉的迁移
空闲处理机从一个忙的处理机上拉一些就绪进程到自己的就绪队列中。
三、进程(线程)调度方式
进程(线程)调度方式有:自调度方式、成组调度方式等
1、自调度方式
自调度方式是最简单的一种调度方式。
在系统中设置一个公共的进程或线程就绪队列,所有的处理器在空闲的时候,都可自己到改队列中取得一进程(或线程)来运行。在自调度方式中,可采取在单处理机环境下所用的调度算法,如先来先服务(FCFS)调度算法等。
自调度方式的主要优点表现为:只要公共就绪队列不空,就不会出现处理机空闲的情况,也不会出现处理机忙而不均的现象,因而有利于提高处理机的利用率。
缺点:1-只有一个就绪队列,处理机必须互斥访问改队列,这容易形成系统瓶颈。
2-通常一个应用中的多个进程属于相互合作型,采取自调度处理方式处理时,这些线程很难同时获得处理机而同时运行,使某些线程因合作线程来获得处理机运行而被阻塞,导致线程切换频繁。
2、成组调度方式
为解决线程频繁切换产生成组调度方式。该方式将一个进程中的一组线程分配到一组处理机上运行