嵌入式开发——面试题操作系统(调度算法)

linux7种进程调度算法

1:先来先服务(FCFS)调度算法
原理:按照进程进入就绪队列的先后次序进行选择。对于进程调度来说,一旦一个进程得到处理机会,它就一直运行下去,直到该进程完成任务或者因等待某事件而不能继续运行,彩绘让出处理机会。先来先服务算法属于非 剥夺方式。

很少用此算法作为主要的调度算法,会结合其他的调度算法来使用

2:优先级调度算法
原理:按照进程的优先级高低来进行调度,使高优先级进程优先得到处理机的调度算法称为优先级调度算法。

3:时间片轮转调度算法
原理:按照先来先服务原则进行调度,但进程仅占用处理机一个时间片。在使用完一个时间片后,即使进程还没有完成其运行,它也必须让出处理机给下一个就绪的进程。

特别要注意的是,时间片是否用完的判定程序是由时钟中断处理程序激活的,因此时间片值必须大于时钟中断间隔。

4.短进程优先(SPF)调度算法
短进程优先调度算法从进程的就绪队列中挑选那些运行时间(估计时间)最短的进程进入主存运行。这是一个非剥夺算法,问题是进程耗时难以估计

5.最短剩余时间优先调度算法
原理是:让“运行到任务完成时所需的运行时间最短”的进程优先得到处理。

该算法的优点是,可以用于分时系统,保证及时响应用户要求。缺点是,系统开销增加。首先,要保存进程的运行情况记录,以比较其剩余时间长短:其次,剥夺本身也要消耗处理机时间。毫无疑问,这个算法使短进程一进入系统就能立即得到服务,从而缩短进程的平均等待时间。

6.最高响应比优先调度算法
原理是:每个进程都有一个动态优先数,该优先数不但是要求的服务时间,而且是该进程得到服务所花费的等待时间的函数。进程的动态优先数计算公式如下:
优先数=(等待时间+要求的服务时间)/要求的服务时间

7.多级反馈队列调度算法
当一个新进程进入系统后,它被放入第1级队列的末尾。该队列中的进程按先来先服务原则得到处理机,并使用一个相应于该队列的时间片。假如进程在这个时间片内完成了其全部任务,或因等待事件或/O而主动放弃了处理机,该进程就撤离系统(任务完成)或进入相应的等待队列,从而离开就绪队列。若进程使用完了整个时间片后,其运行任务并未完成(也没有产生V/O请求),仍然要求运行,则该进程被剥夺处理机,同时它被放入下一级队列的末是,当第1级队列为空后,调度程序才去调度第2级队列中的进程。其调度方法同前。当第1、2爱队列全部为空后,才去调度第3级队列中的进程……当前面各级队列全部为空后,才去调度最后第n级队列中的进程。第n级(最低优先级)队列中的进程采用时间片轮转调度算法进行调度。当比运行进程更高级别的队列中到来一个新的进程时,它将抢占处理机,而被抢占的进程回到原队列的末尾。
多级反馈队列的调度操作如上所述,它根据进程运行情况的反馈信息而对队列进行组织并调度进程。但对此调度算法需要说明如下。
①照顾I/O型进程的目的在于充分利用外部设备,以及对终端交互用户及时地予以响应。
为此,通常L/O型进程会进入最高优先级队列,从而能很快得到处理机。另一方面,第1级队列
中进程的时间片值也应大于大多数I/O型进程产生一个I/O请求所需的运行时间。这样,既能
使I/O型进程得到及时处理,也避免了不必要的过多的在进程间转接处理机的操作,以减少系统开销。
②处理机型(计算型)进程由于总是用尽时间片(有些计算型进程一直运行几小时也不会产生一个IO请求),而由最高优先级队列逐次进入低优先级队列。虽然运行优先级降低了,等待时间也较长,但终究会得到较大的时间片值来运行,直至在最低一级队列中轮转。
③在有些分时系统中,一个进程由于IO操作完成而要求重新进入就绪队列,并不是将它
放入最高优先级队列,而是让它进入因I/O请求而离开的原来那一级队列。这就需要对进程所在的队列序号进行记录。这样做的好处是,有些计算型进程偶然产生一次I/O请求,I/O操作完成后仍然需要很长的处理机运行时间,为减少进程的调度次数和系统开销,就不要让它们从最高级队列逐次下移,而是直接放入原来所在队列。

内存页面置换算法

