磁盘结构、访问时间、调度算法

news2024/12/27 20:00:33

目录

一、什么是磁盘?

二、磁盘分类

1、从磁头分

2、通过盘面分

三、一次磁盘读/写的时间

四、磁盘调度算法

1、先来先到服务算法FCFS

2、最短寻找时间优先SSTF

3、扫描算法(SCAN)

4、LOOk算法

5、循环扫描算法(C-SCAN)

6、C-LOOK算法

五、减少读取延迟的方法

1、交替编号扇区

2、磁盘地址结构的设计

3、交错编号法

六、磁盘管理

1、初始化

2、引导块

3、坏块管理


一、什么是磁盘?

磁道、扇区、磁头臂、盘面、柱面
内扇区密度大
每一个盘面一个磁头
所有磁头连在一个磁臂上,只能共进退
同一个同同心圆的磁道构成一个柱面
一个扇区就是一个物理块,一般为512B
一个物理块地址用(柱面号,盘面号,扇区号)来识别
因此,读取一个块,需要做:
(1)移动磁臂,找到柱面
(2)激活盘面磁臂
(3)旋转找到扇区

二、磁盘分类

1、从磁头分

活动磁头:一个盘面只有一个磁头,通过移动找到磁道和柱面
固定磁头:每一个磁道有一个磁头

2、通过盘面分

盘片可以更换:可换盘磁盘
盘片不可更换:固定盘磁道

三、一次磁盘读/写的时间

寻道时间:
(1)启动磁头的时间s
(2)移动磁头的时间,跨越一个磁道m,需跨越n个磁道:m*n
总功寻道时间:s+m*ns

延迟时间:
定位到磁道的固定扇区的时间
平均时间为:1/2r
(平均要转半圈才能找到对应扇区)

传输时间:
(b/N)/r
b为读/写数据量,N为一个磁道的总数据量
b/N表示:数据需要几个磁道

四、磁盘调度算法

为什么有磁盘调度算法?
因为对于磁盘来说
延迟时间和数据传输时间是固定的,和磁盘转速有关
唯一可以优化的地方是寻道时间
不同的寻道顺序由不同的速度
下面的这一系列算法本质就是根据不同磁道访问顺序实现的

1、先来先到服务算法FCFS

谁先来就先服务谁

2、最短寻找时间优先SSTF

离谁近就服务谁
但是有可能产生饥饿现象
这是因为比较远的磁道可能很久都不会被服务

3、扫描算法(SCAN)

为了克服最短寻找的饥饿问题
SCAN算法规定:
只有磁头移动到最外侧磁道,才可以往内磁道移动
移动到最内磁道,才可以往外磁道移动
(就是往一个方向走到底才能返回)
缺点:
(1)只有到达最边缘才返回,有时候并没有这个必要
(2)对于各个位置的磁道响应不均匀(加入往右,最右边的磁道短期内被访问两次,而左边的很久才被再访问)

4、LOOk算法

为了解决SCAN算法的不撞南墙不回头的缺点
LOOK算法在移动方向上已经没有了其他请求就折回
(就像边走边观察,因此叫LOOl算法)

5、循环扫描算法(C-SCAN)

为了解决SCAN算法对磁道响应不公平的算法
该算法在达到边缘时,直接折返到另外一端(从最外->最内 / 从最内->最外)
(折返过程不响应任何请求)

6、C-LOOK算法

对于C-SCAN算法来说
该算法和SCAN算法一样,必须要到达最边缘才能折返
但是事实上,如果在移动方向上没有了别的请求就可以折返了
C-LOOK算法就是如此

五、减少读取延迟的方法

1、交替编号扇区

当读取多个连续的扇区时
磁头每读完一个扇区时,还需要一个短暂的准备时间
在这个准备时间内,是不可以进行扇区读取的
因此,读完扇区1之后,如果扇区2是紧挨着的,那么就来不及读取2
这能再转一圈,第二次转到扇区2时才能读取
这样就会导致很慢

如何解决?
交替编号
如图:


扇区的编号不来连续,而是相隔一个扇区
这样,在读取一个扇区之后,经过另一个中间扇区的时间内,磁头就完成了准备时间
此时,到达下一个逻辑连续扇区就可以读取了
而不用等到下一圈,效率更快

2、磁盘地址结构的设计

问题:
为什么磁盘物理地址是(柱面号,盘面号,扇区号)
而不是(盘面号,柱面号,扇区号)?

我们分别来看情况:
(1)盘面号,柱面号,扇区号
假设有两个相邻磁道的数据需要读取
第一次读取A盘面的A柱面的A磁道
下一次读取相邻的磁道
此时,读取的是A盘面的B柱面的B磁道
也就是说,需要读取同一个盘面的两个不同的磁道
读取不同的磁道,就需要启动磁头并移动

