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

news2025/1/11 7:47:55

一战成硕

    • 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算法
磁头移动只需要到达最远端的一个请求即可返回,不需要到达磁盘端点。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Linux安装DMETL5与卸载

Linux安装DMETL5与卸载 环境介绍1 DM8数据库配置1.1 DM8数据库安装1.2 初始化达梦数据库1.3 创建DMETL使用的数据库用户 2 配置DMETL52.1 解压DMETL5安装包2.2 安装调度器2.3 安装执行器2.4 安装管理器2.5 启动dmetl5 调度器2.6 启动dmetl5 执行器2.7 启动dmetl5 管理器2.8 查看…

LangGPT作者教你编写高质量提示词

CoT和ToT能够提升表现,但是会使得模型的使用变复杂。在对话的场景下容易消耗人的耐心;实际应用的场景下,比较消耗人的token。 还有一点需要说明的是,我们在写自己的prompt的时候,不应该盲目地追求和堆砌提示词技巧&am…

Unity 预制体放在场景中可见,通过代码复制出来不可见的处理

首先我制作了一个预制体,在场景中是可见的,如下图 无论是Scene视图,还是Game视图都正常。 我把预制体放到Resources里面,然后我通过如下代码复制到同个父物体下。 GameObject obj1 Instantiate(Resources.Load("Butcon&quo…

Django+vue前后端分离实战--vue后台管理系统--vue环境安装项目创建

Djangovue前后端分离实战--vue后台管理系统 安装nodejsvue clivue-cli创建项目 安装nodejsvue cli 1、下载nodejs并安装 https://nodejs.org/dist/v20.9.0/node-v20.9.0-x64.msi 2、修改npm 默认仓库地址,要修改成taobao的镜像npm 仓库地址 cmd下命令&#xff1a…

sql注入 [极客大挑战 2019]LoveSQL 1

打开题目 几次尝试,发现输1 1",页面都会回显NO,Wrong username password!!! 只有输入1,页面报错,说明是单引号的字符型注入 那我们万能密码试试能不能登录 1 or 11 # 成功登录 得到账号…

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

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

微服务实战系列之Token

前言 什么是“Token”? 它是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便返回给客户端;以后客户端只携带此Token请求数据即可。 简言之,Token其实就是用户身…

VBA_MF系列技术资料1-222

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧,我参考大量的资料,并结合自己的经验总结了这份MF系列VBA技术综合资料,而且开放源码(MF04除外),其中MF01-04属于定…

Rxswift(1)

基础用法 数据绑定核心Observerable 可监听序列 数据绑定 平常的写法 let image: UIImage UIImage(named: ...) imageView.image image绑定的写法 //可监听序列 let image: Observable<UIImage> ... //imageView.rx.image 观察者 image.bind(to: imageView.rx.image…

python爬取穷游网景点评论

爬取穷游网的景点评论数据&#xff0c;使用selenium爬取edge浏览器的网页文本数据。 同程的评论数据还是比较好爬取&#xff0c;不像大众点评需要你登录验证杂七杂八的&#xff0c;只需要找准你想要爬取的网页链接就能拿到想要的文本数据。 这里就不得不提一下爬取过程中遇到的…

echarts双轴右边的轴刻度不显示

图表单轴的时候&#xff0c;yAxis 和 series 是一个对象&#xff0c;但是当双轴显示的时候&#xff0c;yAxis 和 series 就都是一个数组里面包含两个对象&#xff0c;如果是多轴&#xff0c;就是多个对象 看下代码&#xff0c;关键代码 yAxisIndex: 1, 多轴的时候需要指定ind…

【2023春李宏毅机器学习】快速了解机器学习基本原理

文章目录 机器学习约等于机器自动找一个函数 机器学习分类 regression&#xff1a;输出为连续值classification&#xff1a;输出为一个类别structured learning&#xff1a;又叫生成式学习generative learning 生成有结构的物件&#xff08;如&#xff1a;影像、句子&#xf…

matplotlib 绘制双纵坐标轴图像

效果图&#xff1a; 代码&#xff1a; 由于使用了两组y axis&#xff0c;如果直接使用ax.legend绘制图例&#xff0c;会得到两个图例。而下面的代码将两个图例合并显示。 import matplotlib.pyplot as plt import numpy as npdata np.random.randint(low0,high5,size(3,4)) …

【Unity】XML文件的解析和生成

目录 使用XPath路径语法解析 使用xml语法解析 XML文件的生成 XML文件是一种常用的数据交换格式&#xff0c;它以文本形式存储数据&#xff0c;并使用标签来描述数据。解析和生成XML文件是软件开发中常见的任务。 解析XML文件是指从XML文件中读取数据的过程。在.NET中&#…

【入门篇】1.2 Redis 客户端之 Jedis 详解和示例

文章目录 1. 简介2. Jedis的依赖下载Jedis导入Jedis jar包配置Redis服务器的地址和端口 3. Jedis 的基本操作连接 Redis 服务器设置和获取字符串类型的键值对判断键是否存在删除键设置键的过期时间 4. Jedis 的数据类型操作字符串类型列表类型集合类型哈希类型有序集合类型 5. …

指针传2(续集)

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

Pandas 将DataFrame中单元格内的列表拆分成单独的行

使用 explode 函数 import pandas as pddata {month: [1, 2],week: [[i for i in range(2)], [i for i in range(3)]]} df pd.DataFrame(data) print(df)df df.explode(week) print(df)

Spring3新特性:graalvm打包Springboot+Mybatis

Spring3新特性 graalvm打包SpringbootMybatis 项目源代码 https://github.com/cmdch2017/SpringNative_Graalvm_Mybatis 如何安装与运行 安装graalvm与配置环境 首先安装步骤参考这篇博客 https://blog.csdn.net/weixin_38943666/article/details/129505945 其次如何处理…

【Python大数据笔记_day10_Hive调优及Hadoop进阶】

hive调优 hive官方配置url: Configuration Properties - Apache Hive - Apache Software Foundation hive命令和参数配置 hive参数配置的意义: 开发Hive应用/调优时&#xff0c;不可避免地需要设定Hive的参数。设定Hive的参数可以调优HQL代码的执行效率&#xff0c;或帮助定位问…

图像生成colab集合

不过colab会做检测&#xff0c;一般文生图算法是基本很难跑起来的。 https://github.com/camenduruhttps://github.com/camenduru这哥们有很多colab。 1.stable-diffusion-webui https://colab.research.google.com/drive/1Iy-xW9t1-OQWhb0hNxueGij8phCyluOh#scrollTow3KNZ-…