操作系统精髓与设计原理学习笔记八:单处理器调度

进程调度:根据周转时间优化 先进先出(FIFO) 先进先出的调度方式,看名字就知道,“大家”先来后到排好队,一个一个调度。 这样的调度方式实现起来很简单,但仅仅这样就够了吗?显然不是,对于进程的调度,当然有性能的要求。 因此,要先引入一个评价性能的指标,来判断FIFO的性能。 周转时间和平均周转时间 T周转时间= T完成时间- T周转时间 平均周转时间,就是将进程的周转时间加起来,再除以进程数。 T平均周... 阅读详情

在多道程序设计系统中,内存中有多个进程。每个进程或者正在处理器上运行,或者正在等待某些事件的发生,比如IO完成。处理器通过执行某个进程而保持忙状态,而此时其他进程处于等待状态。

一、处理器调度的类型

处理器调度的目标是以满足系统目标(如响应时间、吞吐率、处理器小雷)的方式,把进程分配到一个或多个处理器中执行。在许多系统中,这个调度活动分成三个独立功能:长程、中程和短程调度。他们的名字表明在执行这些功能时的相对时间比例。

创建新进程时,执行长程调度,它决定是否把进程添加到当前活跃的进程集合中。

中程调度是交换功能的一部分,它决定是否把进程加到那些至少部分在内存中并且可以被执行的进程集合中。

短程调度真正决定下一次执行哪一个就绪进程。

从根本上说,调度属于队列管理方面的问题,用来在排队环境中减少延迟和优化性能。

1 长程调度

长程调度决定哪一个程序可以进入系统中处理,因此,它控制着系统的并发度。一旦允许进入,一个作业或用户程序就成为一个进程,并被添加到供短程调度程序使用的队列中等待调度。在某些系统中,一个新创建的进程开始处于被换出状态,在这种情况下,它被添加到供中程调度程序使用的队列中等待调度。

在批处理系统或者操作系统的批处理部分中,新提交的作业被发送到磁盘,并保存在一个批处理队列中。在长程调度程序运行的时候,从队列中创建相应的进程。这里涉及两个决策:调度程序必须决定什么时候操作系统能够接纳一个进程或者多个进程;同时,调度程序必须决定接受哪个作业或哪些作业,并将其转变成进程。

2 中程调度

中程调度时交换功能的一部分。在典型情况下,换入决定取决于管理系统并发度的需求。

3 短程调度

考虑执行的频繁程度,长程调度程序执行的频率相对较低,并且仅仅是粗略地决定是否接受新进程及接受哪一个。为进行交换决定,中程调度程序执行得略微频繁一些。

短程调度程序,也称为分派(dispatcher)程序,执行的最频繁,并且精确地决定下一次执行哪一个进程。


二、调度算法

1 短程调度准则

短程调度的主要目标是按照优化系统一个或多个方面行为的方式来分配处理器时间。通常使用的准则可以按两个维度来分类:面向用户的准则与单个用户或进程感知到的系统行为相关;面向系统的准则的重点是处理器使用效果和效率(比如吞吐量,也就是进程的完成的速度)。

设计一个调度策略涉及在互相竞争的各种要求之间进行折中,根据系统的本质和使用情况,给各种要求设定相应的权值。

2 优先级的使用

在许多系统中,每个进程都被指定一个优先级,调度程序总是有些选择具有较高优先级的进程。

3 选择调度策略

选择函数确定在就绪进程中选择哪一个进程在下一次执行。

决策模式说明选择函数在被执行的瞬间的处理方式,通常可分为以下两类:

非抢占。在这种情况下,一旦进程出于运行状态,它就不断执行直到终止,或者因为等待IO,或者因为请求某些操作系统服务,而阻塞自己。

抢占。当前正中运行的进程可能被操作系统中断,并转移到就绪态。关于抢占的决策可能是在一个新进程到达时,或者在一个中断发生后,把一个被阻塞的进程职位就绪态时,或者出现基于周期性的时间中断时。