含义:当CPU访问页面不在物理内存时,便产生一个缺页中断,请求操作系统将所缺页调入物理内存。
在这里插入图片描述
第4步中,如果找不到空闲页,说明此时内存已满。这时需要页面置换算法,选择一个物理页,如果该物理页有被修改过(脏页),则把它换出到磁盘,然后把该被置换出去的页表项改成无效的,最后把正在访问的页面装入到这个物理页中。

虚拟内存管理流程:
在这里插入图片描述
1: OPT(最佳页面置换)
描述:置换在未来最长时间不访问的页面。
2: FIFO(先进先出)
描述:选择内存驻留时间最长的页面进行置换。
3:LRU(最近最久未使用)
描述:发生缺页时,选择最长时间没有被访问的页面进行置换。
4:LOCK(时钟页面置换)
描述:把所有页面都保持在一个类似钟面的环形链表,一个表针指向最老的页面。
5:LFU(最不常用置换)
描述:发生缺页中断时,选择访问次数最少的页面,并将其淘汰。

磁盘的结构
在这里插入图片描述常见的机械磁盘是上图左边的样子,中间圆的部分是磁盘的盘片,一般会有多个盘片,每个盘面都有自己的磁头。右边的图就是一个盘片的结构,盘片中的每一层分为多个磁道,每个磁道分多个扇区,每个扇区是 512 字节。那么,多个具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面,如上图里中间的样子。

磁盘调度算法的目的很简单,就是为了提高磁盘的访问性能,一般是通过优化磁盘的访问请求顺序来做到的。

寻道的时间是磁盘访问最耗时的部分,如果请求顺序优化的得当,必然可以节省一些不必要的寻道时间,从而提高磁盘的访问性能。

假设有下面一个请求序列,每个数字代表磁道的位置:

98,183,37,122,14,124,65,67

初始磁头当前的位置是在第 53 磁道。

接下来,分别对以上的序列,作为每个调度算法的例子,那常见的磁盘调度算法有:

先来先服务算法
最短寻道时间优先算法
扫描算法算法
循环扫描算法
LOOK 与 C-LOOK 算法

先来先服务

先来先服务(First-Come,First-Served,FCFS),顾名思义,先到来的请求,先被服务。

那按照这个序列的话:

98,183,37,122,14,124,65,67

那么,磁盘的写入顺序是从左到右,如下图:
在这里插入图片描述

先来先服务算法总共移动了 640 个磁道的距离,这么一看这种算法,比较简单粗暴,但是如果大量进程竞争使用磁盘,请求访问的磁道可能会很分散,那先来先服务算法在性能上就会显得很差,因为寻道时间过长。

最短寻道时间优先(Shortest Seek First,SSF)算法的工作方式是,优先选择从当前磁头位置所需寻道时间最短的请求,还是以这个序列为例子:

98,183,37,122,14,124,65,67

那么,那么根据距离磁头( 53 位置)最近的请求的算法,具体的请求则会是下列从左到右的顺序:

65,67,37,14,98,122,124,183
最短寻道时间优先
在这里插入图片描述最短寻道时间优先

磁头移动的总距离是 236 磁道,相比先来先服务性能提高了不少。

但这个算法可能存在某些请求的饥饿,因为本次例子我们是静态的序列,看不出问题,假设是一个动态的请求,如果后续来的请求都是小于 183
磁道的,那么 183 磁道可能永远不会被响应,于是就产生了饥饿现象,这里产生饥饿的原因是磁头在一小块区域来回移动。

扫描算法

最短寻道时间优先算法会产生饥饿的原因在于:磁头有可能再一个小区域内来回得移动。

为了防止这个问题,可以规定:磁头在一个方向上移动,访问所有未完成的请求,直到磁头到达该方向上的最后的磁道,才调换方向,这就是扫描(Scan)算法。

这种算法也叫做电梯算法,比如电梯保持按一个方向移动,直到在那个方向上没有请求为止,然后改变方向。

还是以这个序列为例子,磁头的初始位置是 53:

98,183,37,122,14,124,65,67

那么,假设扫描调度算先朝磁道号减少的方向移动,具体请求则会是下列从左到右的顺序:

37,14,0,65,67,98,122,124,183
在这里插入图片描述

扫描算法

磁头先响应左边的请求,直到到达最左端( 0 磁道)后,才开始反向移动,响应右边的请求。

扫描调度算法性能较好,不会产生饥饿现象,但是存在这样的问题,中间部分的磁道会比较占便宜,中间部分相比其他部分响应的频率会比较多,也就是说每个磁道的响应频率存在差异。

循环扫描算法

扫描算法使得每个磁道响应的频率存在差异,那么要优化这个问题的话,可以总是按相同的方向进行扫描,使得每个磁道的响应频率基本一致。

