操作系统:输入输出管理(二)磁盘调度算法

一战成硕

    • 5.3 磁盘固态硬盘
      • 5.3.1 磁盘
      • 5.3.2 磁盘的管理
      • 5.3.3 磁盘调度算法

5.3 磁盘固态硬盘

5.3.1 磁盘

磁盘是表面涂有磁性物质的物理盘片,通过一个称为磁头的导体线圈从磁盘存取数据。在读写操作中,磁头固定,磁盘在下面高速旋转。磁盘盘面上的数据存储在一组同心圆中,称为磁道。每个磁道与磁头一样宽,一个盘面有上千个磁道,磁道又划分为几百个扇区,每个扇区固定存储大小,一个扇区称为一个盘块,相邻磁道及相邻扇区通过一定间隙分割开来,以避免精度错误。由于扇区固定圆心角度划分,所以密度从最外道向里道增加,磁盘的存储能力受限于最内道的最大记录密度。
磁盘安装在一个磁盘驱动器中,它由磁头臂,用于旋转磁盘的主轴和用于数据输入输出的电子设备组成,多个盘片垂直堆叠,组成磁盘组,每个盘面对应一个磁头,所有磁头固定在一起,与磁盘中心距离相同且一起移动,所有盘片相对位置相同的磁道组成柱面,扇区是磁盘可寻址的最小单位,磁盘上能存储的物理块数目由扇区数,磁道数及磁盘面数决定,磁盘地址用柱面号·盘面号·扇区号。
磁盘按不同的方式可分为若干类型,磁头相对盘片的途径方向固定的,称为固定头磁盘,每个磁道一个磁头,磁头可移动的,称为活头磁盘,磁头臂可来回伸缩定位磁道,磁盘永远固定在磁盘驱动器中,称为固定盘磁盘,可移动和替换的,称为可换盘磁盘。

5.3.2 磁盘的管理

  1. 磁盘的初始化
    一个新的磁盘只是一个磁性记录材料空白盘,在磁盘可以存储数据之前,必须将他分成扇区,以便磁盘控制器进行读写操作,这个过程称为低级格式化(或物理格式化)低级格式化为每个扇区使用特殊的数据结构,填充磁盘,每个扇区的数据结构通常由头部,数据区域(通常为512B)和尾部组成,头部和尾部包含了一些磁盘控制器的使用信息。
  2. 分区
    在可以使用磁盘存储文件之前,操作系统还要将自己的数据结构记录到磁盘上,分为两部,第一步是将磁盘分为一个或多个柱面组成的分区(即我们熟悉的c盘d盘等形式的分区),每个分区的起始扇区的大小都记录在磁盘主引导记录的分区表中,第二步是,对物理分区进行逻辑格式化(创建文件系统),操作系统将初识的文件系统数据结构存储到磁盘上,这些数据结构包括空闲空间和已分配空间以及一个初识为空目录。
    因扇区单位太小,为了提高效率,操作系统将多个相邻扇区组合在一起,形成一簇,为了更高效地管理磁盘,一簇只能存放一个文件的内容,文件所占用的空间只能是簇的整数倍,如果文件大小小于一簇(甚至是0字节),也要占用一簇的空间。
  3. 引导块
    计算机启动时需要运行一个初始化程序(自举程序),它初始化cpu,寄存器,设备控制器和内存等,接着启动操作系统,为此,自举程序找到磁盘上的操作系统内核,将他加载到内存,并转到起始地址,从而开始操作系统的运行。
    自举程序通常存放在ROM中,为了避免改变自举代码需要改变ROM硬件的问题,通常只在ROM中保留很小的自举程序装入程序,而将完整功能的引导程序保存在磁盘启动块上,启动块位于磁盘固定位置,具有启动分区磁盘称为启动磁盘或系统磁盘。
    在这里插入图片描述
  4. 坏块
    在这里插入图片描述

5.3.3 磁盘调度算法