与非抢占策略相比,抢占策略可能会导致较大的开销,但是可能会对所有进程提供较好的服务,因为它们避免了任何一个进程独占处理器太长时间。此外,通过使用有效的进程切换机制,以及提供较大的内存,使得大部分程序都在内存中,可使抢占的代价相对比较低。

周转时间:就是驻留时间,或者这一项在系统中花费的总时间。

归一化周转时间:周转时间与服务时间的比率,该值表示一个进程的相对延迟。

1)先来先服务(FCFS):当美国进程就绪后,它就入就绪队列。当前正在运行的进程停止执行时,选择在就绪队列中存在时间最长的进程运行。

2)轮转:一种简单的方法是采用使用基于时钟的抢占策略,在这类方法中,最简单的是轮转算法。以一个周期性间隔产生时钟中断,当中断发送时,当前正在运行的进程被置于就绪队列中,然后基于FCFS策略选择下一个就绪作业运行。这种技术也称为时间片,因为每个进程在被抢占前都给定一片时间。

3)最短进程优先:这是一个非抢占的策略,其原则是下一次选择预计处理时间最短的进程。因此,短进程将会越过长进程,跳到队列头。

4)最短剩余时间:调度程序总是选择预期剩余时间最短的进程。当一个新进程加入就绪队列时,它可能比当前运行的进程具有更短的剩余时间,因此,只要新进程就绪,调度程序就可能抢占当前正在运行的进程。

5)最高响应比优先。响应比=(等待处理器的时间+预计的服务时间)/预计的服务时间

6)反馈法:建立一组调度队列,基于每个进程的执行历史和其他一些准则,把他们分配到各个队列中。

4 公平共享调度

如果当用户的应用程序或作业可以组成多个进程(或线程),就会出现传统的调度程序不认识的进程集合结构。从用户的角度看,他所关心的不是某个特定的进程如何执行,而是构成应用程序的一组进程如何执行。因此,基于进程组的调度策略是非常具有吸引力的,该方法通常称为公平共享调度。

术语“公平共享”表明了这类调度程序的基本原则。每个用户被指定了某种类型的权值,该权值定义了该用户对系统资源的共享,而且是作为在所有使用的资源中所占的比例来体现的。


三、传统的UNIX调度

传统的UNIX调度程序采用了多级反馈,而在每个优先级队列中采用了轮转的方法。该系统使用1秒抢占方式,也就是说,如果一个正在运行的进程在1秒内未被阻塞或者完成,它将被抢占。优先级基于进程类型和执行历史。


四 、小结

操作系统根据进程的执行对三种类型的调度方案作出选择。长程调度决定何时允许一个新进程进入系统。中程调度是交换功能的一部分,它决定何时把一个程序的部分或全部取进内存,使得该程序能够被执行。短程调度决定哪一个就绪进程下一次被处理器执行。本章集中讨论与短程调度相关的问题。

在设计短程调度程序时使用了各种各样的准则。一些准则与单个用户察觉到的系统行为有关(面向用户),而其他准则查看系统在满足所有用户的需求时的总效率(面向系统)。一些准则与性能的定量度量有关,另一些在本质上是定性的。从用户角度看,相应时间通常是系统最重要的一个特性;从系统的角度看,吞吐量处理器利用率是最重要的。


操作系统选择题及答案解析(川大) 第九章 单处理器调度 四川大学网安操作系统选择题答案及解析,本文以操作系统精髓设计原理(第九版中文翻译版)为参考,答案仅供参考,如有疑惑欢迎提出指正。转载请标明出处。 阅读详情

相关推荐

单处理器进程调度算法模拟,FCFS,RR(q=1),SPN,SRT,HRRN1

1

卖鱼的小白菜的专栏 3847

段页存储管理 操作系统课程设计

