OS复习笔记ch11-4

news2024/11/29 10:48:43

磁盘调度

磁盘的物理结构

经典的温彻斯特盘
image.png
其中的几个概念:

  • 盘面:可以看成是一个操场的平面,不同的盘面通过中间的轴串在一起
  • 磁道:磁道可以看成是操场的跑道,我们知道操场上有外道和内道,最内道中间往往是足球场,而一个个跑道呈圆环状,且外道比内道距离更远,跑起来更费力。磁道类似,如图所示,磁道往往有很多条,但是不同磁道的数据总量一致,所以内道的位密度要比外道大。
  • 扇区:指按照一定的角度,将磁道划分成不同的扇区,每个扇区包含磁道的一部分,也就是磁盘块。扇区是磁盘的最小组成单元,通常是512字节。
  • 柱面:是指不同盘面中相对位置相同的磁道,这些磁道可以立体得看成一个圆柱,形象称之为柱面
  • 磁头:只能水平移动,每次读写数据前,需要靠磁臂移动到相应的磁道。一般的盘片可以正反读写,所以会有一正一反两个磁头。

由于磁盘在组成原理里面也会有所涉及,所以有关磁盘物理结构和其中的逻辑关系这里不在阐述,需要深入的同学可以看看计组。

磁盘的性能参数

类似于CPU的进程调度,磁盘是一个共享结构,对应有一个就绪队列,不同的I/O请求需要磁盘调度。

image.png

访问时间
image.png

  • 寻道/定位时间:Ts,磁头移动到指定柱面的时间
  • 旋转延迟:Td = 1/2r,磁头到访问扇区的时间
  • 传送时间:Tt = b/rN,传输数据的时间
    时间性能计算
    image.png

一般b可能需要连续扇区读取,具体的读写时间取决于磁盘扇区的结构;这里的m是一个常数,n是需要跨越的磁道数,s为启动时间

image.png
题目分析:
已知扇区是磁盘的最小组成单元,通常是512字节,1280KB/512B= 2560个扇区

  1. 如果数据连续分配,那么也就是占2560/320=8个磁道,由于是连续磁道,并且扇区是磁道上的连续扇区,那么只考虑第一次的寻道时间、8个磁道的旋转延迟和数据传输即可,所以总时间是9+(4.15+8.3)* 8 = 108.6ms
  2. 而如果2560扇区是随机分布的,那么每次都要考虑寻道时间、旋转延迟时间和数据传输时间,(9+4.15+8.3/320)* 2560 = 333730.56 ms
    这里的0.026 = 8.3/320是读取一个扇区数据的时间,通过上述计算可以发现磁盘的性能和数据存储方式有很大关系

磁盘调度策略

image.png

我们假设静态的9个就绪进程,需要访问:55, 58, 39, 18, 90, 160, 150, 38, 184的磁道,通过平均跨越的磁道数来理解和比较不同算法之间的差距。

先进先出算法(FIFO)

到目前为止,几乎所有的操作系统内部的算法集锦都会涉及到FIFO,这里也不例外。顾名思义,就是每次只顾眼前人,谁先来处理谁。
image.png
按照每次的移动距离取平均值得到55.3
优点如下:
image.png

缺点也很明显,就是效率不够高,考虑一个极端的情况,如果10,100,20,70,30,80,这样的话指针反复横跳肯定不是最优解。

最短查找时间优先(SSTF)

每次都找离得最近的磁道去查找时间(贪心的思想)
image.png
一开始在100,第一个全局最近的就是90,然后是58,55……

优点:基于贪心,SSTF在效率上有所提升,但也不是最优的算法。
缺点:对中间磁道有利,边缘磁道可能长期得不到响应,不公平。

因为基于贪心,假设一开始磁道的位置处于中心,那么先来的边缘磁道访问请求不占优势,如果访问中间磁道的请求源源不断来,就一直被优先处理。

扫描算法(SCAN)

image.png

扫描算法,顾名思义移动臂在一个方向上移动,满足所有未完成的请求直到到达此方向的最后一个磁道(或没有请求为止,Look策略),然后反向处理
对于即将掉头的扫描点附近的磁道会有偏向或者是不公平:对扫描前进方向上刚刚出现的进程有偏向,而对于刚刚扫描过的磁道的进程请求,进程需要等待很久才会被响应。

SCAN算法,又被称为电梯调度算法。移动臂在往一个方向移动的过程中,类似于电梯往下接人的时候,明知道最下面一层是没有人的,它是不会再往下走的。而对于电梯下降方向来的人都能坐上,但是刚刚走过的楼层就必须等到电梯把所有向下的人带走才能重新回来。

循环扫描算法(C-SCAN)