一次磁盘读写操作时间由寻找(寻道)时间,旋转延迟时间和传输时间决定。
1)寻道时间Ts。活动头磁盘在读写信息前,将磁头移动到指定磁道所需要的时间,这个时间除跨越n条磁道时间外,还包括启动磁臂的时间s。即:
Ts=m*n+s。
m是与磁盘驱动器速度有关的常数,约为0.2ms,磁臂启动时间约为2ms。
2)旋转延迟时间Tr。磁头定位到某一磁道扇区所需要时间,设磁盘的旋转速度为r,则:
Tr=1/2r
对于磁盘,典型的旋转速度为5400转/分,相当于一周11.1ms,则Tr为5.55ms,对于软盘,则其旋转速度为300到600转每分,则Tr为50到100ms。
3)传输时间Tt。从磁盘读出或向磁盘写入数据所经历时间,这个时间取决于每次读写的字节数b和磁盘旋转速度。
Tt=b/rN
r为磁盘每秒的转数,N为一个磁道的字节数。
在磁盘存取时间的计算中。寻道时间与磁盘调度算法相关,而延迟时间的传输时间都与磁盘旋转速度相关,且为线性相关,所以在硬件上,转速是磁盘性能的一个非常重要的参数,总平均存取时间Ta可以表示为:
Ta=Ts+1/2r+b/rN
注意,该平均存取时间公式,但该平均值没有多大意义,因为在实际磁盘IO操作中,存取时间与磁盘调度算法密切相关。

目前常用的磁盘调度算法:
(1)先来先服务(FIFS)
根据进程请求访问磁盘的贤惠顺序进行调度。
公平,若只有少量进程需要访问,且大部分请求都是访问簇聚的文件扇区,则有望达到较好的性能,若有大量进程竞争使用磁盘,则这种算法在性能上往往接近于随机调度,所以实际磁盘调度中会考虑一些更为复杂的调度算法。
在这里插入图片描述
(2)最短寻找时间优先(SSTF)
选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,所在磁道距离最近的磁道,以便使每次的寻找时间最短,但是这种算法会产生饥饿现象。
在这里插入图片描述
(3)扫描算法(电梯调度算法)
在当前移动方向上选择与当前磁头所在磁道距离最近的请求作为下一次服务的对象。
在这里插入图片描述
(4)循环扫描算法
在扫描算法的基础上规定磁头单向移动来提供服务,回返时直接快速移动至起始端而不服务任何请求。
在这里插入图片描述
(5)LOOK算法
磁头移动只需要到达最远端的一个请求即可返回,不需要到达磁盘端点。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

51单片机应用从零开始(六)·逻辑运算

