DJ5-8 磁盘存储器的性能和调度
目录
5.8.1 磁盘性能简述
1、磁盘的结构和布局
2、磁盘的类型
3、磁盘数据的组织和格式
4、磁盘的访问过程
5、磁盘访问时间
5.8.2 磁盘调度算法
1、先来先服务 FCFS
2、最短寻道时间优先 SSTF
3、扫描算法(电梯算法)SCAN
4、循环扫描算法 CSCAN
5、磁臂粘着
6、调度算法的选择
5.8.1 磁盘性能简述
1、磁盘的结构和布局

图中水墨色空心圆柱就是所有盘面上的 0 号磁道对应的柱面。
- 磁盘片:每个磁盘片都有两个盘面,一个磁盘可以有一个或多个磁盘片。
- 盘面上有:磁道 -- 扇区,磁道间隔 -- 扇区间隔。
- 磁道:用于记录信息,每个磁道又被分为了多个扇区。
- 扇区:又被称为盘块或数据块,大小为 600B,存储数据 512B 。
- 柱面:所有盘面上位于同一磁道号上的所有磁道组成一个柱面。
- 磁头:每一个盘面都有一个磁头。
扇区除了存储数据的字节,其它的字节用于校验数据和记录状态。
物理地址形式:柱面号 -- 磁头号 -- 扇区号
柱面号用于指示是哪个磁道,磁头号用于指示是哪个盘面。
2、磁盘的类型
- 固定头磁盘:每个磁道都有一个磁头,I/O 速度快。
- 移动头磁盘:每个盘面仅有一个磁头,I/O 速度慢。
3、磁盘数据的组织和格式

| 典型的参数 | |
| 20GB | 60GB |
| 39813 柱面 | 28733 柱面 |
| 16 头 | 16 头 |
| 63 扇区 | 255 扇区 |
柱面 -- 磁道数;头 -- 盘面数
4、磁盘的访问过程
由三个动作组成:
- 寻道:磁头移动定位到指定的磁道。
- 旋转延迟:等待指定的扇区从磁头下旋转经过。
- 数据传输:数据在磁盘与内存之间的实际传输。
5、磁盘访问时间

旋转延迟时间取的是一个均值,极端情况分别为:扇区刚好在磁头下和扇区刚好错过磁头。
5.8.2 磁盘调度算法
当有多个进程都请求访问磁盘时,由于它们访问的磁道各不相同,因此磁头需要频繁地来回移动以进行寻道操作。
磁头的寻道操作属于机械运动,花费的时间较长,而且过度的寻道操作会大大缩短磁盘的寿命。因此,必须采用适当的磁盘调度算法,使得在尽可能公平的情况下,缩短平均寻道时间,并使磁头移动距离最小。
1、先来先服务 FCFS
按访问请求到达的先后次序服务。
- 优点:简单,公平。
- 缺点:效率不高。
相邻两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间,对机械也不利。
例、假设磁盘访问序列:98,183,37,122,14,124,65,67,磁头起始位置:53,问:
- 安排磁头的服务序列
- 计算磁头移动总道数

- 磁头移动总道数:640
- 平均寻道长度:80
2、最短寻道时间优先 SSTF
优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先。
- 优点:改善了磁盘平均服务时间。
- 缺点:造成某些访问请求长期等待得不到服务。
注意:计算时一定要仔细,不要选错了下一磁道!

- 磁头移动总道数:236
- 平均寻道长度:29.5
SSTF 算法虽然能获得较好的寻道性能, 但却可能导致某个进程发生饥饿现象。因为只要不断有新进程的请求到达,且其所要访问的磁道与磁头当前所在磁道的距离较近,这种新进程的 I/O 请求将会被优先满足。而距离较远的老进程将会一直得不到满足。
3、扫描算法(电梯算法)SCAN
对 SSTF 算法略加修改后所形成的 SCAN 算法, 即可防止进程出现饥饿现象。SCAN 算法克服了 SSTF 算法的缺点,既考虑了距离又考虑了方向。
SCAN 具体做法
① 当设备无访问请求时,磁头不动;
② 当设备有访问请求时,磁头按一个方向移动。在移动的过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;
③ 否则改变移动方向,并为经过的访问请求服务,如此反复。
SCAN 算法举例
例、假设磁盘访问序列:98,183,37,122,14,124,65,67,磁头起始位置:53,并且此时磁头是在向内移动。