由于SCAN算法的偏向性,会增加等待的时间。为了解决这样的情况,CSCAN算法的思想是,访问完最里面一个要求服务的序列之后,立即回到最外层欲访问磁道。始终保持一个方向,故也称之为单向扫描调度算法。从最里面的一个磁道立即回到最外层欲访问的磁道,这步的距离是两者磁道号差的绝对值。
简单来说,就两点

  1. 在一个方向上使用扫描(初始化需要确定)
  2. 当到达最后一个磁道时,移动臂直接移动到另一沿的第一个位置,开始扫描。
    image.png

然后,我们综合以上四种算法,加以比较
image.png

  • 效率:从平均寻道长度来看,SSTF和SCAN表现最好,因为它们的平均寻道长度较短。
  • 公平性:SCAN和C-SCAN提供更高的公平性,尤其是C-SCAN,它通过循环单向处理避免了长时间的磁道等待。
  • 选择建议
    • 对于寻道时间敏感的系统,SSTF可能是最佳选择。
    • 如果需要平衡寻道时间和公平性,SCAN是一个好的选择。
    • 对于需要避免磁道饥饿并保证访问周期性的环境,C-SCAN将是更合适的选择。
N步扫描算法(N-step-SCAN)

image.png
把I/O请求队列分列(局部子队列),可以防止磁臂黏着现象,了解即可
当N = 1时,那就是FCFS先来先服务,而N = 请求数,相当于SCAN算法

分步电梯调度算法(FSCAN)

image.png

FSCAN算法将磁盘请求队列分成两个子队列,一个是由当前所有请求磁盘I/O形成的队列,由磁盘调度按SCAN算法进行处理。另一个是在扫描期间,新出现的所有请求I/O磁盘的进程进入等待处理的请求队列中,将所有新的请求会推迟到下一次扫描时处理。该算法同样也可以解决磁臂黏着的问题。了解一下即可

多磁盘管理

RAID( Redundant Array of Independent Disks )即独立磁盘冗余阵列,简称为「磁盘阵列」,其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统,从而实现比单块磁盘更好的存储性能和更高的可靠性。
RAID 层级的命名会以 RAID 开头并带数字,例如:RAID 0、RAID 1、RAID 5、RAID 6、RAID 7、RAID 01、RAID 10、RAID 50、RAID 60。每种等级都有其理论上的优缺点,不同的等级在两个目标间获取平衡,分别是增加资料可靠性以及增加存储器(群)读写性能。

采用RAID的主要优势是:

  • 可靠性高
  • 磁盘I/O速度快
  • 性能/价格比高

磁盘缓存

磁盘缓存,主存中为磁盘扇区设置的缓冲区,含有磁盘中某些扇区的副本。
磁盘缓存的置换算法,和虚拟存储的淘汰算法类似,比如LRU和LFU,简单了解一下。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【FlowShop流水线作业排班问题【数学规划的应用(含代码)】阿里达摩院MindOpt】

本文主要讲述使用MindOpt工具优化FlowShop流水线作业排班的数学规划问题。 一、案例场景 FlowShop流水线作业排班也有称为生产下料问题,它涉及到多台机器、多个工序以及多个作业调度安排。在这个问题中,我们需要对多个作业在一组流水线上的处理顺序进行…

矩阵中严格递增的单元格数

题目链接:leetcode:矩阵中严格递增的单元格数 描述 给你一个下标从 1 开始、大小为 m x n 的整数矩阵 mat,你可以选择任一单元格作为 起始单元格 。 从起始单元格出发,你可以移动到 同一行或同一列 中的任何其他单元格,但前提是目…

修复kazam意外中断的视频文件

0. Problem 在用kazam录视频的过程中,PC意外重启了,然后kazam没有把文件自动转换成MP4,而是存为以下两个文件: kazam_xxxxx.movie kazam-xxxxx.movie.mux这两个文件一个0k,另一个是有size的,但是没办法直…

[SAP ABAP] 变量与常量

1.变量 定义变量的基本方式 DATA <name> TYPE <type> [VALUE <val>]. <name>&#xff1a;指定变量的名称 <type>&#xff1a;指定变量的数据类型 <val>&#xff1a;指定<name>的初始值 示例1 定义变量lv_data1和lv_data3 输出结果…

【CMake】CMake从入门到实战系列(十七)—— CMake添加环境检查

&#x1f525;博客简介&#xff1a;开了几个专栏&#xff0c;针对 Linux 和 rtos 系统&#xff0c;嵌入式开发和音视频开发&#xff0c;结合多年工作经验&#xff0c;跟大家分享交流嵌入式软硬件技术、音视频技术的干货。   ✍️系列专栏&#xff1a;C/C、Linux、rtos、嵌入式…

【C语言】16.动态内存管理

文章目录 1.为什么要有动态内存分配2.malloc和free2.1 malloc2.2 free 3.calloc和realloc3.1 calloc3.2 realloc 4.常见的动态内存的错误4.1 对NULL指针的解引⽤操作4.2 对动态开辟空间的越界访问4.3 对⾮动态开辟内存使⽤free释放4.4 使⽤free释放⼀块动态开辟内存的⼀部分4.5…