(1)柱面号,盘面号,扇区号
同样,访问两个相邻磁道的数据
第一次访问A柱面,A盘面的A磁道
第二次访问A柱面,B盘面的A磁道
此时都属于一个柱面,
因此,不需要移动磁头
这就是这种设计方案的好处

即读取地址连续的磁盘块时,可以减少磁头移动的时间

3、交错编号法

交替命名的前提是:
所有的磁头一起转动
同时,基于物理块的地址是:(柱面号,盘面号,扇区号)
假设有8柱面,4盘面,8扇区
则编号为000 00 000 ~ 111 11 111

现在考虑这样一种情况:
要访问两个连续的磁道
对于第一个磁道,为000 00 000 ~ 000 00 111
下一磁道的位置,为000 01 000 ~ 000 01 111
请跟着想象:
当时访问玩第一个磁道后
要访问哪里?
是下一个盘面的同一个柱面的磁道
如图:

此时,当第一个磁道转两圈读取完毕后
最好的状态是立即读取下一个磁道,位置在同一柱面的下一个盘面
可是,因为磁头读取完一个扇区后需要准备一段时间
因此,如果两个盘面是同步编号的(上下编号对齐)
那么就只能再转一圈,等下一圈才能访问

因此,如果使用交错编号
那么就不用等待了
如图:

六、磁盘管理

1、初始化

(1)低级格式化

将磁盘的各个磁道划分为扇区
扇区分为头、尾、数据区
各种管理数据放在扇区的头和尾
数据区放数据

(2)磁盘分区
分为若若干柱面,例如C、D盘等

(3)逻辑格式化
创建文件系统

2、引导块

每当要开机的时候
需要进行一系列的初始化操作,例如安装操作系统
这就需要执行一些初始化程序,也叫做自举程序(因为是自动完成的)
一般自举程序会放在ROM(只读寄存器)内
在厂家生产时就已经设置好的,不可以更改

可以你不能保证自举程序一直不变
显然放在ROM里是无法解决改变的问题的
怎么办?
只放一个叫做“自举装入程序”的程序在ROM里
完整的自举程序放在磁盘的某个位置,这个位置叫做启动块,启动块是固定的
(拥有启动分区的磁盘称为启动磁盘 / 系统磁盘,例如我们的C盘)
当开机时,CPU先在运行ROM中的自举装入程序
通过该进程找到引导块,将引导块中完整的自举程序读入内存执行,完成初始化
于是,如果要是修改自举程序的话,就可以在内存中进行

3、坏块管理

一般的有两种方式
第一种方式:针对简单的磁盘
在磁盘格式化时,对整个磁盘进行扫描
并对坏块在FAT表中标明
这种方式对操作系统不透明,即可以看得见坏块的存在

第二种方式:对复杂的磁盘而言
设置一个单独的磁盘控制器会维护一个坏块链表(磁盘内部自带的硬件)
磁盘出厂时,对坏块链表初始化,并在后期不断维护
同时会保留一些备用块,用于替换坏块,这样方案叫做扇区备用
在这种方式中,坏块对操作系统透明
即操作系统看不到坏块的存在
 

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

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

相关文章

重生之我在异世界学编程之C语言:深入预处理篇(上)

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一、预处理的作用与流程&#xf…

Github——网页版上传文件夹

第一步:创建一个新的仓库或进入已存在的仓库页面 第二步:点进对应的文件夹下,然后 点击 “Upload files” 第三步:将文件夹拖拽到上传区域 打开资源管理器,将要上传的文件夹从计算机中拖拽到上传区域。 注意&#xf…

LeetCode - Google 校招100题 第6天 回溯法(Backtracking) (8题)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144743505 LeetCode 合计最常见的 112 题: 校招100题 第1天 链表(List) (19题)校招100题 第2天 树(Tree) (21题)校招100题 第3天 动态规划(DP) (20题)

flask后端开发(2):URL与视图

目录 URL定义request获取请求参数 gitcode地址: https://gitcode.com/qq_43920838/flask_project.git URL定义 from flask import FlaskappFlask(__name__)app.route(/) def hello_world():return Hello World!app.route(/profile) def profile():return 我是个人…

<数据集>风力发电机损伤识别数据集<目标检测>

数据集下载链接 <数据集>风力发电机损伤识别数据集<目标检测>https://download.csdn.net/download/qq_53332949/90187097数据集格式:VOCYOLO格式 图片数量:2527张 标注数量(xml文件个数):252…

【工具推荐】MobaXterm远程终端管理工具最全攻略,涉及下载、安装、字体配置、中文汉化版、中文显示乱码和中文输入乱码、adb tab无效无法补全、Telnet/ssh使用说明、使用技巧等保姆级教程