- 磁头移动总道数:208
- 平均寻道长度:26
SCAN 算法的优缺点
① 优点:SCAN 算法既能获得较好的寻道性能,又能防止饥饿现象,故被广泛用于大、中、小型机器和网络中的磁盘调度。
② 缺点:当磁头刚从里向外移动而越过了某一磁道时,恰好又有一进程请求访问此磁道,这时,该进程必须等待,待磁头继续从里向外,然后再从外向里扫描完所有要访问的磁道后,才处理该进程的请求,致使该进程的请求被大大地推迟。
为了减少这种延迟,推出 CSCAN 算法,规定磁头单向移动。
4、循环扫描算法 CSCAN
SCAN 算法杜绝了饥饿,但假如对磁道的请求是均匀分布的,那么在磁头改变方向时便会发现:靠近磁头的请求很少(因为改变方向前刚刚服务过),而远离磁头的请求较多,从而导致这些请求的等待时间较长。
CSCAN 具体做法
- 总是按照一个方向进行移动,假设是从里向外移动。
- 移动臂到达最后一个柱面后,立即带动磁头快速返回到最里的欲访问磁道。
- 返回时磁头不为任何访问请求服务,直到返回后才开始对访问请求进行扫描。
CSCAN 算法举例
虽然返回的过程中没有为任何访问请求进行服务,但是在计算总磁道时还是要计算返回时移动经过的磁道数。
例、假设磁盘访问序列:98,183,37,122,14,124,65,67,磁头起始位置:53,并且此时磁头是在向外移动。