redis高可用-集群部署

一&#xff1a;背景 前面我们实现了redis的主从同步和哨兵模式&#xff0c;解决了单机redis的故障转移和流量分担&#xff0c;但是不管是主从或者哨兵模式都是一个主服务对应一个或者多个从服务&#xff0c;并且主服务和从服务的数据是一样的&#xff0c;这样就实现不了redis大…

JSP基础知识概述

目录 JSP一、什么是JSP1.1 概念1.2 创建JSP1.3 JSP编写Java代码1.4 JSP实现原理 二、JSP与HTML集成2.1 普通脚本2.2 声明脚本2.3 输出脚本2.4 JSP指令2.5 动作标签 三、内置对象3.1 四大域对象 JSP 一、什么是JSP 1.1 概念 简化的Servlet设计&#xff0c;在HTMl标签中嵌套Jav…

Python学习打卡:day12

day12 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 目录 day1292、全国疫情地图构建数据整理获取数据数据整体结构&#xff08;全国&#xff09;省数据结构获取每个省份的确诊数据上述代码执行后输出&…

Homebrew使用

官网&#xff1a;https://brew.sh/ 安装&#xff1a; 简介&#xff1a;https://www.jianshu.com/p/f4c9cf0733ea 比如&#xff0c;安装maven: 1、brew install maven 2、查看安装路径&#xff1a;brew list maven 具体参考&#xff1a;https://blog.csdn.net/m0_67402970/arti…

创业众筹网

摘 要 创业是社会经济发展的重要动力&#xff0c;其在任何经济发展时期任何国家都最具活力与桃战性。然而创业的资金却是90%创业者面临的首要问题。包括积蓄不足、无不动产、负债、不知如何向银行申贷,及无法预估所创行业之总资金、成本。部分创业者虽然有心创业&#xff0c;但…

Python学习笔记16:进阶篇(五)异常处理

异常 在编程中&#xff0c;异常是指程序运行过程中发生的意外事件&#xff0c;这些事件通常中断了正常的指令流程。它们可能是由于错误的输入数据、资源不足、非法操作或其他未预料到的情况引起的。Python中&#xff0c;当遇到这类情况时&#xff0c;会抛出一个异常对象&#…

抖音开放平台代开发小程序,上传模板代码

大家好&#xff0c;我是小悟 抖音小程序第三方平台开发着力于解决抖音生态体系内的小程序管理问题&#xff0c;一套模板&#xff0c;随处部署。能尽可能地减少服务商的开发成本&#xff0c;服务商只用开发一套小程序代码作为模板就可以快速批量的孵化出大量的商家小程序。 第…

旋转式滚珠花键在自动装载机中的作用!

自动装载机是一种广泛用于公路、铁路、建筑、水电、港口、矿山等建设工程的土石方施工机械&#xff0c;是工程建设中土石方施工的主要机种之一。而旋转式滚珠花键作为自动装载机中重要的传动元件&#xff0c;在自动装载机的运用起着重要的作用。 自动装载机主要用于铲装土壤、砂…

Windows环境下使用VisualGDB进行Linux项目开发

1.新建项目-打开文件下的新建项目菜单 2.工程项目类型配置 3.Linux机器选择设置 4.设置代码位置 5.编译选项设置 6.调试环境设置

数据库精选题(二)(引言+关系代数)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;数据库 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 常见概念 一、什么是数据库&#xf…

QT4-QT5升级(4)GBK-UTF-8-乱码-QT工程构建的区别

文件编码为UTF-8 QString 正常 char* 中文乱码解决方法&#xff1a; #include <iostream> #include <QString> #include <QTextCodec>int main() {QString qstr "你好&#xff0c;世界&#xff01;"; // 中文字符串// 获取 GBK 编码的 QTex…

异步开发的终极答案—协程

我们在之前的文章中讲过,在并发场景下,传统的基于多线程的命令式开发模型虽然比较简单,但并发数高了之后资源占用较高,大量线程会阻塞;而响应式编程模式我们可以通过异步化处理提升系统资源的利用效率,但异步开发有违人的直觉,门槛比较高。作为成年人,我们肯定希望全都…

Echarts 社区分享

​ 首页先确定你要使用的Echarts版本&#xff0c;因为现在Echarts5以上版本引入地图与之前版本有所不同。但是大多数地图不太容易搞分享一些比较好用的ECharts社区网站。 1、makeapie 网址&#xff1a;makeapie 2、isqqw 网址&#xff1a;echarts图表集 3、PPchart 网址…

生产管理系统看板,在自动化设备领域的创新应用

在自动化设备领域&#xff0c;生产管理系统看板的创新应用是一项引人注目的技术进步。以广州某自动化设备有限公司为例&#xff0c;他们是一家涂装工程设备制造企业&#xff0c;将讯鹏生产管理系统电子看板成功应用于全自动立式静电喷粉线、卧式静电喷粉线、氟碳喷涂生产线等领…