操作系统课程设计 段页面管理操作系统课程设计 段页面管理操作系统课程设计 段页面管理操作系统课程设计 段页面管理操作系统课程设计 段页面管理

操作系统精髓设计原理8e课后解析及动画资源大全

操作系统(OS)是计算机硬件应用程序之间的桥梁,其核心职责包括进程管理、内存管理、文件系统管理和设备管理。这些功能协同工作,确保资源高效分配系统稳定运行。例如,在多任务环境中,操作系统通过调度算法实现CPU时间片的合理分配,同时利用虚拟内存技术扩展可用内存空间。从架构角度看,操作系统以内核态运行关键服务,用户态执行应用程序,二者通过系统调用进行安全交互。现代设计中,单体内核(如Linux)将主要功能集成于内核空间以提升性能,而微内核。

weixin_30632267的博客 520

操作系统课程设计 存储管理

#include #include #include const int MAXSIZE=1000;//定义最大页面数 const int MAXQUEUE=3;//定义页框数 typedef struct node { int loaded; int hit; }page; page pages[MAXQUEUE]; //定义页框表 int queue[MAXSIZE]; int quantity; //初始化结构函数 void initial() { int i; for(i=0;i<MAXQUEUE;i++) { pages[i].loaded=-1; pages[i].hit=0; } for(i=0;i<MAXSIZE;i++) { queue[i]=-1; } quantity=0; } //初始化页框函数 void init() { int i; for(i=0;i<MAXQUEUE;i++) { pages[i].loaded=-1; pages[i].hit=0; } } //读入页面流 void readData() { FILE *fp; char fname[20]; int i; cout<>fname; if((fp=fopen(fname,"r"))==NULL) { cout<<"错误,文件打不开,请检查文件名"; } else { while(!feof(fp)) { fscanf(fp,"%d ",&queue[quantity]); quantity++; } } cout<<"读入的页面流:"; for(i=0;i<quantity;i++) { cout<<queue[i]<<" "; } } //FIFO调度算法 void FIFO() { int i,j,p,flag; int absence=0; p=0; cout<<endl<<"----------------------------------------------------"<<endl; cout<<"先进先出调度算法(FIFO)页面调出流:"; for(i=0;i<quantity;i++) { flag=0; for(j=0;j=MAXQUEUE) { cout<<pages[p].loaded<<" "; } pages[p].loaded=queue[i]; p=(p+1)%MAXQUEUE; absence++; } } absence-=MAXQUEUE; cout<<endl<<"总缺页数:"<<absence<<endl; } //最近最少使用调度算法(LRU) void LRU() { int absence=0; int i,j; int flag; for(i=0;i<MAXQUEUE;i++) { pages[i].loaded=queue[i]; } cout<<endl<<"----------------------------------------------------"<<endl; cout<<"最近最少使用调度算法(LRU)页面流:"; for(i=MAXQUEUE;i<quantity;i++) { flag=-1; for(j=0;j<MAXQUEUE;j++) { if(queue[i]==pages[j].loaded) { flag=j; } } //CAUTION pages[0]是队列头 if(flag==-1) { //缺页处理 cout<<pages[0].loaded<<" "; for(j=0;j<MAXQUEUE-1;j++) { pages[j]=pages[j+1]; } pages[MAXQUEUE-1].loaded=queue[i]; absence++; } else { //页面已载入 pages[quantity]=pages[flag]; for(j=flag;j<MAXQUEUE-1;j++) { pages[j]=pages[j+1]; } pages[MAXQUEUE-1]=pages[quantity]; } } cout<<endl<<"总缺页数:"<<absence<<endl; } //显示 void version() { cout<<" /*******************虚拟存储管理器的页面调度****************/"<<endl; cout<<endl; } void main() { version(); initial(); readData(); FIFO(); init(); LRU(); init(); init(); }

操作系统】CPU 时间片 分时 轮转调度

时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。 举例 编辑 你同时输入两篇文档:A.t

