OS复习笔记ch11-4

磁盘调度

磁盘的物理结构

经典的温彻斯特盘
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,简单了解一下。

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

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

相关文章

homework 2024.06.17 math, UI

A的宽度225 B的宽度150 这样画出来就比较标准, 225 * 2 150 * 3 2A 3B

ASP.NET Core 6.0 多种部署方式

IIS 环境准备和部署 安装并配置 IIS 安装 IIS,在搜索输入并打开 启用或关闭 Windows 功能。 配置IIS 需要配置 ASPNETCore 部署IS 程序包安装 (ASP.NET Core Module v2) Download .NET 6.0 (Linux, macOS, and Windows).NET 6.0 downloads…

搭建一个简单的xxljob

数据库表结构: YyJobInfo: public class YyJobInfo {//定时任务idprivate int id;//该定时任务所属的执行器的idprivate int jobGroup;//定时任务描述private String jobDesc;//定时任务添加的时间private Date addTime;//定时任务的更新时间private D…

TIM: A Time Interval Machine for Audio-Visual Action Recognition

标题:TIM:一种用于视听动作识别的时间间隔机器 源文链接:openaccess.thecvf.com/content/CVPR2024/papers/Chalk_TIM_A_Time_Interval_Machine_for_Audio-Visual_Action_Recognition_CVPR_2024_paper.pdfhttps://openaccess.thecvf.com/cont…

Redis 持久化策略

Redis 提供了多种持久化机制,用于将数据保存到磁盘中,以防止因服务器重启或故障而导致的数据丢失。主要的持久化策略有两种:RDB (Redis Database) 和 AOF (Append Only File),即当 Redis 服务器重新启动时,会读取相应的…

SEGGER Embedded Studio IDE移植embOS

SEGGER Embedded Studio IDE移植embOS 一、背景介绍二、任务目标三、技术实现3.1 获得embOS3.2 创建SES工程3.2.1 创建初始Solution和Project3.2.2 制作项目文件结构3.2.3 移植embOS库和有关头文件3.2.3.1 头文件3.2.3.2 库文件3.2.3.3 创建RTOSInit.c源文件3.2.3.4 OS_Error.c…

鸿蒙HarmonyOS NEXT角落里的知识:ArkTS高性能编程实践

概述 本文主要提供应用性能敏感场景下的高性能编程的相关建议,助力开发者开发出高性能的应用。高性能编程实践,是在开发过程中逐步总结出来的一些高性能的写法和建议,在业务功能实现过程中,我们要同步思考并理解高性能写法的原理…

信息学奥赛初赛天天练-31-CSP-J2022基础题-指针、数组、链表、进制转换、深度优先搜索、广度优先搜索、双栈实现队列应用

PDF文档公众号回复关键字:20240621 2022 CSP-J 选择题 单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项) 3.运行以下代码片段的行为是 ( ) int x 101; int y 201; int * p &x; int * q &y;…

【Java】已解决java.net.ProtocolException异常

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.net.ProtocolException异常 在Java的网络编程中,java.net.ProtocolException异常通常表示在网络通信过程中,客户端或服务器违反了某种协议规则。…

ASP.NET Core 6.0 启动方式

启动方式 Visualstudio 2022启动 IIS Express IIS Express 是一个专为开发人员优化的轻型独立版本的 IIS。 借助 IIS Express,可以轻松地使用最新版本的 IIS 开发和测试网站。 控制台版面 直接在浏览器输入监听的地址,监听的是 http://localhost:5137 脚本启动 dotnet run…

Java中将文件转换为Base64编码的字节码

在Java中,将文件转换为Base64编码的字节码通常涉及以下步骤: 读取文件内容到字节数组。使用java.util.Base64类对字节数组进行编码。 下面是一个简单的Java示例代码,演示如何实现这个过程: import java.io.File; import java.io…

添加右键菜单(以git为例)

1、打开注册表编辑器 打开系统注册表,使用组合键“Win R”输入“regedit”。 依次展开”HKEY_CLASSES_ROOT\Directory\Background\shell”。 2、新建右键菜单项 在[Background]下找到“shell”如果没有则新建项shell,接着在“shell”下右键-新建项名…

Linux 线程的同步与互斥

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux初窥门径⏪   🚚代码仓库:Linux代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝 前言 1.资源共享问题 2.进程线程间的互斥…

谁拥有数字营销平台即拥有企业竞争力!

掌握数字营销平台,就等于掌握企业竞争力! 宝子们,咱今天来聊聊这个事儿哈。在现在这个数字化的时代,拥有像蚓链这样的数字营销平台那可太重要啦! 想想看,有了它,企业就能更广、更快地去推广…

创新案例|星巴克中国市场创新之路: 2025目标9000家店的挑战与策略

星巴克创始人霍华德舒尔茨:“为迎接中国市场的全面消费复苏,星巴克2025年推进9000家门店计划,将外卖、电商以及家享和外出场景咖啡业务纳入中国新一轮增长计划中。”在面临中国市场同店增长大幅下滑29%背景下,星巴克通过DTC用户体…

Word中删除空白页

① 文字后面出现的空白页 把鼠标放在空白页的位置,按住Ctrl Delete即可。 ② 表格后面的空白页 把鼠标放在空白页左侧,直到出现一个空白的箭头,点击一下选中空白页,然后再Ctrl D,打开字体选项卡,在效果中…

舔狗日记Puls微信小程序源码

源码介绍: 这是一款舔狗日记Puls微信小程序源码,提供每日一舔的功能,让你舔到最后,什么都有! 源码通过API获取一些舔狗日记,内置了100多句舔狗日记,让你摆脱上班摸鱼的无聊时光, …

[240621] Anthropic 发布了 Claude 3.5 Sonnet AI 助手 | Socket.IO 拒绝服务漏洞

目录 Anthropic 发布 Claude 3.5 Sonnet AI 助手Scoket.IO 拒绝服务漏洞(CVE-2024-38355) Anthropic 发布 Claude 3.5 Sonnet AI 助手 Claude 3.5 Sonnet: 更智能、更快速、更安全的 AI 助手 一、 引言 Anthropic 发布了 Claude 3.5 Sonnet&#xff0…

C语言中操作符详解(一)

众所周知,在我们的C语言中有着各式各样的操作符,并且在此之前呢,我们已经认识并运用了许许多多的操作符,都是诸君的老朋友了昂 操作符作为我们使用C语言的一个非常非常非常重要的工具,诸君一定要加以重视,…

DevOps学习回顾01-技能发展路线-岗位能力-体系认知

事为先,人为重–事在人为 参考来源: 极客时间专栏:DevOps实战笔记,作者:石雪峰 课程链接:https://time.geekbang.org/column/intro/235 时代的典型特征 VUCA VUCA 是指易变性(Volatility&…