当前位置: 首页 > news >正文

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、磁盘数据的组织和格式

典型的参数
20GB60GB
39813 柱面28733 柱面
16 头16 头
63 扇区255 扇区

柱面 -- 磁道数;头 -- 盘面数

4、磁盘的访问过程

由三个动作组成:

  1. 寻道:磁头移动定位到指定的磁道。
  2. 旋转延迟:等待指定的扇区从磁头下旋转经过。
  3. 数据传输:数据在磁盘与内存之间的实际传输。

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&#xff0c;y0)&#xff08;⚠️即(row0,col50)&#xff09;的像素值&#xff0c;可以这样做&#xff1a;mat.ptr<uchar>(0)[50]。 在本节将介绍另外几种直接读…...

Winforms不可见组件开发

Winforms不可见组件开发 首先介绍基本知识,有很多的朋友搞不清楚Component与Control之间的区别,比较简单形象的区别有下面两点: 1、Component在运行时不能呈现UI,而Control可以在运行时呈现UI。 2、Component是贴在容器Container上的,而Control则是贴…...

静态链接库与动态链接库

静态链接库与动态链接库 一、从源程序到可执行文件二、编译、链接和装入三、静态链接库与动态链接库四、静态链接库与动态链接库的制作与使用1.静态库的制作及使用2.动态库的制作及使用 一、从源程序到可执行文件 由于计算机无法直接理解和执行高级语言&#xff08;C、C、Java…...

ffmpeg 抓取一帧数据

FFmpeg功能比较强大&#xff0c;这里记录一条从摄像机抓拍的一条命令&#xff1a; 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 ; ---执行成功。 这是一条网络摄像机的抓图命令&#xff0c;其实就…...

学好数据结构的秘诀

学好数据结构的秘诀 作为计算机专业的一名“老兵”&#xff0c;笔者从事数据结构和算法的研究已经近20余年了&#xff0c;在学习的过程中&#xff0c;也会遇到一些问题&#xff0c;但在解决问题时&#xff0c;积累了一些经验&#xff0c;为了让读者在学习数据结构的过程中少走…...

IT知识百科:什么是下一代防火墙和IPS?

引言 随着网络攻击的日益增多&#xff0c;防火墙和入侵防御系统&#xff08;Intrusion Prevention System, IPS&#xff09;已成为企业网络安全的必备设备。然而&#xff0c;传统的防火墙和IPS已经无法满足复杂多变的网络安全威胁&#xff0c;因此&#xff0c;下一代防火墙和I…...

常量指针和指针常量, top-level const和low-level const

区分常量指针和指针常量&#xff0c;并且认识什么是top-level const和low-level const。 1.判别&#xff1a; 拿到一个指针&#xff08;例如const int* a),就从左往右读&#xff0c;只看const和*。const读作常量&#xff0c;*读作指针,int类型这些不用管。 2.指针常量 int a…...

【iOS】-- GET和POST(NSURLSession)

文章目录 NSURLSessionGET和POST区别 GET方法GET请求步骤 POSTPOST请求步骤 NSURLSessionDataDelegate代理方法AFNetWorking添加头文件GETPOST第一种第二种 NSURLSession 使用NSURLSession&#xff0c;一般有两步操作&#xff1a;通过NSURLSession的实例创建task&#xff1b;执…...

@RequestBody,@RequestParam,@RequestPart应用场景和区别

ReqeustBody 使用此注解接收参数时&#xff0c;适用于请求体格式为 application/json&#xff0c;只能用对象接收 RequestParam 支持application/json&#xff0c;也同样支持multipart/form-data请求 RequestPart RequestPart这个注解用在multipart/form-data表单提交请求的方法…...

libevent高并发网络编程 - 02_libevent缓冲IO之bufferevent

文章目录 1. 为什么需要缓冲区&#xff1f;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(…...

院内导航移动导诊服务体系,院内导航怎么实现?

院内导航怎么实现&#xff1f;经过多年发展&#xff0c;医院规模愈加庞大&#xff0c;尤其是综合性医院&#xff0c;院区面积较大&#xff0c;门诊、医技、住院等大楼及楼区内部设计复杂&#xff0c;科室、诊室数量众多&#xff0c;对于新患者犹如进入了迷宫&#xff0c;客观环…...

MCTP协议和NCSI