MobaXterm远程终端管理工具史上最全攻略,涉及下载、安装、字体等配置、解决中文乱码、Telnet/ssh/Serial使用教程、高级功能使用技巧等。MobaXterm 是一个增强型的 Windows 终端。其为 Windows 桌面提供所有重要的远程网络终端工具(如 SSH、X11、RDP、VN…

19、鸿蒙学习——配置HDC命令 环境变量

一、下载Command Line Tools 可参考上篇《鸿蒙学习——配置OHPM、hvigor环境变量》 二、配置hdc环境变量 hdc命令行工具用于HarmonyOS应用/元服务调试所需的工具,该工具存放在命令行工具自带的sdk下的toolchains目录中。为方便使用hdc命令行工具,请将…

Go语言及MongoDB数据库安装配置详解!

Go语言安装 首先讲一下go语言的安装,这部分可直接从官网下载,基本上一键配置的: 官网地址:All releases - The Go Programming Language 选择自己对应系统的安装包,这里官网提供了5种不同的包可自行下载 之后便是默认…

Linux配置ODBC连接Mysql

1、安装mysql 2、安装unixodbc odbcinst -j 查询unixodbc版本以及配置文件路径 3、安装mysql-connector-odbc ####下载 wget https://cdn.mysql.com/archives/mysql-connector-odbc-9.0/mysql-connector-odbc-9.0.0-1.el7.x86_64.rpm ####安装 rpm -ivh mysql-connector-od…

芯片Tapeout power signoff 之IR Drop Redhawk Ploc文件格式及其意义

数字IC后端工程师在芯片流程最后阶段都会使用redhawk或voltus进行设计的IR Drop功耗signoff分析。必须确保静态,动态ir drop都符合signoff标准。 在做redhawk ir drop分析前,我们需要提供一个redhawk ploc供电点坐标。 数字IC设计后端实现前期预防IR D…

数据仓库工具箱—读书笔记02(Kimball维度建模技术概述03、维度表技术基础)

Kimball维度建模技术概述 记录一下读《数据仓库工具箱》时的思考,摘录一些书中关于维度建模比较重要的思想与大家分享🤣🤣🤣 第二章前言部分作者提到:技术的介绍应该通过涵盖各种行业的熟悉的用例展开(赞同…

设置首选网络类型以及调用Android框架层的隐藏API

在Android SDK中提供的framework.jar是阉割版本的,比如有些类标记为hide,这些类不会被打包到这个jar中,而有些只是类中的某个方法或或属性被标记为hide,则这些类或属性会被打包到framework.jar,但是我们无法调用&#…

3D几何建模引擎Parasolid功能解析

一、什么是Parasolid? Parasolid是由Siemens PLM Software开发的高精度精密几何建模引擎。它全面评估CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAE(计算机辅助工程)、PLM(产品生…

xinput1_3.dll放在哪里?当xinput1_3.dll丢失时的应对策略:详细解决方法汇总

在计算机系统的运行过程中,我们偶尔会遇到一些令人困扰的问题,其中xinput1_3.dll文件丢失就是较为常见的一种情况。这个看似不起眼的动态链接库文件,实则在许多软件和游戏的正常运行中发挥着至关重要的作用。一旦它丢失,可能会导致…

【开源免费】基于SpringBoot+Vue.JS安康旅游网站(JAVA毕业设计)

本文项目编号 T 098 ,文末自助获取源码 \color{red}{T098,文末自助获取源码} T098,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

CSS(三)盒子模型

目录 Content Padding Border Margin 盒子模型计算方式 使用 box-sizing 属性控制盒子模型的计算 所有的HTML元素都可以看作像下图这样一个矩形盒子: 这个模型包括了四个区域:content(内容区域)、padding(内边距…

LeetCode - Google 校招100题 第7天 序列(数据结构贪心) (15题)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144744418 相关文章: LeetCode 合计最常见的 112 题: 校招100题 第1天 链表(List) (19题)校招100题 第2天 树(Tree) (21题)校招100题 第3天 动态规划(DP) (

E-commerce .net+React(一)——项目初始化

文章目录 项目地址一、创建.Net环境1.1环境配置1.1.1 使用vscode创建webapi1.1.2 Clean architecture结构创建1.1.3 将创建好结构的项目添加到git里1.1.4 EF Core配置1. 在infrastructure里安装EF所需环境2. 创建Product数据模型3. 创建EF Core的DbContext 数据库上下文4. 创建…

农家乐系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

NIPS2014 | GAN: 生成对抗网络

Generative Adversarial Nets 摘要-Abstract引言-Introduction相关工作-Related Work对抗网络-Adversarial Nets理论结果-Theoretical Results实验-Experiments优势和不足-Advantages and disadvantages缺点优点 结论及未来工作-Conclusions and future work研究总结未来研究方…