循环扫描(Circular Scan, CSCAN )规定:只有磁头朝某个特定方向移动时,才处理磁道访问请求,而返回时直接快速移动至最靠边缘的磁道,也就是复位磁头,这个过程是很快的,并且返回中途不处理任何请求,该算法的特点,就是磁道只响应一个方向上的请求。

还是以这个序列为例子,磁头的初始位置是 53:

98,183,37,122,14,124,65,67

那么,假设循环扫描调度算先朝磁道增加的方向移动,具体请求会是下列从左到右的顺序:

65,67,98,122,124,183,199,0,14,37
在这里插入图片描述
循环扫描算法

磁头先响应了右边的请求,直到碰到了最右端的磁道 199,就立即回到磁盘的开始处(磁道 0),但这个返回的途中是不响应任何请求的,直到到达最开始的磁道后,才继续顺序响应右边的请求。

循环扫描算法相比于扫描算法,对于各个位置磁道响应频率相对比较平均。

LOOK 与 C-LOOK算法

我们前面说到的扫描算法和循环扫描算法,都是磁头移动到磁盘「最始端或最末端」才开始调换方向。

那这其实是可以优化的,优化的思路就是磁头在移动到「最远的请求」位置,然后立即反向移动。

那针对 SCAN 算法的优化则叫 LOOK 算法,它的工作方式,磁头在每个方向上仅仅移动到最远的请求位置,然后立即反向移动,而不需要移动到磁盘的最始端或最末端,反向移动的途中会响应请求。
在这里插入图片描述 LOOK 算法

而针 C-SCAN 算法的优化则叫 C-LOOK,它的工作方式,磁头在每个方向上仅仅移动到最远的请求位置,然后立即反向移动,而不需要移动到磁盘的最始端或最末端,反向移动的途中不会响应请求。
在这里插入图片描述C-LOOK 算法

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/416312.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“祖传代码”:程序员的“宝藏图”还是“地雷区”?

程序员对“祖传代码”的看法可能因个人经验、技能和项目需求等因素而有所不同。但无论如何,祖传代码的背后都有一段段啼笑皆非或者令人深省的故事。 一、程序员对祖传代码的看法 结合笔者以及身边形形色色大猿小猿的态度,浅浅罗列以下看法: 恐惧和厌恶…

day03_登录注销(前端接入登录,异常处理, 图片验证码,获取用户信息接口,退出功能)

文章目录 1. 前端接入登录1.1 修改前端代码1.2 跨域请求1.2.1 跨域请求简介1.2.2 COSR概述CORS简介CORS原理 1.2.3 CORS解决跨域 2. 异常处理2.1 提示空消息分析2.2 系统异常分类2.3 异常处理2.2.1 方案一2.2.2 方案二 3. 图片验证码3.1 图片验证码意义3.2 实现思路3.3 后端接口…

微服务 人工智能AI 物联网智慧工地云平台源码

目录 ​编辑 智慧工地架构 智慧工地系统 智慧工地云平台功能模块 1、基础数据管理 2、考勤管理 3、安全隐患管理 4、视频监控 5、塔吊监控 6、升降机监控 7、移动端数据推送 智慧工地管理平台子系统构成 智慧工地物联网解决方案,对工地施工安全人员、设…

三种食物轮流吃,睡眠时间又长又香!

睡眠质量一直是人们关注的焦点,而饮食则被认为是影响睡眠的重要因素之一。近年来,有一种食物搭配方法备受瞩目,据说可以让人们的睡眠时间又长又香。这种方法并不复杂,只需要轮流食用三种特定食物,就能有效改善睡眠质量…

window server 2012 r2配置多用户远程登录

window server2012r2配置多用户远程登录 注:window系统默认只允许一个用户登录,但在配置中可以设置多用户同时远程。非特殊情况不建议设置多用户远程,以防数据丢失,或数据篡改无法排查。 1、桌面winr打开gpedit.msc 2、点击管理…

BigTime 2024:多人对战新期待,链游迎来强势回归

随着2024年加密货币市场行情回暖,区块链游戏正成为行业中充满活力的领域。截至2023年,该市场的价值已超过30亿美元,并预计到2030年将达到900亿美元。这种增长部分源于投资的增加和NFT的广泛应用。同时,融合传统游戏元素与区块链技…

简单网站模板1(HTML)