m0_46613023的博客 6680

CPU时间片轮换机制

1.cpu时间片轮换机制是什么? cpu时间片轮换机制是一种最古老,简单和公平的算法;又称为RR调度。时间片则是分配给每个进程的一个最大时间段。 2.运行机制有哪些? (1)在某个进程的运行时间达到系统所分配的最大时间时,操作系统会将剥夺其cpu的执行权,分配给其他进程去执行; (2)进程在规定的最大运行时间段中运行过程中,发生阻塞或异常结束,cpu马上就会切换到其他进程去执行; 注意:调度程序的...

sjh10000的博客 4037

操作系统原理:长程调度、中程调度、短程调度

长程调度 长程调度,又称为作业调度或高级调度。 这种调度将已进入系统并处于后备状态的作业按某种算法选择一个或一批,为其建立进程,并进入主机,当该作业执行完毕时,还负责回收系统资源,在批处理系统中,需要有作业调度的过程,以便将它们分批地装入内存,在分时系统和实时系统中,通常不需要长期调度。它的频率比较低,主要用来控制内存中进程的数量。 中程调度 中程调度,又称为交换调度。 它的核心思想是能将进程从内存或从CPU竞争中移出,从而降低多道程序设计的程度,之后进程能被重新调入内存,并从中断处继续执行,这种交换的操.

SongXJ的博客 7434

操作系统精髓设计原理(七)——单处理器调度

处理器调度类型 分为三个独立的功能:长程、中程和短程调度。它们的名字表明指向这些功能的相对时间比例。 创建新进程时,执行长程调度,它决定是否把进程添加进当前活跃的进程集合中。中程调度是交换功能的一部分,它决定是否把进程添加进那些至少部分存在内存并且可以被执行的进程集合中。短程调度真正决定下一次执行哪个就绪的进程。 长程调度决定哪个程序可以进入到系统中处理,它控制系统并发度。 调度算法 面向系统,其重点是处理器的使用效果和效率。吞吐量最大。 面向用户,用户对应用程序的相应时间可以接受。 调度准则: 周转时间

Think Different. 261

操作系统精髓设计原理学习笔记

文章目录置顶第一章:计算机系统概述1. 基本构成2. 指令分类3. 中断中断的分类多个中断4. 内存层次板上存储器板外存储器离线存储器5. 高速缓存6. 多处理器和多核多处理器多核二者区别第二章:操作系统概述1. Linux主要内核组件2. Windows和Android先不整理,以后需要再学第三章:进程1. 进程介绍进程的两个基本元素进程控制块(PCB)2. 进程状态经典5状态挂起态3. 操作系...

LvPartner的博客 3699

操作系统精髓设计原理(只讲大概的,暂时完结,核心内容差不多就是这些了,详细的还是要看书)

本文概述了计算机系统和操作系统的核心概念。计算机系统由处理器、内存、I/O模块和系统总线构成,发展经历了微处理器革命,现代计算机普遍采用多核处理器和高速缓存技术以提升性能。指令执行分为取指和执行两阶段,中断机制优化了I/O效率。存储器采用层次结构平衡速度、容量成本。 操作系统作为应用硬件的接口,提供程序开发、运行、资源管理等服务,具有便利性、高效性和可扩展性。其发展历程反映了硬件升级、新功能需求和错误修正的演进。多处理器系统通过SMP架构实现高效并行处理,操作系统在资源管理、错误响应等方面发挥关键作用,

2401_85637543的博客 1489

阿龙的学习笔记---《操作系统 - 精髓设计原理》笔记---第九章 + 第十章:调度

1. 调度类型 调度是如何分配进程至处理器,而调度体现在在三个层次。 长程调度:决定程序是否能够进入系统运行变成一个进程,他控制系统的并发度。执行的频率低。 中程调度:是决定进程挂起还是在内存中。执行频率中等。 短程调度:是指下次执行哪一个程序。时钟中断、I/O中断、系统调用、信号可能会引起短程调度。 2. 单处理器调度算法 规则:面向用户则需要尽量加快响应时间;而面向系统则是尽量提高处理器的效率。大多数系统中,适当的响应时间都是关键需求。 先来先服务(FCFS):即选择在系统中时间最长的进程。 时