- 磁头移动总道数:352
- 平均寻道长度:44
5、磁臂粘着
在 SSTF、SCAN 及 CSCAN 这几种调度算法中, 都可能出现磁臂停留在某处不动的情况。
例如,有一个或几个进程对某一磁道有较高的访问频率, 即这个/这些进程反复请求对某一磁道的 I/O 操作,从而垄断了整个磁盘设备。
我们把这一现象称为磁臂粘着(Armstickiness)。
在高密度磁盘上容易出现此情况:因为与低密度磁盘相比,它在一个扇区/一条磁道中容纳的数据更多,所以可能导致进程需要多次访问才能读取完其中的数据。
6、调度算法的选择
- 实际系统相当普遍地采用 SSTF 算法,因为它简单有效且性价比好。
- SCAN 算法更适用于磁盘负担重的系统。
- 磁盘负担很轻的系统也可以采用 FCFS 算法。
一般要将磁盘调度算法作为操作系统的单独模块编写,利于修改和更换。
相关文章:
DJ5-8 磁盘存储器的性能和调度
目录 5.8.1 磁盘性能简述 1、磁盘的结构和布局 2、磁盘的类型 3、磁盘数据的组织和格式 4、磁盘的访问过程 5、磁盘访问时间 5.8.2 磁盘调度算法 1、先来先服务 FCFS 2、最短寻道时间优先 SSTF 3、扫描算法(电梯算法)SCAN 4、循环扫描算法 …...
springboot+vue留守儿童爱心网站(源码+文档)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的留守儿童爱心网站。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风…...
数字设计小思 - 谈谈非理想时钟的时钟偏差
写在前面 本系列整理数字系统设计的相关知识体系架构,为了方便后续自己查阅与求职准备。在FPGA和ASIC设计中,时钟信号的好坏很大程度上影响了整个系统的稳定性,本文主要介绍了数字设计中的非理想时钟的偏差来源与影响。 (本文长…...
智慧厕所引导系统的应用
智慧公厕引导系统是一种基于智能化技术的公厕管理系统,可以为如厕者提供更加便捷、舒适、安全的如厕环境和服务,同时也可以引导如厕者文明如厕,营造文明公厕的氛围。智慧公厕引导系统可以通过智能引导屏、手机小程序等方式,为如厕…...
眼球追踪、HDR、VST,从代码挖掘Valve下一代VR头显
擅长爆料、挖掘线索的Brad Lynch,此前发布了Quest Pro等设备的线索文章引发关注。近期,又公布一系列与“Valve Deckard”VR头显相关消息,比如支持眼球追踪、HDR、VST透视、Wi-Fi网络等等。在SteamVR 1.26.1测试版更新、Steam用户端、Gamesc…...
【MYSQL】聚合函数和单表/多表查询练习、子查询、内外连接
目录 1.聚合函数 1.1.group by子句 1.2.having语句 2.单表查询 2.2单表查询 3.多表查询 3.2.子查询 5.内链接 6.外连接 1.聚合函数 函数说明count返回查询到的数据的数量sum返回查询到的数据的总和avg返回查询到的数据的平均值max返回查询到的数据的最大值min返回查询…...
分布式数据库集成解决方案
分布式数据库集成解决方案 分析访问部署扩展.1 以界面方式创建数据库(采用DBCA) # 背景 由于公司业务的发展,要求在其它三个城市设立货仓,处理发货业务。公司本部运行着一套用Sybase数据库的MIS系统可以实现发货,该系统…...
如何配置静态路由?这个实例详解交换机的静态路由配置
一、什么是静态路由 静态路由是一种路由的方式,它需要通过手动配置。静态路由与动态路由不同,静态路由是固定的,不会改变。一般来说,静态路由是由网络管理员逐项加入路由表,简单来说,就是需要手动添加的。…...
OpenCV教程——图像操作。读写像素值,与/或/非/异或操作,ROI
1.读取像素值 我们可以通过mat.ptr<uchar>()获取图像某一行像素数组的指针。因此如果想要读取点(x50,y0)(⚠️即(row0,col50))的像素值,可以这样做:mat.ptr<uchar>(0)[50]。 在本节将介绍另外几种直接读…...
Winforms不可见组件开发
Winforms不可见组件开发 首先介绍基本知识,有很多的朋友搞不清楚Component与Control之间的区别,比较简单形象的区别有下面两点: 1、Component在运行时不能呈现UI,而Control可以在运行时呈现UI。 2、Component是贴在容器Container上的,而Control则是贴…...
静态链接库与动态链接库
静态链接库与动态链接库 一、从源程序到可执行文件二、编译、链接和装入三、静态链接库与动态链接库四、静态链接库与动态链接库的制作与使用1.静态库的制作及使用2.动态库的制作及使用 一、从源程序到可执行文件 由于计算机无法直接理解和执行高级语言(C、C、Java…...
ffmpeg 抓取一帧数据
FFmpeg功能比较强大,这里记录一条从摄像机抓拍的一条命令: ffmpeg.exe -i rtsp://admin:hisense2021192.168.1.64:554/live0.264 -r 1 -ss 00:00:00 -t 00:00:01 -f image2 image.jpg ; ---执行成功。 这是一条网络摄像机的抓图命令,其实就…...
学好数据结构的秘诀
学好数据结构的秘诀 作为计算机专业的一名“老兵”,笔者从事数据结构和算法的研究已经近20余年了,在学习的过程中,也会遇到一些问题,但在解决问题时,积累了一些经验,为了让读者在学习数据结构的过程中少走…...
IT知识百科:什么是下一代防火墙和IPS?
引言 随着网络攻击的日益增多,防火墙和入侵防御系统(Intrusion Prevention System, IPS)已成为企业网络安全的必备设备。然而,传统的防火墙和IPS已经无法满足复杂多变的网络安全威胁,因此,下一代防火墙和I…...
常量指针和指针常量, top-level const和low-level const
区分常量指针和指针常量,并且认识什么是top-level const和low-level const。 1.判别: 拿到一个指针(例如const int* a),就从左往右读,只看const和*。const读作常量,*读作指针,int类型这些不用管。 2.指针常量 int a…...
【iOS】-- GET和POST(NSURLSession)
文章目录 NSURLSessionGET和POST区别 GET方法GET请求步骤 POSTPOST请求步骤 NSURLSessionDataDelegate代理方法AFNetWorking添加头文件GETPOST第一种第二种 NSURLSession 使用NSURLSession,一般有两步操作:通过NSURLSession的实例创建task;执…...
@RequestBody,@RequestParam,@RequestPart应用场景和区别
ReqeustBody 使用此注解接收参数时,适用于请求体格式为 application/json,只能用对象接收 RequestParam 支持application/json,也同样支持multipart/form-data请求 RequestPart RequestPart这个注解用在multipart/form-data表单提交请求的方法…...
libevent高并发网络编程 - 02_libevent缓冲IO之bufferevent
文章目录 1. 为什么需要缓冲区?2. 水位3. bufferevent常用API3.1 evconnlistener_new_bind()3.2 evconnlistener_free()3.3 bufferevent_socket_new()3.4 bufferevent_enable()3.5 bufferevent_set_timeouts()3.6 bufferevent_setcb()3.7 bufferevent_setwatermark(…...
院内导航移动导诊服务体系,院内导航怎么实现?
院内导航怎么实现?经过多年发展,医院规模愈加庞大,尤其是综合性医院,院区面积较大,门诊、医技、住院等大楼及楼区内部设计复杂,科室、诊室数量众多,对于新患者犹如进入了迷宫,客观环…...
MCTP协议和NCSI
MCTP(Management Component Transport Protocol)是一种管理组件传输协议,用于在计算机系统中管理各种组件,例如固件、BIOS、操作系统等。MCTP 协议定义了一种传输格式,以便在各种总线上进行通信,例如 PCIe、…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