想要拥有自己的网站&#xff0c;却不知该如何才能简约好看&#xff0c;接下来分享一种自己搭建的网站模板&#xff0c;希望大家喜欢。 展示图&#xff1a; CODE: <!DOCTYPE html> <html> <head><title>我的网站</title><style>body {fo…

如何开展有效的绩效面谈

绩效面谈作为绩效管理的核心环节&#xff0c;其重要性不容忽视。它不仅是评价员工过去一段时间工作表现的环节&#xff0c;更是为下一阶段绩效管理设定目标和方向的环节。然而&#xff0c;许多企业在实施绩效面谈时&#xff0c;往往仅停留在形式上&#xff0c;没有真正地发挥其…

分享:大数据信用报告查询的价格一般要多少钱?

现在很多人都开始了解自己的大数据信用了&#xff0c;纷纷去查大数据信用报告&#xff0c;由于大数据信用与人行征信有本质的区别&#xff0c;查询方式和价格都不是固定的&#xff0c;本文就为大家详细讲讲大数据信用报告查询的价格一般要多少钱&#xff0c;希望对你有帮助。 大…

windows上elasticsearch的ik分词器的安装

下载 下载地址 在elasticsearch下的plugins文件夹下创建ik的文件夹 下载的ik压缩包解压到plugins/ik 重启elasticsearch 验证 http://ip:9200/_cat/plugins

2024可持续发展与电力系统、能源国际会议(ICSDPSE 2024)

2024可持续发展与电力系统、能源国际会议&#xff08;ICSDPSE 2024&#xff09; 一、【会议简介】 非常高兴邀请您参加2024年可持续发展与电力系统、能源国际会议&#xff08;ICSDPSE 2024&#xff09;。该会议将于2024年在苏州举行&#xff0c;这是一个旨在促进可持续发展和…

log4j 基础使用入门教程

一、Log4j介绍 在项目中&#xff0c;不管是开发人员写代码还是测试人员写的测试代码一般都需要做一些日志来记录项目的行为&#xff0c;以便更好的跟踪项目中的一些交互和问题。 Log4j ( Logger For Java ) , Java 日志的记录包。 官方网站 。Log4j 是 Apache 的一个开源项目…

虚拟机内存不够用了?全流程操作Look一下?

虚拟机信息&#xff1a;操作系统&#xff1a;CentOS Linux 7 (Core)&#xff0c;用的是VMware Workstation 16 Pro 版本16.2.3 build-19376536&#xff1b;我的主机 Windows 10 Education, 64-bit (Build 22000.1817) 10.0.22000 前言&#xff1a;虚拟机用久了就会出现内存不足…

JVM之CMS垃圾收集器详解

CMS垃圾收集器 CMS回收流程 官网&#xff1a; https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/cms.html#concurrent_mark_sweep_cms_collector CMS(Concurrent Mark Sweep)收集器是一种以获取 最短回收停顿时间为目标的收集器。 采用的是"标记-清除…

【精选】Java项目介绍和界面搭建——拼图小游戏 上

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

【三维重建】【slam】【分块重建】LocalRF:逐步优化的局部辐射场的鲁棒视图合成

项目地址&#xff1a;https://localrf.github.io/ 题目&#xff1a;Progressively Optimized Local Radiance Fields for Robust View Synthesis 来源&#xff1a;KAIST、National Taiwan University、Meta 、University of Maryland, College Park 提示&#xff1a;文章用了s…

java 大学生社团管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 大学生社团管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5…

Java 1.8 docker 镜像制作

文章目录 一、下载文件二、精简JRE三、Dockerfile四、构建镜像五、容器测试 一、下载文件 glibc 下载地址 glibc-2.33-r0.apk glibc-bin-2.33-r0.apk glibc-i18n-2.33-r0.apk rsa sgerrand.rsa.pub jre 1.8 jre-8u201-linux-x64.tar.gz 二、精简JRE 解压 tar -zxvf jre-8…

【网络那些事】

【云计算】 云计算&#xff1a;把计算资源放在某个地方&#xff0c;并通过互联网暴露出来&#xff0c;让用户可以按需使用计算资源的方式&#xff0c;就是所谓的云计算 云计算的三种服务&#xff1a; 云平台专业名词 日常叫法 亚马逊云叫法 云服务器 ECS &#xff08;Elas…

代码随想录算法刷题训练营day27:LeetCode(39)组合总和、LeetCode(40)组合总和 II、LeetCode(131)分割回文串

代码随想录算法刷题训练营day27&#xff1a;LeetCode(39)组合总和、LeetCode(40)组合总和 II、LeetCode(131)分割回文串 LeetCode(39)组合总和 题目 代码 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List;clas…