精华内容
下载资源
问答
  • 2016-07-17 15:25:30

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

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

    2. 解决办法

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

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

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

    • 一是总线上的所有事务对所有的高速缓存控制器都是可见的。
    • 二是总线上所有事务以相同的次序内所有的高速缓存控制器可见。
    更多相关内容
  • 多处理机调度问题(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}, 具体的求解方案如下:
    这里写图片描述

    展开全文
  • 操作系统实验——处理机调度模拟

    千次阅读 2020-06-24 10:55:14
    操作系统实验——处理机调度模拟(C++) 一、实验目的   本实验模拟实现处理机调度及内存回收机制,以对处理机调度的工作原理以及内存管理的工作过程进行更深的了解。 二、实验基本思想   因为涉及到需要设计程序...

    操作系统实验——处理机调度模拟(C++)

    一、实验目的

      本实验模拟实现处理机调度及内存回收机制,以对处理机调度的工作原理以及内存管理的工作过程进行更深的了解。

    二、实验基本思想

      实验采用C++与Qt来实现处理机的调度模拟。

    需求分析

    本次处理机调度模拟程序主要分为以下模块:
    ① 输入模块:在任意时间片可以添加新进程。
    ② 挂起模块:在任意时间片可以对内存中进程进行挂起,转移至外存。
    ③ 运行模块:程序核心模块,从当前就绪队列中选取优先级最高的进程运行。当就绪队列存在空闲时从后背队列/解挂程序中调取适当程序加入就绪队列;当有进程运行完成时,需释放内存,同时调取合适进程加入就绪队列。
    ④ 显示模块:界面设计,显示当前各进程信息。
    对于进程运行状态,分别设置四个队列进行存储:
    ReadyQueue:就绪队列,已分配内存进程。
    BackQueue:后备队列,由于道数限制等原因未加入内存进程。
    SuspendQueue:挂起队列,存储挂起进程,位于外存。
    UnsuspendQueue:解挂对接,进程已解挂,但由于道数限制等原因未加入就绪队列。
    此外利用freeMemory记录空闲页表,totalMemory数组模拟内存空间。

    总体设计

    流程图
    在这里插入图片描述

    三、具体实现

    (1)基本数据结构

    1、PCB类,表示进程

    class PCB {
    public:
    	int pid;					//进程pid
    	int time;					//运行时间
    	int priority;				//优先级
    	string state;				//进程状态
    	int base;					//分配内存基址
    	int memory;					//占用内存
    	PCB(int p=0,int t=0,int pri=0,int m=0):
    		pid(p),time(t),priority(pri),state("后备状态"),base(-1),memory(m){}
    	string output();				//带基址输出,用于进程在内存中的信息显示
    	string output2();			//无基址输出,用于进程不在内存中的信息显示
    };
    

    2、 处理机运行类,用于模拟处理机对进程的调度运行

    class QtWidgetsApplication : public QMainWindow
    {
        Q_OBJECT
    public:
        QtWidgetsApplication(QWidget *parent = Q_NULLPTR);
        int checkMemory(PCB&);				//检查是否有足够内存满足当前进程,有则返回空闲表序号
        void outputTextBrowser();			//进程详细信息输出
        void refreshFreeMemory(PCB&);		//刷新空闲页表
        void paintEvent(QPaintEvent*);		//刷新示意图区域
    private slots:
    	void InitWidget();					//窗口清洗和按键激活
    	void activeInputButton();			//激活InputButton按钮
        void NextClock();					//运行,进入下一时间片
        void Input();						//进程输入
        void SuspendButton();				//进程挂起
        void UnsuspendButton();				//进程解挂
        void Single_processor();			//单处理机
        void Dual_processor();				//双处理机
    private:
        Ui::QtWidgetsApplicationClass ui;
        int current_time=0;
        int readyLimit = 5;					//就绪队列道数限制
        int proSign=0;						//处理机选择
        int nextSign = 0;					//表示已经开始执行调度
        QVector<int> TotalMemory;			//模拟内存,限制100,默认OS已占据0~20(其实实验中这个不设置也没什么关系,只要空闲表就够了)
        QVector<QVector<int>> freeMemory;	//空闲页表,[i][0]基址,[i][1]长度
        QVector<PCB> ReadyQueue;			//就绪队列,限制5
        QVector<PCB> BackQueue;				//后备队列
        QVector<PCB> SuspendQueue;			//挂起队列
        QVector<PCB> UnsuspendQueue;		//用于记录已解挂进程
    };
    

    (2)输入函数(Input)设计

      基本思路:流程图
    输入函数流程图

    (3)运行函数(NextClock)设计

      基本思路:程序框图
    在这里插入图片描述

    (4)进程挂起函数(SuspendButton)

      基本思路:流程图
    在这里插入图片描述

    (5)进程解挂函数(UnsuspendButton)

      流程图
    在这里插入图片描述

    (6)内存检测函数(checkMemory)

    流程图
    在这里插入图片描述

    (7)内存释放函数(refreshFreeMemory)

    基本思路:通过返还的基址,找到在空闲表中的位置,并判断是否会与上下空闲段相连,相连则合并。
    流程图
    在这里插入图片描述
    剩下函数的流程都比较简单,就不画流程图了。

    四、运行结果

    运行界面如下:
    在这里插入图片描述

    五、代码链接

    如有问题,望指出。
    代码地址:
    https://download.csdn.net/download/qq_44117953/12547278
    网盘自提: 链接
    提取码: ntd8

    展开全文
  • 操作系统8————处理机调度

    千次阅读 2019-02-02 17:29:01
    道程序系统中,调度实质是一种资源分配,处理就调度算法是指根据处理机分配策略所规定的处理机分配算法。一个作业从获得处理机执行到作业运行完毕,可能会经历多级处理机调度。下面介绍处理机的层次。 1....

    操作系统8————处理机调度

    一. 目录

    二. 处理机调度的层次

    在多道程序系统中,调度实质是一种资源分配,处理就调度算法是指根据处理机分配策略所规定的处理机分配算法。一个作业从获得处理机执行到作业运行完毕,可能会经历多级处理机调度。下面介绍处理机的层次。

    1.高级调度

    高级调度又称为长程调度或者作业调度,它的调度对象是作业。主要功能是根据某种算法,决定将外存上处于后备队列中那几个作业调入内存,为它们创建进程,分配必要的资源,并将它们放入就绪队列。高级调度主要用于多道批处理系统,而在分时和实时系统中不设置高级调度。作用调度的频率很低,周期很长,大于几分钟一次。

    2.低级调度

    低级调度有称进程调度或者短程调度,它的调度对象是进程。其主要功能是,根据某种算法,决定就绪队列中的那个进程获得处理机。并由分派程序将处理机分派给选择的进程。进程调度这是一种最基本的调度,在多道批处理,实时和分时三种类型的OS中,都必须配置这级调度。进程调度的频率很高,周期很短,在分时系统中大概仅10~100nm.

    3.中级调度

    中机调度又称为内存调度,引入中级调度的主要目的是,提高内存利用率和系统吞吐量。中级调度的作用就是讲暂时不能运行的进程,调至外存等待(挂起转台),和将外存上已经满足条件的就绪进程在调入内存中。内存调度的频率和周期处于,作业调度和内存调度之间。

    三. 处理机调度的目标

    1.处理机调度算法的共同目标

    a.资源利用率:为了提高资源的利用率,应使系统中的处理机和其他所有资源尽可能保持忙碌状态。

    **b.公平性:**公平性是指应使诸进程都获得合理的CPU时间,不会发生进程饥饿现象。但公平是相对的,对于相同类型的进程应获得相同的服务,对于不同类型的进程,由于其紧急程度和重要性不同,提供不同的服务。

    **c.平衡性:**为使系统中CPU和各种外部设备都能经常处于忙碌状态,调度算法应保存系统资源使用的平衡性。

    d.策略强制执行: 对所指定的策略其中也包括安全策略,只要需要,就必须提供。

    2.批处理系统的目标

    a.平均周转时间短:

    • 周转时间是指,从作业被提交给系统开始,到作业完成时间这段时间的间隔。它包括:作业在外存后备队列上等待调度的时间,进程在就绪队列等待的调度的时间,进程在cpu上执行的时间,以及进程等待I/O操作完成的时间。
    • 平均周转时间:$T = \frac{1}{n}[ \sum_{i=1} ^ {n} T_i] $
    • 平均带权周转时间:带权周转时间,即作业周转时间 T i T_i Ti与系统提供服务的时间 T s T_s Ts时间之比。平均带权周转时间$W = \frac{1}{n}[ \sum_{i=1} ^ {n} \frac{T_i}{T_s}] $

    b.系统吞吐量高: 吞吐量是指单位时间内系统完成的作业数,如果单纯为了获得高的系统吞吐量,那么就应该尽可能选择短作业运行。
    c.处理机利用率高: 如果单纯为获得处理机利用率高,那么应该尽可能选择长作业运行。

    3.分时系统的目标

    a.相应时间快: 响应时间是指,是从用户通过键盘提交一个请求开始,直到屏幕上显示处理结果为止那一段时间。
    b.均衡性: 用户对于响应时间的要求并非完全相同,用户对于简单的任务要求响应时间短,复杂任务时间允许较长。

    4. 实时系统

    **a.截止时间的保证:**截止时间是指:某任务必须开始执行的最迟时间,或者必须完成的最初时间。对于严格的实时系统,其调度方式和调度算法必须要保证这一点。
    **b. 可预测性:**在实时系统中,这一点非常重要,。

    四. 作业

    1. 作业

    作业(Job): 作业是一个比系统更广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存。

    2. 作业步

    作业步(Job Step):在作业运行期间,每个作业都必须经过若干相互独立又相互关联的顺序加工步骤才能得到结果。我们把其中每一步称为一个作业步。例如,一个典型的作业步可以分为:“编译”作业步,“链接装配”作业步,和“运行”作业步。

    3. 作业控制块(JCB)

    和进程线程类似,作业中也包含一个作业控制块(JCB)。通常JCB包含:作业标识,用户名称,用户账号,作业类型,作业专业,调度信息,资源需求,资源使用情况。

    4. 作业运行的阶段和状态

    作业从进入系统到运行,通常要经历收容,运行和完成阶段,相应的也就有了“收容状态” “运行状态” “完成状态”。

    a.收容状态: 操作员把用户提交的作业通过某种方式或SPOOLing系统输入到硬盘上,在为该作业建立JCB,并把它放入作业后备对列中。

    **b.运行状态:**当作业被作业调度选中后,边为它分配必要的资源和建立进程,并把他放入就绪队列。

    c.完成状态: 当作业运行完成,或发生异常情况而提前结束时,作业便进入了完成阶段。

    五. 作业调度

    1. 作业调度的目标

    作业调度的主要任务就是根据JCB中的信息,检查系统中的资源能否满足作业队资源的要求,以及按照一定的调度算法,从外存的后备对列选取某些作业调入内存。在每次执行作业调度时,都需要做出以下两个决定:
    **a.接纳多少个作业:**接纳多少作业取决于多道程序度。而多道程序度取决于:计算机系统规模,运行速度,作业大小,以及能否获得较好的系统性能.
    b.接纳哪些作业: 选择哪些作业取决于,作业调度采用哪种算法,常见的算法如下

    2. 先来先服务(FCFS)

    先来先服务算法,既可以用于作业调度,也可以用于进程调度。当作业调度中采取该算法时,系统将按照作业到达的先后次序来进行调度。

    在系统调度中采用FCFS算法时,每次调度是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或者阻塞时,进程调度程序才会将处理机分配给其他进程。

    FCFS算法在单处理机系统中以及很少作为主调度算法,但经常把它和其他调度算法结合使用,形成一种更为有效的调度算法。例如,可以在系统中按进程的优先级设置多个队列,每一个优先级一个队列,其中每一个队列的调度都基于FCFS。

    3. 短作业优先(SJF)

    SJF算法是以作业的短来计算优先级,作业越短,其优先级越高。作业的长短是以作业所要求的时间来衡量的。SJF也可以分别用于作业调度和进程调度。但用于进程调度时优于作业调度。

    缺点:
    SJF相比FCFS算法,有很大的改进,但依然有以下缺点

    • 必须知道作业的运行时间
    • 对于长作业非常不利,很可能出现饥饿现象。
    • 无法进行人机
    • 没有考虑作的紧迫程度,不能保证紧迫性的作用能够得到及时的处理。

    4. 优先级调度算法(PSA)

    优先级调度算法也是既可以用于作业调度,也可以用于进程调度。FSFC和SJF算法都无法使紧迫性的作业得到尽快的处理,而PSA正是基于作业的紧迫程度,由外部赋予的作业优先级,进行作业调度。

    5. 高响应比优先算法(HRRN)

    FSFC算法值考虑的作业的等待时间,SJF只考虑的作业的需要运行时间。而HRRN则既考虑了作业的等待时间,又考虑的作业的紧迫时间,从而改善了处理机调度的性能。

    HRRN为每一个作业引入了一个动态优先权。该优先权的变化规律如下:
    优 先 权 = 等 待 时 间 + 要 求 服 务 的 时 间 要 求 服 务 的 时 间 优先权= \frac{等待时间+要求服务的时间}{要求服务的时间} =+

    同时等待时间+要求服务的时间 = 相应时间。所以优先权也可以表示为
    优 先 权 = R p = 响 应 时 间 要 求 服 务 的 时 间 优先权=R_p= \frac{响应时间}{要求服务的时间} =Rp=

    从上式可以看出

    • 如果作业的等待时间相同,这要求服务的时间越短,则优先权越大。此时类似于SJF算法。
    • 当要求服务的时间相同时,作业的优先权又决定于其等待时间。此时类似于FCFS算法。
    • 对于长作业的优先权,可以随等待时间的增加而提高。当其等待时间足够长,也可以获得处理机。避免出现饥饿现象。

    六. 进程调度

    1. 进程调度的任务

    进程调度的任务有以下几点

    • 保存处理机的现场信息。
    • 按照某种算法选取线程。
    • 把处理机分配给进程。

    2. 进程调度的机制

    为了实现进程调度,在进程调度中应该有以下三个部分:
    这里写图片描述

    • 排队器:为了提高进程调度的效率。应事先将系统中的所有就绪进程按照一定策略排成一个或多个队列,以便调度程序能最快的找到它。以后每当有一个进程转换为就绪状态时,排队器便把它插入到相应的就绪队列中。
    • 分派器:分派器依据调度程序所选定的进程,将其从就绪队列取出,然后进行从分派器到新选的进程间的上下文切换,将处理机分配给新选出的进程。
    • 上下文切换器:在对处理机进行切换时,会发生两对上下文的切换操作。①第一对上下文切换时,OS保存当前进程的上下文,即把当前进程的处理机寄存器内部保存到该进程的PCB中,再装入分派程序的上下文。以便分派程序运行。②第二对上下文切换是移出分派程序的上下文。把新选进程的CPU现场信息装入到处理机的各个相应寄存器中,以便新选进程运行。

    3. 进程调度方法

    进程调度的方法大概分为非抢占式和抢占式。
    a.非抢占式
    采用这种调度方式时,一旦把处理机分配给某进程后,就一直让他运行下去,绝不会因为时钟中断或者其他原因抢占当前处理机,直到该进程完成或者阻塞,才把处理机分配给其他进程。这种方式的好处就是实现简单,系统开销小,适用于大部分法批处理系统。但是无法适应于分时系统和大部分的实数系统。

    这种方式下,会引起调度的原因:

    • 正在执行的进程执行完毕,或者因为某些事无法继续执行。
    • 执行的进程提出I/O请求,而暂停执行
    • 在进程通信或者同步过程中,执行了某种原语操作,比如Block原语。

    b. 抢占式
    这种调度方式允调度程序根据某种原则,去暂停某个正在执行的进程,将已经分给该进程的处理机重新分给另一进程。广泛采用抢占式,是因为对于批处理系统,可以防止一个长进程长时间的占用处理机,以确保处理机能够为所有进程提供更为公平的服务。 在分时系统中,只有采用抢占式才能实现人机交互,在实时系统中,抢占式能满足实时任务的要求。但同时抢占式比较复杂,所需要的系统开销也比较大。

    “抢占式”抢占时也需要按照一定的原则,主要原则有:

    • 优先权原则,指允许优先级高的新到进程抢占当前长进程的处理机,即新进进程到达时,如果他的优先度比正在执行的进程优先度高,则调度程序剥夺当前进程的处理机。
    • 短进程优先,指允许新到的短进程抢占当前的长进程的处理机,即新进 进程到达时,如果他的比正在执行的(尚需运行)时间明显短,则调度程序剥夺当前进程的处理机。
    • 时间片原则, 即各进程按时间片轮转运行时,当正在执行的进程的一个时间片段用完后,变停止该进程的执行,而重新进行调度。

    4. 轮转调度算法(RR)

    在分时系统中,最简单也是教常用的是基于时间片的轮转算法(RR).该算法采用了非常公平的处理机分配方法,即让每个进程每次仅运行一个时间片。如果就绪队列上有n个进程,则每个进程大约获得1/n的处理机时间。

    a.轮转法的基本原理
    在RR中,系统将所有的就绪进程按照FCFS策略排成一个就绪队列,系统可设置每个一定时间便产生一次中断, 去激活进程调度进行激活,把CPU分配队首进程,并令其执行一个时间片。运行完毕后,又把处理机分配给就绪队列的新的队首。
    b.进程切换时机
    在RR算法中,切换时机有两种情况:

    • 若一个时间片未用完,正在运行的进程便已完成,就立即激活调度进程,将它从就绪队列删除,调度就绪队列的队首进程。
    • 在一个时间片用完时,计时器中断处理程序被激活。如果进程尚未运行完成,调度程序将它送往就绪队列的末尾。
      c.时间片大小的确定
      在RR算法中,时间片的大小对西邮有很大影响

    下图是时间片略大于典型交互的时间
    这里写图片描述
    下图是时间片小于典型交互的时间
    这里写图片描述
    下图是时间片分别为q=1和q=4对于平均周转时间的影响
    这里写图片描述

    5. 优先级调度算法

    a.优先级调度算法的类型
    优先级进程调度算法,是把处理机分配给就绪队列中优先级最高的进程。同时又可以进一步把该算法分为:

    • 非抢占式优先级调度算法
    • 抢占式优先级调度算法

    b.优先级类型

    • 静态优先级。静态优先级是在创建进程时确定,在进程的整个运行时间不变,优先级的大小确定的依据有:①进程类型②进程对资源的需求。③用户要求
    • 动态优先级。动态优先级是指在进程创建之初,先赋予其一个优先级,然后其值随进程的推进或者等待时间的增加而改变,以获得更好的调度性能。

    6. 多队列调度算法

    之前所述的各种调度算法,在应用于进程调度时,由于系统中仅设置一个进程的就绪队列,即低级调度的算法是单一的,固定的,无法满足系统中不同用户对进程调度策略的不同要求,在多处理机系统中,这种单一调度策略实现机制缺点更加明显。因此多级队列算法能够在一定程度上弥补这一缺点。

    多级队列算法将进程就绪队列拆分成若干个,不同的就绪队列采用不同的调度算算法,所以可以很好的满足不同用户对进程调度策略的不同需求,同时也可以满足多处理机系统的需求。

    7. 多级反馈队列调度算法

    多级反馈队列不同与之前的调度算法,他可以不需确定各进程运行的时间,还可以较好的满足各种类型进程的需求。
    调度机制
    多级反馈进程调度算法机制可以描述如下

    • 设置多个就绪队列,如下图
      这里写图片描述
    • 每个队列都采用FCFS算法,当新进程进入内存后,首先将它放在第一队列末尾,按照FCFS原则等待调度,当轮到该进程执行时,如果能在该时间片内完成,便可撤离系统。否则,调度程序便把他转入第二队列末尾等待。如果他在第二队列运行一个时间片认为完成,在一次放入第三队列…以此类推。当进程最后被降到第n队列后,在第n队列中便采用RR方式运行。
    • 安照队列优先级调度,调度程序首先调度最高优先级队列中的诸进程,仅当第一队列空闲时才调度第二队列中的进程运行。换而言之,仅当第1~(i-1)队列均为空时,才会调度第i队列中的进程运行,如果处理机正在为第i队列中的某进程服务时,有新进程进入较高级的队列,此时必须把正在运行的进程放回第i队列的末尾,而把处理机分配给新到的高优先级队列。

    8. 保证调度算法

    保证调度算法是另一种类型的调度算法,它想用户所作出的保证并不是优先运行,而是明确的性能保证,该算法可以做到调度的公平性。一种比较容易的性能保证是处理机的公平性,如果在系统中有n个类型相同的进程同时运行,为了公平期间,每个进程都获得相同的处理机时间1/n。

    在实施保证调度算法时,系统必须具备这样一些功能:

    • 跟踪计算每个进程自创建以来已经执行的处理时间。
    • 计算每个进程应获得的处理机时间,即自创建以来的时间除以n。
    • 计算进程获得处理机时间的比率,即进程实际执行的处理时间和应获得的处理机时间之比。
    • 比较各进程获得处理机时间的比率。如进程A的比率最低,为0.5,而进程B的比率为0.8,进程C的比率为1.2等。
    • 调度程序应选择比率最小的进程将处理机分配给它,并让该进程一直运行,直到超过最接近它的进程比率为止。

    9. 公平分享调度算法

    分配给每个进程相同的处理机时间,显然,这对诸进程而言,是体现了一定程度的公平,但如果各个用户所拥有的进程数不同,就会发生对用户的不公平问题。 在该算法中,调度的公平性是体针对于用户而言。使所有的用户获得相同的处理机时间,或要求的时间比例。

    七. 实时调度

    · 在实时系统中,可能存在着两类不同性质的实时任务,即HRT任务和SRT任务,它们都联系着一个截止时间。为保证系统能正常工作,实时调度必须能满足实时任务对截止时间的要求。为此,实现实时调度应具备一定的条件。

    1. 实现实时调度的基本条件

    a.提供必要的信息
    为了实现实时调度,系统应向调度程序提供以下信息:

    • 就绪时间,是指任务成为就绪状态的起始时间。
    • 开始截至时间和完成截至时间
    • 处理时间,即一个任务从开始执行到完成所需要的程序
    • 资源要求,任务执行是所需要的一组
    • 优先级,如果某任务的开始指向截至时间错过,势必引起故障,则应为该任务赋予“绝对”的优先级;如果其开始截至时间的错过,对任务的继续运行无重大影响,则赋予“相当”优先级。

    b.系统处理能力强
    在实时系统中,若处理机的处理能力不够强,则有可能因处理机忙不过,而致使某些实时任务不能得到及时处理,从而导致发生难以预料的后果。假定系统中有m个周期性的硬实时任务HRT,它们的处理时间可表示为Ci,周期时间表示为Pi,则在单处理机情况下,必须满足下面的限制条件系统才是可调度的:
    ∑ i = 1 n C i P i ≤ 1 \sum_{i=1} ^ {n} \frac{C_i}{P_i} \leq 1 i=1nPiCi1

    提高系统处理能力的途径有二:一是采用单处理机系统,但须增强其处理能力,以显著地减少对每一个任务的处理时间;二是采用多处理机系统。假定系统中的处理机数为N,则应将上述的限制条件改为:
    ∑ i = 1 n C i P i ≤ N \sum_{i=1} ^ {n} \frac{C_i}{P_i} \leq N i=1nPiCiN

    c.采用抢占式调度机制
      在含有HRT任务的实时系统中,广泛采用抢占机制。这样便可满足HRT任务对截止时间的要求。但这种调度机制比较复杂。 对于一些小的实时系统,如果能够预知任务法开始截止时间,则对于实时任务的调度可以采用非抢占式调度。
    d.具有快速切换的机制
    为保证硬实时任务能及时运行,在系统中还应具有快速切换机制,使之能进行任务的快速切换。该机制应具有如下两方面的能力:

    • 对中断的快速响应能力。对紧迫的外部事件请求中断能及时响应,要求系统具有快速硬件中断机构,还应使禁止中断的时间间隔尽量短,以免耽误时机(其它紧迫任务)。
    • 快速的任务分派能力。为了提高分派程序进行任务切换时的速度,应使系统中的每个运行功能单位适当的小,以减少任务切换的时间开销。

    2. 实时调度算法的分类

    实时调度算法按照调度方式可分为:
    a.抢占式

    • 非抢占式轮转调度算法(同上)
    • 非抢占式调度优先算法(同上)

    b.非抢占式
    可根据抢占发生时间的不同而进一步分成以下两种调度算法:

    • 基于时钟中断的抢占式优先级调度算法。
    • 立即抢占(Immediate Preemption)的优先级调度算法。
      这里写图片描述

    3. 最早截止时间优先算法(EDF)

    该算法是根据任务的截止时间确定任务的优先级,任务的截止时间越早,其优先级越高,具有最高优先级的排在队首。EDF既可以用于抢占式也可以用于非抢占式。

    a.非抢占式调度方法用于非周期实时任务
    这里写图片描述

    b.抢占式用于周期实时任务
    下图有两个周期任务,任务A和任务B的周期时间分别为20 ms和50 ms,每个周期的处理时间分别为10 ms和25 ms。
    这里写图片描述

    4. 最低松弛度优先算法(LLF)

    该算法在确定任务的优先级时,根据的是任务的紧急(或松弛)程度。任务紧急程度愈高,赋予该任务的优先级就愈高,以使之优先执行。 该方式主要用可抢占式调度。

    假如在一个实时系统中有两个周期性实时任务A和B,任务A要求每20 ms执行一次,执行时间为10 ms,任务B要求每50 ms执行一次,执行时间为25 ms。由此可知,任务A和B每次必须完成的时间分别为:A1、A2、A3、…和B1、B2、B3、…,如下图
    这里写图片描述

    利用ELLF算法进行调度的情况:
    这里写图片描述

    5. 优先级倒置

    a.优先级倒置是什么
    系统中存在着影响进程运行的资源而可能产生“优先级倒置”的现象,即高优先级进程(或线程)被低优先级进程(或线程)延迟或阻塞。

    b.优先级倒置的解决
    一种较简单的解决方法就是,规定进程进入临界区后,该进程占用的处理机不允许被抢占

    另一个比较实用的方法建立在动态优先级基础的基础上:该方法规定,当高优先级进程要进入临界区时,去使用临界资源R时,如果已有一个低优先级进程正在使用该资源。此时高优先进程被阻塞,另一方面低优先级进程继承高优先进程的优先级,直到低优先进程退出临界区。

    八. 参考资料

    《操作系统第四版》

    展开全文
  • 设计一个按照优先级调度算法实现处理机调度的程序 一、优先级调度算法实现处理机调度的程序设计提示如下: ( 1 ) 假设系统有n个进程,每个进程用一个进程控制块(PCB)来代表。进程控制块的格式如下表所示,且参数...
  • 处理机调度的层次

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

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

    千次阅读 2014-06-14 10:12:53
    阵列处理机: 通过重复设置大量相同的处理单元PE(Processing Element),将它们按一定方式互连成阵列,在单一控制部件CU(Control Unit)控制下,对各自所分配的不同数据并行执行同一组指令规定的操作。是操作级...
  • 处理机调度算法1 实验内容及要求2 实验环境3 实验设计3.1 基本思想3.2 数据结构4 源代码5 运行结果 1 实验内容及要求 1、模拟先来先服务算法(FCFS)、短作业优先算法(SJF)和高响应比优先算法(HRRN); 2、能输入...
  • 操作系统处理机调度

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

    千次阅读 2020-04-30 10:02:33
    道程序环境中,内存中存在个进程,其数目通常是多于处理机数目的。不论是出于提高处理机利用率、优先执行某个进程、提高系统吞吐量还是作业周转时间,我们都需要能动态的将处理机分配给某个进程(就绪态)。...
  • 微处理器、微计算机、微处理机、CPU、单片机、嵌入式处理器它们分别是不同的概念,区别很大。具体来说:一、微处理器,是指由一片或少数几片大规模集成电路组成的中央处理器。这些电路有着执行控制部件以及算术逻辑...
  • 计算机体系结构-第四章-向量处理机

    千次阅读 2018-09-03 22:39:50
    向量处理机的实质是用一条指令(向量指令)发起对整个向量中的所有元素的访存操作并流水化处理这些元素(因为他们需要进行的操作相同) 对于标量处理机每条指令只处理一个元素 向量的处理方式 纵向 纵横向 ...
  • 处理机调度算法总结

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

    万次阅读 2019-03-30 10:24:59
    处理机调度层次: 1.高级调度:它调度的对象是作业。其主要功能是根据某种算法,决定讲外存上处于后备队列中的哪几个作业调入内存,为它们创建进程,分配必要的资源,并将它们放入就绪队列。 2.低级调度:它调度...
  • 处理机和cpu的区别

    万次阅读 多人点赞 2017-02-13 11:55:42
    处理机 处理机是计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件。程序是描述处理机完成某项任务的指令序列。指令则是处理机能直接解释、执行的信息单位。处理机包括中央处理器(cpu),主存储器,...
  • 道程序环境下,进程数目往往多于处理机数目,致使它们竞争使用处理机。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之执行。分配处理机的任务是由进程调度程序完成的。它是操作系统...
  • 调度层次 1.高级调度(High Level Scheduling)高级调度又称长程调度或作业调度,它的调度对象是作业。主要功能是根据某种算法,决定将外存上处于...其主要功能是,根据某种算法,决定就绪队列中的哪个进程应获得处理机
  • 多机调度问题

    千次阅读 2018-04-25 23:00:53
    问题描述:设有n个独立的作业{1, 2, …, n}, 由m台相同的机器进行加工处理. 作业i所需时间为t i. 约定:任何作业可以在任何一台机器上加工处理, 但未完工前不允许中断处理,任何作业不能拆分成更小的子作业。要求给出...
  • 处理机的高级、中级和低级调度

    万次阅读 2016-03-03 20:54:54
    处理机调度是为了解决个进程或线程争夺CPU的问题。在道程序系统中,通常会有个进程或线程同时竞争CPU,只要有两个及以上的进程或线程处于就绪状态就有可能出现这样的情况。当可用的CPU个数少于进程和线程数时...
  • 操作系统中的处理机是什么?CPU?内核?

    万次阅读 多人点赞 2018-03-21 11:36:37
    处理机:计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件。处理机包括中央处理器,主存储器, I/O 接口。处理机再加上外围设备eg:鼠标?键盘?等构成完整的计算机系统。处理器:中央处理器(Central...
  • 操作系统实验-单处理机系统的进程调度

    千次阅读 多人点赞 2018-12-17 17:43:56
    实验项目一:单处理机系统的进程调度 4学时 (一)实验目的要求 通过模拟进程控制方法和单处理机系统下的进程调度,了解进程的结构、进程的创建与撤销,进程的组织及进程的状态及其转换,掌握进程调度策略。 (二...
  • 所谓处理机的态,又称处理机的特权级,就是处理机当前处于何种状态,正在执行哪类程序。 操作系统的管理程序和用户程序在处理机上执行时,二者的职责不同,权限也不同,为了保护操作系统,所以要区分处理机的态。...
  • 处理机和处理器的区别

    千次阅读 2018-07-08 20:48:06
    处理机处理机是计算机系统中存储程序和数据,并按照程序规定的步骤执行指令的部件。程序是描述处理机完成某项任务的指令序列。指令则是处理机能直接解释、执行的信息单位。处理机包括中央处理器(cpu),主存储器,...
  • 操作系统处理机调度及常见的调度算法(先来先服务调度算法(FCFS),短作业(进程)优先调度算法,高优先权优先调度算法,时间片轮转算法)
  • 通道处理机是 IBM 公司首先提出来的一种 IO 处理机方式, 曾被广泛用于 IBM 360 / 370 等系列机上. 通道在通道 数据传送期里,如果所连接的台设备同时要求 交换信息, 或者是通道的数据宽度与要 传送的信息宽度...
  • 操作系统课程设计:设计一个按照时间片轮转法实现处理机调度的程序 一:时间片轮转法实现处理机调度的程序设计提示如下: (1) 假设系统有n个进程,每个进程用一个进程控制块(PCB)来代表。进程控制块的格式如下表...
  • 1.处理机的所有指令可以在()中执行。 目态 浏览器中 任意时间 系统态 解答:D cpu工作状态分为系统态(或称管理态,管态)和用户态(或称目态)。 引入这两个 工作状态的原因是:为了...
  • 它按发展历程又分为单道批处理系统、道批处理系统(道程序设计技术出现以后)。 1) 单道批处理系统 系统对作业的处理是成批进行的,但内存中始终保持一道作业。该系统是在解决人机矛盾和CPU与I/O设备速率不...
  • 指令级高度并行的超级处理机

    千次阅读 2014-06-16 20:29:58
    在一个时钟周期内能够同时发射条指令的处理机称为超标量处理机。 超流水线处理机: 在一个时钟周期内能够分时发射条指令的处理机称为超流水线处理机。 下图所示的是每个时钟周期分时发送3条指令的超...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,205,426
精华内容 882,170
关键字:

多处理机

友情链接: Programa??o STL.rar