51单片机应用从零开始(一)-CSDN博客 51单片机应用从零开始(二)-CSDN博客 51单片机应用从零开始(三)-CSDN博客 51单片机应用从零开始(四)-CSDN博客 51单片机应用从零开始(…

深度学习(五)softmax 回归之:分类算法介绍,如何加载 Fashion-MINIST 数据集

Softmax 回归 基本原理 回归和分类,是两种深度学习常用方法。回归是对连续的预测(比如我预测根据过去开奖列表下次双色球号),分类是预测离散的类别(手写语音识别,图片识别)。 现在我们已经对回…

redis运维(九)字符串(二)字符串过期时间

一 字符串过期时间 细节点: 注意命令的入参和返回值 ① 再谈过期时间 说明: 设置key的同时并且设置过期时间,是一个原子操作 ② ttl 检查过期时间 ③ persist 删除过期时间 ④ redis 删除过期key的机制 ⑤ 惰性删除 惰性理解:让过期…

自动驾驶-BEV感知综述

BEV感知综述 随着自动驾驶传感器配置多模态化、多源化,将多源信息在unified View下表达变得更加关键。BEV视角下构建的local map对于多源信息融合及理解更加直观简洁,同时对于后续规划控制模块任务的开展也更为方便。BEV感知的核心问题是: …

[Linux版本Debian系统]安装cuda 和对应的cudnn以cuda 12.0为例

写在前面 先检查自己有没有安装使用wget的命令,没有的话输入下面命令安装: apt-get install wget -y查看gcc的安装 sudo apt install gcc #安装gcc gcc --version #查看gcc是否安装成功 #若上述命令不成功使用下面的命令尝试之后再执行上面…

长短期记忆(LSTM)与RNN的比较:突破性的序列训练技术

长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。 Why LSTM提出的动机是为了解…

【powershell】入门和示例

▒ 目录 ▒ 🛫 导读开发环境 1️⃣ 简介用途IDE解决此系统上禁止运行脚本 2️⃣ 语法3️⃣ 实战数据库备份执行循环拷贝文件夹 🛬 文章小结📖 参考资料 🛫 导读 开发环境 版本号描述文章日期2023-11-17操作系统Win10 - 22H21904…

Java JVM虚拟机

加载字节码文件.class 1字节一般为8位 字节码结构: 第一部分 4字节 cafebaby 第二部分 版本号 00 00 00 32, 第三部分 常量数量 count 第四部分常量池 常量类型表示: 继承关系改变 1.1以后 后面是属性方法 等参数 通过javap 反编译class ,javap xx.class javap -c xxx.…

【Redis】springboot整合redis(模拟短信注册)

要保证redis的服务器处于打开状态 上一篇: 基于session的模拟短信注册 https://blog.csdn.net/m0_67930426/article/details/134420531 整个流程是,前端点击获取验证码这个按钮,后端拿到这个请求,通过RandomUtil 工具类的方法生…

.nc格式文件的显示及特殊裁剪方式

最近我们遇到一个nc格式的文件,需要将它做成报告插图,bing搜索一番以后,了解到nc的全名为NetCDF(network Common Data Form),是一种网络通用数据格式,广泛用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。…

【超好用的工具库】hutool-all工具库的基本使用

简介(可不看): hutool-all是一个Java工具库,提供了许多实用的工具类和方法,用于简化Java开发过程中的常见任务。它包含了各种模块,涵盖了字符串操作、日期时间处理、加密解密、文件操作、网络通信、图片处…

指针传2(续集)

近期的天气是真的冷啊,老铁们一定要照顾好自己呀,注意防寒保暖,没有你们我怎么活啊! 上次的指针2的末尾,给大家分享了两个有趣的代码,今天就先来讲一讲那两个代码: 两个有趣的代码:…

Logrotate日志切割工具的应用与配置

Logrotate日志切割工具的应用与配置,以下是公司生产环境亲测,跳了不少的坑,最后已经部署到生产了,可放心使用 简介 Logrotate是一个在Unix和类Unix系统(如Linux)上用于管理日志文件的实用程序。它可以帮助…

官宣定档 | 3大主题论坛重磅行业颁奖,CGT Asia 2024第五届亚洲细胞与基因治疗创新峰会特色亮点抢先看

细胞与基因治疗代表着未来医学发展的趋势,随着技术的不断更新与发展与支持政策的持续推出,细胞与基因治疗产业的希望被无限扩大,自第一批细胞治疗与基因治疗产品上市到如今,行业已经进入快车道,步入高速发展期&#xf…

如何确保消息不会丢失

本篇文章大家还可以通过浏览我的博客阅读。如何确保消息不会丢失 - 胤凯 (oyto.github.io)很多人刚开始接触消息队列的时候&#xff0c;最经常遇到的一个问题就是丢消息了。<!--more-->对于大部分业务来说&#xff0c;丢消息意味着丢数据&#xff0c;是完全无法接受的。 …

C语言--给定一行字符串,获取其中最长单词【图文详解】

一.问题描述 给定一行字符串,获取其中最长单词。 比如&#xff1a;给定一行字符串&#xff1a; hello wo shi xiao xiao su 输出&#xff1a;hello 二.题目分析 “打擂台算法”&#xff0c;具体内容小伙伴们可以参考前面的内容。 三.代码实现 char* MaxWord(const char* str)…

CMakeLists.txt基础指令与cmake-gui生成VS项目的步骤

简介 本博客主要介绍cmake的基本指令&#xff0c;同时&#xff0c;很多使用Visual Studio小白从Gitbub下载项目源码后&#xff0c;看到CMakeLists.txt&#xff0c;不知道如何使用Visual Studio编译源码&#xff1b;针对以上问题&#xff0c;做一下简单操作与解释&#xff0c;方…

c语言-数据结构-堆

目录 一、二叉树 1、二叉树的概念 2、完全二叉树和满二叉树 3、完全二叉树的顺序存储 二、堆 2、堆的概念与结构 3、堆的创建及初始化 4、堆的插入&#xff08;小堆&#xff09; 5、堆的删除 6、显示堆顶元素 7、显示堆里的元素个数 8、测试堆的各个功能 9、 实现堆…

零代码编程:用ChatGPT批量转换多个视频文件夹到音频并自动移动文件夹

有很多个视频文件夹&#xff1a; 要全部转成音频&#xff0c;然后复制到另一个文件夹。 在ChatGPT中输入如下提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个批量将Mp4视频转为Mp3音频的任务&#xff0c;具体步骤如下&#xff1a; 打开文件夹&#xff1a;…

机器学习 天气识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/Nb93582M_5usednAKp_Jtw) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** >- **&#x1f680;…