MCTP&#xff08;Management Component Transport Protocol&#xff09;是一种管理组件传输协议&#xff0c;用于在计算机系统中管理各种组件&#xff0c;例如固件、BIOS、操作系统等。MCTP 协议定义了一种传输格式&#xff0c;以便在各种总线上进行通信&#xff0c;例如 PCIe、…...

Jmeter接口测试流程详解

1、jmeter简介 Jmeter是由Apache公司开发的java开源项目&#xff0c;所以想要使用它必须基于java环境才可以&#xff1b; Jmeter采用多线程&#xff0c;允许通过多个线程并发取样或通过独立的线程对不同的功能同时取样。 2、jmeter安装 首先需要安装jdk&#xff08;最好是最…...

怎样使用Web自动化测试减少手动劳动?以百度网站为例

从入门到精通&#xff01;企业级接口自动化测试实战&#xff0c;详细教学&#xff01;&#xff08;自学必备视频&#xff09; 目录 摘要 步骤1&#xff1a;安装和配置Selenium 步骤2&#xff1a;启动浏览器并访问百度网站 步骤3&#xff1a;关闭浏览器 总结 摘要 本指南将…...

union和位域的混合使用

1、union&#xff08;共用体&#xff09; 1.1、概述 C 语言中&#xff0c;union是一种数据类型&#xff0c;对比于结构体&#xff0c;结构体中的每个成员都占用独立的内存空间&#xff0c;而联合中所有的成员都共享同一个内存空间。 也就是说&#xff0c;union中的不同成员要…...

PMP 高项 07-项目质量管理

项目质量管理 概念 质量的基本概念 克劳斯比&#xff1a;符合要求 戴明&#xff1a;低成本条件下可预测的一致性和可靠度&#xff0c;适应市场需要 朱兰&#xff1a;适用性&#xff0c;满足客户需要 国际标准化组织&#xff1a;质量是反映实体&#xff08;产品、过程或活动等…...

鸿蒙Hi3861学习十一-Huawei LiteOS-M(内存池)

一、简介 LiteOS将内核与内存管理分开实现&#xff0c;操作系统内核仅规定了必要的内存管理函数原型&#xff0c;而不关心这些内存管理函数是如何实现的。 LiteOS内存管理模块管理系统的内存资源&#xff0c;包括&#xff1a;初始化、分配、释放。 不采用C标准库中的内存管理函…...

MySQL原理(七):内存管理和磁盘管理

前言 上一篇介绍了 MySQL 的日志&#xff0c;这一篇将介绍内存管理和磁盘管理相关的内容。 内存管理 MySQL 的数据都是存在磁盘中的&#xff0c;我们要更新一条记录的时候&#xff0c;得先要从磁盘读取该记录&#xff0c;然后在内存中修改这条记录。修改完这条记录后会缓存起…...

【Shell脚本】Linux安装Nginx以及开机自启

目录 一、Linux安装Nginx脚本1、把编写好的安装Nginx脚本放置到nginx.sh文件中2、在检查网络的时候&#xff0c;这里的IP地址&#xff0c;填写的需要安装Nginx服务器的IP地址3、这里的端口号可按照自己的需要进行修改4、安装Nginx脚本 二、Nginx开机自启 一、Linux安装Nginx脚本…...

solidworks三维建模竞赛练习题

solidworks三维建模竞赛练习题&#xff1a;3D01‐ 01 solidworks三维建模竞赛练习题&#xff1a;3D01‐ 02 solidworks三维建模竞赛练习题&#xff1a;3D01‐ 03 solidworks三维建模竞赛练习题&#xff1a;3D01‐ 04 solidworks三维建模竞赛练习题&#xff1a;3D01‐ 05 solidw…...

Redis---订阅和发布

目录 消息系统命令 消息系统 ​ 发布/订阅&#xff0c;即 pub/sub&#xff0c;是一种消息通信模式&#xff1a;发布者也称为消息生产者&#xff0c;生产和发送消息到存储系统&#xff1b;订阅者也称为消息消费者&#xff0c;从存储系统接收和消费消息。这个存储系统可以是文件系…...

使用Statsmodel进行假设检验和线性回归

如果你使用 Python 处理数据&#xff0c;你可能听说过 statsmodel 库。Statsmodels 是一个 Python 模块&#xff0c;它提供各种统计模型和函数来探索、分析和可视化数据。该库广泛用于学术研究、金融和数据科学。在本文中&#xff0c;我们将介绍 statsmodel 库的基础知识、如何…...