精华内容
下载资源
问答
  • 多处理机初探

    千次阅读 2014-06-15 09:41:40
    (1)定义: 多处理机属于指令流数据流系统。它由个独立的处理机组成,每个处理机都能独立执行自己的程序。 (2)对比: 让我们对并行处理机...多处理机在硬件结构上分为紧耦合多处理机和松耦合多处理机

    (1)定义:

    多处理机属于多指令流多数据流系统。它由多个独立的处理机组成,每个处理机都能独立执行自己的程序。


    (2)对比:

    让我们对并行处理机和多处理机做一个对比。对于并行处理机并行性存在于指令内部,实现操作级的并行(单指令流多数据流)。而多处理机的并行性存在于指令外部,表现于多个任务间的并行。


    (3)硬件结构分类:

    多处理机在硬件结构上分为紧耦合多处理机和松耦合多处理机。


    (4)多处理机间的互联形式:

    • 总线形式
    • 环形互连形式
    • 交叉开关形式
    • 多端口存储器形式
    • 蠕虫穿洞寻径网络
    • 开关枢纽结构形式

    (5)多cache一致性:

    问题:每一个处理机都有自己专用的Cache,但主存中同一个信息块在多个Cache中都有时,会出现信息不一致情况。

    解决办法:
    • 解决进程迁移引起的多Cache不一致性——禁止进程迁移
    • 以硬件为基础实现多Cache的一致性——写作废法、写更新法
    • 以软件为基础实现多Cache的一致性——目录表法
    **硬件相较于软件方法通讯量大、复杂(处理机多时),但性价比低,适合于处理机数少的情况。

    (6)多处理机的并行算法:

    定义:并行算法是指可同时执行的多个进程的集合,各进程可相互作用、协调和并发操作。

    分类:
    • 按运算基本对象:数值型、非数值型
    • 按并行进程间的操作顺序:同步型、异步型、独立型
    • 按计算任务的大小:细粒度、中粒度、粗粒度

    并行计算基本设计技术:
    • 划分法:将原问题均等分解
    • 分治法:递归分解问题,直到子问题容易求解,最后合并子问题
    • 平衡树法:将输入元素作为叶节点构筑一棵平衡二叉树;然后自叶向根往返遍历
    • 倍增法
    • 流水线法
    • 破对称法

    并行算法的一般设计过程:
    • 划分
    • 通信
    • 组合
    • 映射

    (7)发展:

    • SMP(Symmetry MultiProcessors)对称多处理机,也称为SMP(Shared Memory MulptiProcessors)共享存储多处理机 。
    • MPP大规模并行处理机。
    • Cluster机群系统,利用高速网络将一组高性能工作站或高档PC机连接起来,在并行程序设计以及可视化人机交互集成开发环境支持下,统一调度,协调处理,实现高效并行处理的系统

    展开全文
  • 多处理机Cache一致性问题及解决办法

    万次阅读 2016-07-17 15:25:30
    2. 解决办法解决多处理机Cache一致性问题提出了两种解决办法:侦听一致性协议和基于目录的一致性协议。由于多数SMP(对称多处理机)结构是采用总线互连的,侦听一致性协议是基于侦听总线事务来保持Cache一致性的协议...

    1. 造成Cache一致性问题的原因

    • 出现不一致的原因有三个:共享可写的数据、进程迁移和I/O传输。

    2. 解决办法

    解决多处理机Cache一致性问题提出了两种解决办法:侦听一致性协议和基于目录的一致性协议。由于多数SMP(对称多处理机)结构是采用总线互连的,侦听一致性协议是基于侦听总线事务来保持Cache一致性的协议,所以多数产品采用侦听协议。

    • 基于总线互连的SMP是通过高速共享总线将若干个商用的微处理器(包括高速缓存)与共享存储器连接起来,因此,可以利用总线来实现高速缓存一致性。
    • 总线上的每个设备都能侦听到总线上出现的事务,当一个处理器向存储系统发出一个读/写请求时,它的本地高速缓存控制器将检查自己的状态,并采取相应的动作。
    • 所有的高速缓冲器都侦听总线上出现的事务,一旦发现与自己有关的事务,就执行相应的动作来保证高速缓存的一致性。

    侦听一致性协议是利用总线的一下两个特点来实现一致性的

    • 一是总线上的所有事务对所有的高速缓存控制器都是可见的。
    • 二是总线上所有事务以相同的次序内所有的高速缓存控制器可见。
    展开全文
  • 多处理机系统模型主要有三类:分别是共享存储器多处理机、消息传递计算机、广域分布式系统 共享存储器多处理机:获得高速的一种处理方式就是使用并行处理机。这些机器使用许多CPU, 每一个都以“通常”的速度运行...

    多处理机系统模型主要有三类:分别是共享存储器多处理机、消息传递多计算机、广域分布式系统

    • 共享存储器多处理机:获得高速的一种处理方式就是使用并行处理机。这些机器使用许多CPU, 每一个都以“通常”的速度运行,但是总体上会比单个CPU强大得多的计算能力。
    • 消息传递多处理机系统:许多CPU-存储器通过某种高速互联网络连接在一起。这种系统称为消息传递型多计算机。
    • 广域分布式系统:所有计算机通过一个广域网连接起来,如因特网构成了一个分布式系统。

    在这里插入图片描述

    8.1 多处理机

    共享存储器多处理机是有两个或更多的CPU全部共享访问的一个公用的RAM,运行在任何一个CPU上的程序都看到一个普通的(通常是分页)的虚拟地址空间。这个系统唯一特别的性质是,CPU可对存储器字写入某个值,然后读会这个字,得到一个不同的值(因为另一个CPU改写了它)。

    8.1.1 多处理机硬件

    所有多处理机都具有每个CPU可访问全部存储器的性质,而有些多处理机仍有一些其它的性质,即读出每个存储器字的速度是一样快的。这种及其称为UMA(统一存储器访问)多处理机,而另一种则称为NUMA(非一致存储器访问)多处理机。

    1. 基于总线的UMA多处理机体系结构

    通过给每个CPU添加一个高速缓存(cache),这个高速缓存可以位于CPU芯片内部,CPU附近,处理器板上或所有三种方式的组合。因为许多读操作可以在高速缓存中得到满足,总线流量被大大减少了,这样系统就能支持更多的CPU。

    在这里插入图片描述

    高速缓存一致性协议:每一个高速缓存块或者被标记为只读(此时可以存在与多个告诉缓存中),或者被标记为读写(不能出现在多个高速缓存)。如果CPU试图在一个或多个远程高速缓存中写入一个字,总线硬件检测到写,并把一个信号放到总线上通知所有其它的高速缓存。如果其他高速缓存有个"干净"的副本,也就是同存储器内容完全一样的副本,那么它们就可以丢弃该副本并让写在修改之前从存储器中取出高速缓存块。如果某些其它高速缓存中有“脏”副本(被修改的副本),它必须在处理写之前把数据写回存储器或者它通过总线直接传送到写者上。高速缓存这一套规则被称为高速缓存一致性协议。

    2.使用交叉开关的UMA处理机

    连接n个CPU到k个存储器的最简单的电路就是交叉开关。

    在这里插入图片描述

    交叉开关最好的一个特性是它是一个非阻塞网络,即不会因有些交叉点或连线已经被占据而拒绝连接。

    3.使用多级交换网络的UMA多处理机

    在这里插入图片描述

    有一种完全不同的、基于简单2X2开关的多处理机的设计。这个开关有两个输入和两个输出。到达任意一个输入线的消息可以被交换至另一个输出线上去。就我们的目标而言,消息可用由四个部分组成。Module(模块)域指明使用哪个存储器。Address(地址)域指定在模块中的地址。Opcode(操作码)给定了操作,如READ或者WRITE。最后一个可选的Value(值)域中可包含一个操作数。

    这个2X2开关有多种使用方式,用于构建大型的多级交换网络。

    在这里插入图片描述

    4. NUMA多处理机

    这种机器为所有CPu提供一个统一的地址空间,但是访问本地存储器模块快于访问远程存储器模块。因此,在NUMA机器运行的所有NUMA程序无须做任何改变,但是相同的时钟速率下其性能不如UMA机器的性能。

    所有NUMA机器都具有以下三种关键特性:

    1. 就有对所有CPU都可见的的单个地址空间。
    2. 通过LOAD和STORE指令访问远程存储器。
    3. 访问远程存储器慢于访问本地存储器。

    5.多核芯片

    将两个或者多个完整的CPU。通常称为核(Core),放到同一个芯片上(技术上来说是同一个小硅片)。双核、四核和八核的芯片已经很普及了。

    6.众核芯片

    众核芯片是指包括几十、几百甚至成千上万个核心的多核处理器。

    7.异构多核

    一些芯片会把异构GPU和一些通用的处理器核心放在一起。在一块芯片上封装了不同的处理器的系统被统称为异构多核处理器。

    8.在多核心上编程

    8.1.2 多处理机操作系统类型

    1.每个CPU都有自己的操作系统

    静态地把存储器划分成和CPU一样多的各个部分,为每个CPU提供其素有存储器以及操作系统的各自私有副本。这样的明显优点是,允许所有CPu共享操作系统的代码,而且只需要提供数据的私有副本。

    在这里插入图片描述

    2.主从多处理机

    在这种模型下,操作系统的一个副本机器数据表都在一个CPU上,所有的系统调用都重定向到CPU1上。如果有剩余的CPu时间,还可以在CPU1上运行用户进程。这种模型称为主从模型。

    当某个CPU空闲下来时,它向CPU1上的操作系统请求一个进程运行,并被分配一个进程。这个模型的问题是,如果有很多CPU,那么出CPU会称为瓶颈。

    在这里插入图片描述

    3.对称多处理机

    在存储器中有操作系统的一个副本,但任何CPU都可以运行它。在有系统调用时,进行系统调用但CPU陷入内核并处理系统调用。

    在这里插入图片描述

    当一个CPU要运行操作系统时,它必须首先获得互斥信号量。如果互斥信号量被锁住。就得等待。按照这种方式,任何CPu都可以运行操作系统,但任意时刻只有一个CPU可运行操作系统。这样就需要把操作系统分割成互不影响但临界区。每个临界区由其互斥信号量保护,所以一次只能有一个CPU运行它。

    由于这一事实,可以将操作系统分割成不同的互不影响的临界区。每个临界区由其互斥信号量保护,所以一次只有一个CPU可以执行它。采用这种方式,可以实现更多的并行操作。而某些表格,如进程表,可能恰巧被多个临界区使用。

    大多数但现代多处理机都采用这种安排。更进一步,要尽量避免死锁。

    8.1.3 多处理机同步

    我们仔细讨论一下指令TSL(Test and Set Lock)是如果实现临界区的。这条指令的做法:读出一个存储器字并把它存储到一个寄存器中。同时,它对该寄存器字写入一个1.当然这需要两个总线周期来完成存储器的读写。在单处理机中,只要该指令不被中途中断,TSL指令就如实正常运行。

    在这里插入图片描述

    TSL指令必须首先锁住总线,阻止其它CPU访问他,然后进行存储器的读写访问,再解锁总线。对总线枷锁的典型做法是,先使用通风的总线协议请求总线,然后申明已拥有某些特定的总线线路,直到两个周期全部完成。只要始终保持拥有这一特性的总线线路,那么其他CPU就不会得到总线的访问权。这个指令只有在拥有必要的线路和使用它们的协议上才能实现。

    如果正确的实现和使用TSL,就能保证互斥机制正常工作。但是这种互斥方法使用了自旋锁。因为请求的CPU只是在原地尽可能快得对锁进行循环测试

    高速缓存的实现也许能够消除总线竞争的问题,但事实并非如此。理论上,只要提出CPU已经读取了锁字(Lock word),它就可以在其高速缓存中得到一个副本。只要没有其他CPU试图使用该锁,提出请求的CPU就能够用完其高速缓存,当拥有锁的CPU写入一个0高速缓存并释放它时,搞缓存会自动将它在远程高速缓存中的所有副本失效,要求再次读取正确的值。

    问题:通常,拥有锁的CPU也需要这个锁周围的字。由于TSL指令是一个写指令(因为它修改了锁),所以它需要互斥地访问含有锁的高速缓存块。这样每一个TSL指令都使锁持有者的高速缓存中的块失效,并且为请求的CPU取一个私有的、唯一的副本。只要锁拥有者访问到该锁的邻接字,该高速缓存块就被送到其机器。这样一来,整个包含锁的高速缓冲块就会不断地在锁的拥有者和锁的请求者之间来回穿梭,导致了比单个读取一个锁字更大的总线流量。

    解决方案:

    • CPU首先进行一个存读操作来观察锁是否是空闲的,就可以实现这个目标。只有在锁是空闲的,TSL指令才去真正获取它。这种小小的变化,导致的是大多的行为变成读而不是写。
    • 减少总线流量的方式是泗洪柱面的以太网二进制指数补偿算法。不采用轮询,而将一个延迟插入轮询之间,每次延迟时间加倍。
    • 一个更好的思想是,让每个打算获得互斥信号量的CPU都拥有歌词用于测试的私有锁变量。

    在这里插入图片描述

    自旋与切换

    需要加锁的互斥信号量的CPU只是保持等待。有时对于提出请求的CPU而言,只有等待,不存在其他等待的办法。

    自旋直接浪费了CPU周期,重复地测试锁并不是搞笑的工作。不过,切换也浪费了CPU周期,因为必须保存当前线程的状态,必须获得保护就绪链表的锁,还必须选择一个线程,必须装入其状态,并且使其开始运行。

    多数研究工作是用来一种新的模型:一个未能获得互斥信号量的线程先自旋一段时间,若时间超过某个阙值,则切换。

    8.1.4 多处理机调度

    对于多线程的调度,可以分为两类:分别是用户线程的调度和内核线程的调度。

    • 用户线程的调度:,如果线程是由用户空间库维护,而对内核不可见。那么调度一如既往的基于单个进程。如果内核并不知道线程的存在,它就不能调度线程。
    • 内核线程的调度:而对内核线程,是内核选择线程作为调度单位,内核可以选择任意一个进程的任一线程。

    1.分时

    处理独立线程的最简单的算法是,为就绪线程维护一个系统级的数据结构,它可能只是一个链表,但更多但情况下可能是对应不同优先级但一个链表集合。

    在这里插入图片描述

    使用单一数据结构调度一个多处理机,存在的缺点:

    • 随着CPU数量增加引起但对调度数据结构对潜在竞争
    • 线程由于IO阻塞而因为对上下文切换对开销。

    当线程时间片用完时,也可能会发生上下文切换。

    为了避免这种情况,一些系统采用智能调度算法。获得自旋锁的进程设置一个进程范围的标志表示它目前拥有自旋锁,当释放时,就清除该标志。这样调度程序就不会停止拥有自旋锁的线程,相反,还会给更多的时间。

    为了预装缓冲块将提高高速缓存的命中率,从而提高线程的速度。有些多处理机使用了亲和调度。其基本思想是,尽量使一个线程在前一次运行过的同一个CPU上运行。创建这种请合理的一个途径是采用一种两级调度算法。

    两级调度算法:在一个线程创建的时候,他被分给了一个CPU,列如,可以基于哪个CPU在此刻有最小的负载。这种把线程分给CPU的工作在算法的顶层进行,其结果是每个CPU获得了自己的线程集。

    两级调度算法有三个优点:

    • 将负载大致平均的分配在可用的CPU上。
    • 尽可能发挥了高速缓存亲和力的优势
    • 每个CPU提供一个私有的就绪线程链表,使得对就绪线程链表的竞争见到最小,因为试图使用另一个CPU就绪线程链表的机会相对较小。

    2.空间共享

    当线程之间以某种方式彼此相关联的时候,可以使用多处理机调度方法。在多个CPU同时调度多个线程称为空间共享

    最简单的空间共享算法的基本思想:

    假设一组相关的线程时一次性创建的。在其创建的时刻,调度程序检查是否有同线程数量一样多的空闲CPU存在。如果有,每个线程获得各自的CPU并且都开始运行。如果没有足够的CPU,就没有现车开始运行,直到有足够的CPU开运行。

    8.2 多计算机

    多计算机是紧耦合CPU,不共享存储器。每台计算机中有自己的存储器。

    在这里插入图片描述

    8.2.1 多计算机硬件

    一个多计算机系统的基本节点包括一个CPU、存储器、一个网络接口、有时候还有一个硬盘。

    1. 互联技术

    在每个节点上有一个网卡,带有一根或两根网卡上接出的电缆。这些电缆或者连接到其他节点上去,或者链接到交换机上。

    在多计算机中可采用两种交换机制:

    • 存储转发包交换:每个消息首先被分解(由用户软件或网络接口进行)称为有最大长度限制的快,称为报。该交换机制称为存储转换包交换,由源节点的网络接口卡注入到第一个交换机的报组成。
    • 电路交换:它包括由第一个交换机建立的,通过所有交换机而到达目标交换机的一条路径。一旦电路建立,比特流就从源到目的地通过整个线路不停的传输。在所设计的交换机汇总,没有中间缓存,电路交换需要有一个建立阶段,它需要一点时间。但是一旦建立完成,速度就很快。在包发送结束后,该路径必须被删除。

    在这里插入图片描述

    2. 网络接口

    在多计算机中,所有节点里都有一块插卡板,它包含节点与互连网络的连接,这使得多计算机连城一体。

    很多接口板上有一个完整的CPU,可能另外还有一个或多个DMA通道。它们被称为网络处理器,并且其功能日趋强大。这种设计一位这主CPU将一些工作分给网卡。

    8.2.2 底层通信软件

    问题:如果说进出RAM的复制是性能瓶颈,那么进出内核的额外复制会将端到端的延迟加倍 ,并把吞吐量降低一半。为了避免进出RAM的复制称为系统性能瓶颈。我们有以下三种解决方案:

    1. 将接口板映射到所有需要它的进程中去,但是这样做就需要有一个机制来避免竞争。
    2. 需要某种同步机制,如注入一些同步互斥信号量。

    1. 节点至网络接口通信

    最快的方法是使用板上的DMA芯片直接将他们从RMA复制到板上,这种方法的问题上,DMA使用物理地址。而用户进程通常不知道有关的物理地址,并且独立于CPU运行,除非存大I/O MMU。

    2. 远程直接内存访问

    在上述情况下,降低数据的复制量都需要很大的代价。为了应对这个问题,一些网络接口支持远程直接内存访问技术,允许一台机器直接访问另一台机器的内存。RDMA不需要操作系统地参与,直接从应用的内存空间中读取或者写入数据。

    8.2.3 用户层通信软件

    1.发送和接受

    发送一条消息的系统调用:

    send(dest,&mptr); 
    

    接受消息的调用:

    receive(addr,&mptr)
    

    2.阻塞调用和非阻塞调用

    阻塞调用:当一个进程调用send时,它指定一个目标以及发送消息到该目标的缓冲区。当消息发送时,发送进程被阻塞(挂起)。在消息已经完成发送出去之前,不会执行跟随在调用send后面的指令。

    非阻塞调用:如果send是非阻塞的,在消息发出之前,它立即将控制返回给调用者。这种机制的

    在这里插入图片描述

    通常是由系统设计者作出在阻塞原语和非阻塞原语之间的选择。当然少数系统两种都可以使用。

    问题:非阻塞原语的性能优点被其缺点抵消了——直到消息被送出发送者才能修改消息缓冲区。进程在传输过程中重写消息的后果十分严重,更糟的是,发送进程不知道传输何时结束,所以根本不知道什么时候重用缓冲区是安全的。

    解决方案:

    1. 让内核复制消息到内核缓冲区,然后让进程继续。
    2. 当消息发送之后中断发送,告知缓冲区又可以使用了(用户级中断引发编程问题,而且可能引发竞争条件)
    3. 让缓冲区写时复制。在消息发送出去之前,若有修改,则进行复制(会引发不必要的复制)

    这样在发送端的选择是:

    1. 阻塞发送(CPU在消息传输期间空闲)
    2. 待有复制操作的非阻塞发送(CPU时间浪费在额外的复制上)。
    3. 带有中断操作的非阻塞发送(造成编程困难)。
    4. 写时复制(最终可能造成额外的复制)

    8.2.4 远程过程调用

    尽管消息传递模型提供了一种构造多计算机操作系统的便利,但是它也有不可救药的缺陷:构造所有相同通信的泛型都是输入/输出。

    远程过程调用:运行程序调用其他CPU的过程。当机器1的进程调用机器2的过程时,在机器1中的调用进程被挂起,在机器2中被调用的过程被执行。可以在参数中传递从调用者到调用者的信息,并且可以在过程的处理结果中返回消息。根本不存在对程序可见的消息传递或者I/O。这种技术成为远程过程调用(RPC)。

    在这里插入图片描述

    8.2.6 多计算机调度

    将进程分配到工作节点的工作十分重要。

    因为每个节点都拥有自己的进程,因此可以应用任何本地调度算法,但是仍有可能使用多处理机调度。

    8.2.7 负载均衡

    1.图论确定算法

    将节点分为子网,寻找子网之间流量最小的组合

    在这里插入图片描述

    2.发送者发起的分布式启发算法

    在这里插入图片描述

    当进程创建时,他就运行在创建它的节点上,除非该节点过载了。如果该节点过载了,该节点则随机选择一个节点并询问其负载情况。探查工作不会永远进行,在N次探查之后,如果没有合适的主机,算法就终止。且进程继续在原有机器上运行。

    在负载重的情况下,所有机器都会持续得对其他机器进行探查,徒劳地试图找到一台愿意接收工作的机器,这样的尝试会导致巨大的开销。

    3.接受者发起的分布式启发算法

    由接受者要求更多的工作

    8.3 分布式系统

    分布式系统的每一个节点都是一台完整的计算机,带有全部的外部设备。其次一台多计算机的所有节点一般分布在一个房间内,这样他们就可以通过专门的网络进行高速网络通信。而分布式系统中的节点则可能分散在全世界范文内。

    8.3.1 网络硬件

    网络主要有两种——覆盖一栋建筑物的LAN(局域网)和更大范围的WAN(广域网)

    LAN最重要的类型是以太网

    在这里插入图片描述

    1.以太网

    以太网有其最大电缆长度限制,以及可连接的最多的计算机台数限制。要想超过其中一个限制,就要在一座大建筑物或校园中连接多个以太网,然后用一种成为桥接器的设备把这些意外网连接起来。

    为了避免碰撞问题,现代以太网使用交换机。如果能人后较大的交换机成本,可以使每台机器都拥有自己的端口,从而消除所有的碰撞。作为一种妥协方案,每个端口上连接少量计算机还是可能的。

    2.因特网

    Internet包括了两类计算机,主机和路由器。主机有PC机,路由器是专用的交换计算机,它在许多进线中的一条线上接收进来的包,并在许多个出口线中的一条线傻姑娘按照其路径发送包。

    当一个包到达某个路由器使,该路由器抽取目的地地址并在一个表格进行查询,以找出用哪根出口线发送该包以及传送哪个路由器。路由表是高度动态的,并且随着路由器和链路维护,恢复以及通信条件的变坏在连续不断的更新。

    8.3.2 网络服务和协议

    1.网络服务

    计算机网络为使用网络的主机和进程提供服务。面向连接的服务是对电话系统的一种模仿,而无连接服务则是对邮政系统的一种模仿。

    可靠的,面向连接的服务有两种变种——消息序列和字节流

    不可靠的(意味着没有确认)无连接服务,常常称作是数据报服务。

    2. 网络协议

    用于特定计算机通信的这些规则的集合称为协议。

    所有的现代网络都使用所谓的协议栈把不同的协议一层层叠加起来。每一层解决不同的问题。

    大多数分布式系统都使用Internet 作为基础,因为这些系统使用的关键协议是IP和TCP协议。IP协议是数据报协议,发送者可以向网络上发出长达64kb的数据报并且网它们到达。TCP使用IO来提供面向连接的数据流。为了使用TCP,进程需要首先与一个远程进程建立连接。被请求的进程需要通过机器的IP地址和机器的端口号确定,而对进入的连接感兴趣的进程监听端口。这些工作完成之后,只需要把字节流放入连接。

    DNS作为一个数据库把主机的ASCII名称名称映射为对应的IP地址。

    8.3.4 基于文件系统的中间件

    分布式系统采用一个文件系统模型意味着只存在一个全局文件系统,全世界的用户都能够读写他们各自具有授权的文件。通过一个进程将数据写入文件而另一个进程把数据读出的办法可以实现通信。

    8.3.5 基于对象的中间件

    8.3.6 基于协作的中间件

    展开全文
  • 多处理机调度问题(NP)

    千次阅读 2015-05-06 11:47:56
    问题描述有 n 个独立的任务,分配给 m 个相同的处理机进行处理,每个任务所花费的时间为 t[i], i = 1..n,每个任务独立,不可分割,不可中断。问题:这些处理机要处理完这些任务,所需要花费的最短时间是多少?问题...

    问题描述

    有 n 个独立的任务,分配给 m 个相同的处理机进行处理,每个任务所花费的时间为 t[i], i = 1..n,每个任务独立,不可分割,不可中断。问题:这些处理机要处理完这些任务,所需要花费的最短时间是多少?

    问题解决

    该问题也是NP问题,也跟上篇博客中的装箱问题类似:http://blog.csdn.net/nisxiya/article/details/45533811
    装箱问题,是给定容量的箱子,问最少需要几个箱子可以满足条件。
    而多处理机调度问题,则是给定固定数量的处理机,问每个处理机都尽快处理,其中最长需要处理多长时间。类似于给定固定的箱子,但是箱子容量可以变化,问这些相同箱子的最大容量设计为多少时,可以满足条件,且最大容量要尽量小。

    最闲适应算法

    这类多处理机问题,也是还没有找到比较好的多项式解决方法,目前使用贪心算法,给出比较近似最优解的答案。
    1)对任务按照花费时间从长到短进行排序,时间复杂度为 O(n log n)
    2)将任务一一分配给 m 个机器中最闲的那个。所谓最闲,是指当前他所要处理的任务总时间和最小。如何快速找到这 m 个机器中任务量最小的那个机器呢? 使用 平衡二叉树、最小堆等都可以完好地解决,时间复杂度为 O(log m)。因此第二步中,总的时间复杂度为 O(n log m)

    由于m <= n,(否则就不用这么费力求解了,直接每个处理机任意分配一个任务即可),T(n) = O(n log n) + O(n log m) , 即 T(n) = O(n log n)了。

    例题

    有7个独立任务,有3台机器完成处理,各个任务的花费时间为{2,14,4,16,6,5,3}, 具体的求解方案如下:
    这里写图片描述

    展开全文
  • 在计算机操作系统教程(第3版)的P14上说到:一台计算机可以用个处理器或单个处理器。处理器和单处理器的计算机操作系统在设计和功能上都有较大区别。本书主要讨论单处理机的操作...那么多处理机又叫做什么呢?
  • 处理器系统进程分配处理器系统 (MPS) 的类型 紧密耦合型:共享内存和 I/O,通过高速总线连接。 松弛耦合型:独立内存和 I/O,通信线路或通道连接。 对称处理器系统 (SMPS) 和非对称处理器系统非对称处理器...
  • 通道处理机

    千次阅读 2016-05-24 18:06:24
    之前准备讲通道处理机时,发现网上的资料很少,所以我自己总结一下。  对于工作方式、工作速度、工作性质不同的外围设备,采用三种常用的三种不同的输入输出方式:程序控制输入输出方式、中断输入输出方式以及DMA...
  • 阵列处理机

    千次阅读 2014-06-14 10:12:53
    阵列处理机: 通过重复设置大量相同的处理单元PE(Processing Element),将它们按一定方式互连成阵列,在单一控制部件CU(Control Unit)控制下,对各自所分配的不同数据并行执行同一组指令规定的操作。是操作级...
  • 操作系统之处理机调度算法

    千次阅读 多人点赞 2018-06-21 17:26:21
    道程序系统中,调度实际上是一种资源分配,即对处理机资源的分配;处理机调度算法是指根据处理机分配策略所规定的处理机分配方法; 处理机调度 处理机调度的层次 高级调度 高级调度又称为长程调度或者...
  • 操作系统8————处理机调度

    千次阅读 2019-02-02 17:29:01
    道程序系统中,调度实质是一种资源分配,处理就调度算法是指根据处理机分配策略所规定的处理机分配算法。一个作业从获得处理机执行到作业运行完毕,可能会经历多级处理机调度。下面介绍处理机的层次。 1....
  • 所谓处理机的态,又称处理机的特权级,就是处理机当前处于何种状态,正在执行哪类程序。 操作系统的管理程序和用户程序在处理机上执行时,二者的职责不同,权限也不同,为了保护操作系统,所以要区分处理机的态。...
  • 操作系统之处理机管理

    千次阅读 热门讨论 2015-10-05 20:20:57
    处理机重点研究进程之间的并发特性,以及进程之间相互合作与资源竞争产生的问题。 进程的组成  它由程序、数据、进程控制块(Process Control Block,PCB)  程序控制块:进程存在的唯一标识。其主要内容包括: ...
  • 操作系统处理机调度

    千次阅读 2018-05-19 11:15:41
    一般来说,处理机调度最常用的是低级调度,也称为进程调度,进程调度的主要功能是根据某种算法,决定就绪队列中的哪个进程获得处理机。高级调度又称为作业调度,其主要功能是根据某种算法决定将外存上处于后备队列中...
  • 处理机调度与死锁

    千次阅读 2011-09-25 10:14:10
    处理机调度与死锁  处理机调度的层次 高级调度 高级调度又称为作业调度或长程调度,其主要功能是根据某种算法,把外存上处于后备队列中的那些作业调入内存,也就是说,它的调度对象...
  • 处理机和处理器的区别

    千次阅读 2018-07-08 20:48:06
    处理机处理机是计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件。程序是描述处理机完成某项任务的指令序列。指令则是处理机能直接解释、执行的信息单位。处理机包括中央处理器(cpu),主存储器,...
  • 处理机和cpu的区别

    千次阅读 多人点赞 2017-02-13 11:55:42
    处理机 处理机是计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件。程序是描述处理机完成某项任务的指令序列。指令则是处理机能直接解释、执行的信息单位。处理机包括中央处理器(cpu),主存储器,...
  • 处理机调度的三个层次

    千次阅读 2020-04-30 10:02:33
    道程序环境中,内存中存在个进程,其数目通常是多于处理机数目的。不论是出于提高处理机利用率、优先执行某个进程、提高系统吞吐量还是作业周转时间,我们都需要能动态的将处理机分配给某个进程(就绪态)。...
  • 操作系统第三章处理机调度与死锁

    千次阅读 2018-07-05 21:26:54
    第三章:处理机调度与死锁 处理机调度算法的目标 处理机调度算法的共同目标 资源利用率:CPU的利用率=CPU有效工作时间/(CPU有效工作时间+CPU空闲等待时间) 公平性 平衡性 策略强制执行 批处理系统的目标 ...
  • 软件设计师4--OS处理机管理

    千次阅读 2018-11-16 12:47:26
    处理机管理 处理机管理也称进程管理。在道批处理操作系统和分时操作系统中有个并发执行的进程。进程是资源分配和独立运行的基本单位。处理机管理研究的是进程之间的并发性,以及进程之间的相互合作与资源竞争...
  • 处理机的高级、中级和低级调度

    万次阅读 2016-03-03 20:54:54
    处理机调度是为了解决个进程或线程争夺CPU的问题。在道程序系统中,通常会有个进程或线程同时竞争CPU,只要有两个及以上的进程或线程处于就绪状态就有可能出现这样的情况。当可用的CPU个数少于进程和线程数时...
  • 操作系统算法模拟实例之单处理机系统进程调度 1.实验目的 在道程序或任务系统中,系统回时处于就绪态的进程有若干个,为使系统中 的各进程能有条不素地运行,必须选择某种调度策略,以选择一进程占用处理机。 ...
  • 处理机调度算法C语言实现

    千次阅读 多人点赞 2017-11-16 23:22:57
    /* created by herbert on 10 Nov */#include #include #include #include #include using namespace std;//进程有三种状态,这里增加一种,表示虽然输入,但还没有到达进入系统时刻 typedef en
  • 处理机调度的层次

    千次阅读 2020-10-13 22:04:31
    1.高级调度:主要用于道批处理系统中,又称长作业调度,调度队像是作业,根据某种算法决定将后备队列中的哪几个作业调入内存。 2.低级调度:操作系统中最基本的一种调度方式(频率最高),在道批处理、分时和...
  • 处理机调度算法总结

    千次阅读 2017-04-23 20:42:40
    1. 先来先服务调度算法 先来先服务(FCFS)调度算法 思想:每次调度都是从后背作业队列中选择一个获...该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。 利弊:适合长作业和CPU繁忙型作业(需要大量的CPU时间
  • 处理机调度的概念和层次

    千次阅读 2020-02-11 11:34:37
    1. 知识总览 处理机调度 (1)基本概念 (2)三个层次 高级调度(作业调度) 中级调度(内存调度) 低级调度(进程调度) (3)三层调度的联系、对比 ...在道程序系统中,进程的数量往往是多于处理机...
  • 处理机调度级别

    千次阅读 2011-01-04 23:11:00
    <br />从调度所实现的功能来分,处理机调度可分为三级: 1、高级调度(作业调度):其主要功能是根据一定的算法,从输入的一批作业中选出若干个作业,分配必要的资源。当作业被新建时,系统会首先执行...
  • 指令级高度并行的超级处理机

    千次阅读 2014-06-16 20:29:58
    在一个时钟周期内能够同时发射条指令的处理机称为超标量处理机。 超流水线处理机: 在一个时钟周期内能够分时发射条指令的处理机称为超流水线处理机。 下图所示的是每个时钟周期分时发送3条指令的超...
  • 操作系统处理机调度算法模拟实现

    千次阅读 2017-11-25 18:53:55
    操作系统处理机调度算法模拟实现
  • 道程序环境下,进程数目往往多于处理机数目,致使它们竞争使用处理机。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之执行。分配处理机的任务是由进程调度程序完成的。它是操作系统...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,930,310
精华内容 772,124
关键字:

多处理机