阿龙的博客 380

计算机操作系统精髓设计原理

计算机操作系统精髓设计原理 高速缓存: 主要解决处理器和内存的速度不匹配的问题。处理器的速度一致快于存储器的访问速度,这需要在速度、价格和大小方面进行折中。高速缓存区试图使访问速度接近现有的最快的存储器,同时保持价格便宜的大存储容量(以较为便宜的半导体存储器技术实现)。 对于高速缓存的设计可以分为:高速缓存的大小、块大小、映射函数、替换算法、写策略。 块大小即为高速缓存内存交换数据的单位。当一个新块被读取到高速缓存中时,要根据映射函数确定这个块占据那个高速缓存单元,尽可能的减小替换的块在不久的将来还会

Artisan_w 4345

<操作系统精髓设计原理> 单处理器调度 多处理器调度 实时调度

处理器调度目标  满足系统目标的方式(响应时间 吞吐率 处理器效率)  把进程分配到一个或多个处理器中执行 调度类型  长程调度   决定加入待执行的进程池中  哪一个程序可以进入系统中处理 即控制系统的并发度                   中程调度   决定加入部分或全部在内存中的进程集合中                   短程调度   决定哪一个可运行的进程将被处理器执行

Slark的博客 1048

模拟段式存储管理的分配回收(操作系统课程设计

模拟段式存储管理的分配回收,包括输入给定的内存大小,进程的个数,每个进程的段数及段大小;当某进程提出申请空间的大小后,显示能否满足申请,以及为该进程分配资源后有关内存空间使用的情况。内含word文档。希望计算机学院的同学下载后不要照抄照搬,在这里发布只是能给你一个启发,希望对你有好处。

操作系统--精髓设计原理(第版)第二章复习题答案

2.1 操作系统设计的三个目标是什么? 方便、有效、易于拓展 2.2 什么是操作系统的内核? 内核是OS最常使用的部分,存在于主存中并在特权模式下运行,响应进程调度和设备中断。 2.3 什么是多道程序设计? 一种处理操作,在两个或多个程序间交错处理每个进程。 2.4 什么是进程? 运行中的程序,被OS控制和选择 2.5 O...

weixin_30399871的博客 2106

操作系统精髓设计原理--单处理器调度

概述在多道程序设计系统里,内存有多个进程,且或者在处理器上运行,或者在等待某种事件的发生(如I/O完成)。当处理器(或组)通过执行某个进程而保持忙状态,则其他的进程处于等待状态。 多道程序设计的关键是调度操作系统根据进程的执行有三种类型的处理器调度方案和一种I/O调度方案:长调度方案:确定何时允许一个新进程进入系统中调度方案:负责内存的交换功能...

weixin_33691700的博客 216

操作系统原理学习笔记

以下内容截图均来自《操作系统——精髓设计原理(第版)》,在此记录一下学习笔记。 一、进程 进程 进程定义 一个正在执行的程序; 一个正在计算机上执行的程序实例; 能分配给处理器并由处理器执行的实体; 由一组执行的指令、一个当前状态和一组相关的系统资源表征的活动单元。 进程基本元素:程序代码和代码关联的数据集。 进程控制块 标识符 状态 优先级 程序计数器 内存指针 上下文数据 I/O状态信息 记账信息 … 进程五状态模型 新建态:刚刚创建的

Gler.的博客 2085
上一篇: 操作系统精髓与设计原理学习笔记七:内存管理
下一篇: 操作系统精髓与设计原理学习笔记九:IO管理和磁盘调度
鱼紫酱even
博客等级 码龄15年 21粉丝 30原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值