OS—磁盘和固态硬盘

news2024/9/21 11:06:11

目录

  • 一. 磁盘
  • 二. 磁盘的管理
    • 磁盘初始化
    • 分区
    • 引导块
    • 坏块
  • 三. 磁盘调度算法
    • 磁盘存取时间
    • 磁盘调度算法
      • 先来先服务(FCFS)算法
      • 最短寻道时间优先(Shorted Seek Time First,SSTF)算法
      • 扫描(SCAN)算法
      • LOOK 调度算法
      • 循环扫描(Circular SCAN,C-SCAN)算法
      • C-LOOK 算法
    • 减少延迟时间的方法
    • 提高磁盘 I/O 速度的方法
  • 四. 固态硬盘(SSD)
    • 固态硬盘特性
    • 磨损均衡(Wear Leveling)

一. 磁盘

联想截图_20240731232859.png
联想截图_20240731232948.png
联想截图_20240731233038.png
联想截图_20240731233105.png联想截图_20240731233114.png

二. 磁盘的管理

磁盘初始化

一个新的磁盘只是一个磁性记录材料的空白盘。在磁盘可以存储数据之前,必须将它分成扇区,以便磁盘控制器能够进行读/写操作,这个过程称为低级格式化(或称物理格式化)。
每个扇 区通常由头部、数据区域和尾部组成。头部和尾部包含了一些磁盘控制器的使用信息,其中利用 磁道号、磁头号和扇区号来标志一个扇区,利用CRC字段对扇区进行校验。

大多数磁盘在工厂时作为制造过程的一部分就已低级格式化,这种格式化能够让制造商测试 磁盘,并且初始化逻辑块号到无损磁盘扇区的映射。对于许多磁盘,当磁盘控制器低级格式化时, 还能指定在头部和尾部之间留下多长的数据区,通常选择256或512字节等。

分区

逻辑格式化的内容
在可以使用磁盘存储文件之前,还要完成两个步骤。

  • 第一步是,**将磁盘分区(**我们熟悉的C 盘、D盘等形式的分区),每个分区由一个或多个柱面组成,每个分区的起始扇区和大小都记录 在磁盘主引导记录的分区表中。
  • 第二步是,对物理分区进行逻辑格式化(也称高级格式化),将初始文件系统数据结构存储到磁盘上,这些数据结构包括空闲空间和已分配空间,以及一个初始 为空的目录,建立根目录、对保存空闲磁盘块信息的数据结构进行初始化。

因扇区的单位太小,为了提高效率,操作系统将多个相邻的扇区组合在一起,形成一簇(在 Linux中称为块)。为了更高效地管理磁盘,一簇只能存放一个文件的内容,文件所占用的空间只 能是簇的整数倍;如果文件大小小于一簇(甚至是0字节),也要占用一簇的空间。

引导块

计算机启动时需要运行一个初始化程序(自举程序),它初始化CPU、寄存器、设备控制器 和内存等,接着启动操作系统。为此,自举程序找到磁盘上的操作系统内核,将它加载到内存, 并转到起始地址,从而开始操作系统的运行。
自举程序通常存放在ROM中,为了避免改变自举代码而需要改变ROM硬件的问题,通常 只在ROM中保留很小的自举装入程序,而将完整功能的引导程序保存在磁盘的启动块上,启动 块位于磁盘的固定位置。具有启动分区的磁盘称为启动磁盘或系统磁盘。
引导ROM中的代码指示磁盘控制器将引导块读入内存,然后开始执行,它可以从非固定的 磁盘位置加载整个操作系统,并且开始运行操作系统。下面以Windows为例来分析引导过程。 Windows允许将磁盘分为多个分区,有一个分区为引导分区,它包含操作系统和设备驱动程序。 Windows系统将引导代码存储在磁盘的第0号扇区,它称为主引导记录(MBR)。引导首先运行 ROM中的代码,这个代码指示系统从MBR中读取引导代码。除了包含引导代码,MBR还包含 一个磁盘分区表和一个标志(以指示从哪个分区引导系统),如图5.17所示。当系统找到引导分区时,读取分区的第一个扇区,称为引导扇区,并继续余下的引导过程,包括加载各种系统服务。
联想截图_20240731230711.png

坏块

由于磁盘有移动部件且容错能力弱,因此容易导致一个或多个扇区损坏。部分磁盘甚至在出厂时就有坏块。根据所用的磁盘和控制器,对这些块有多种处理方式。
对于简单磁盘,如采用IDE控制器的磁盘,坏块可手动处理,如MS-DOS的Format命令执 行逻辑格式化时会扫描磁盘以检查坏块。坏块在FAT表上会标明,因此程序不会使用它们。
对于复杂的磁盘,控制器维护磁盘内的坏块列表。这个列表在出厂低级格式化时就已初始化, 并在磁盘的使用过程中不断更新。低级格式化将一些块保留作为备用,操作系统看不到这些块。 控制器可以采用备用块来逻辑地替代坏块,这种方案称为扇区备用。
对坏块的处理实质上就是用某种机制使系统不去使用坏块。

三. 磁盘调度算法

磁盘存取时间

联想截图_20240731233244.png

磁盘调度算法

先来先服务(FCFS)算法

联想截图_20240731233313.png

最短寻道时间优先(Shorted Seek Time First,SSTF)算法

联想截图_20240731233404.png

扫描(SCAN)算法

联想截图_20240731233422.png

LOOK 调度算法

联想截图_20240731233545.png

循环扫描(Circular SCAN,C-SCAN)算法

联想截图_20240731233612.png

C-LOOK 算法

联想截图_20240731233701.png

减少延迟时间的方法

除减少寻道时间外,减少延迟时间也是提高磁盘传输效率的重要因素。
磁盘是连续自转设备,磁头读入一个扇区后,需要经过短暂的处理时间,才能开始读入下一 个扇区。若逻辑上相邻的块在物理上也相邻,则读入几个连续的逻辑块可能需要很长的延迟时间。 为此,可对一个盘面的扇区进行交替编号,即让逻辑上相邻的块物理上保持一定的间隔,于是读入多个连续块时能够减少延迟时间

此外,由于磁盘的所有盘面是同步转动的,逻辑块在相同柱面上也是按盘面号连续存放的, 即按0号盘0号扇区、0号盘1号扇区……0号盘7号扇区、1号盘0号扇区……1号盘7号扇区、 2号盘0号扇区……的顺序存放。要读入不同盘面上的连续块,在读完0号盘7号扇区后,还需 要一段处理时间,所以当磁头首次划过1号盘0号扇区(下一次要读的块)时,并不能读取,只 能等磁头再次划过该扇区时才能读取。为此,可对不同的盘面进行错位命名[假设有2个盘面, 且已采用交替编号],则读入相邻两个盘面的连续块时也能减少延迟时间

在磁盘的存取时间中,寻道时间和延迟时间属于“找”的时间,凡是“找”的时间都可以通 过一定的方法优化,但传输时间是磁盘本身性质所决定的,不能通过一定的措施减少

提高磁盘 I/O 速度的方法

文件的访问速度是衡量文件系统性能最重要的因素,可从以下三个方面来优化:
①改进文件 的目录结构及检索目录的方法,以减少对目录的查找时间;
②选取好的文件存储结构,以提高对 文件的访问速度;
③提高磁盘I/O速度,以实现文件中的数据在磁盘和内存之间快速传送。

其中, ①和②已在第4章文件管理中介绍,这里主要介绍如何提高磁盘I/O的速度。

  • 改善磁盘I/O性能的方法

1)采用磁盘高速缓存
2)调整磁盘请求顺序。即上面介绍的各种磁盘调度算法
3)提前读。在读磁盘当前块时,将下一磁盘块也读入内存缓冲区。
4)延迟写。仅在缓冲区首部设置延迟写标志,然后释放此缓冲区并将其链入空闲缓冲区链 表的尾部,当其他进程申请到此缓冲区时,才真正将缓冲区信息写入磁盘块。
5)优化物理块的分布。除了上面介绍的扇区编号优化,当文件采用链接方式和索引方式组 织时,应尽量将同一个文件的盘块安排在一个磁道上或相邻的磁道上,以减少寻道时间。 另外,将若干盘块组成簇,按簇对文件进行分配,也可减少磁头的平均移动距离。
6)虚拟盘。是指用内存空间去仿真磁盘,又叫RAM盘。常用于存放临时文件。
7)采用磁盘阵列RAID。由于可采用并行交叉存取,因此能大幅提高磁盘I/O速度。(RAID 属于计算机组成原理存储介质部分内容)

四. 固态硬盘(SSD)

联想截图_20240731234021.png

固态硬盘特性

固态硬盘(Solid State Disk,SSD)是一种基于闪存技术的存储器
它与U盘并无本质差别, 只是容量更大,存取性能更好。一个SSD由一个或多个闪存芯片和闪存翻译层组成

  • 比起传统磁盘,SSD有很多优点
    • 它由半导体存储器构成,没有移动的部件,因此随机访问速度比机械磁盘要很多
    • 也没有任何机械噪声和震动,能耗更低、抗震性好、安全性高等。
    • 随着技术的不断发展,价格也不断下降,SSD有望逐步取代传统机械硬盘。

联想截图_20240731234050.png

磨损均衡(Wear Leveling)

固态硬盘也有缺点,闪存的擦写寿命是有限的,一般是几百次到几千次。
如果直接用普通闪 存组装SSD,那么实际的寿命表现可能非常令人失望——读/写数据时会集中在SSD的一部分闪 存,这部分闪存的寿命会损耗得特别快。一旦这部分闪存损坏,整块SSD也就损坏了。
这种磨损不均衡的情况,可能会导致一块256GB的SSD只因数兆空间的闪存损坏而整块损坏。

为了弥补SSD的寿命缺陷,引入了磨损均衡。SSD磨损均衡技术大致分为两种:
1)动态磨损均衡写入数据时,自动选择较新的闪存块。老的闪存块先歇一歇。
2)静态磨损均衡。这种技术更为先进,就算没有数据写入,SSD也会监测并自动进行数据 分配,让老的闪存块承担无须写数据的存储任务,同时让较新的闪存块腾出空间,平常的读/写操作在较新的闪存块中进行。如此一来,各闪存块的寿命损耗就都差不多。

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

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

相关文章

30个可以帮程序员查询很多真相的网址

具体请前往:一站式综合查询导航 - 快递物流查询,国际区号查询,车牌号查询,航班动态查询,教育考试成绩和证书、学历、食品药品标准,招投标,知识产权,专利文献,企业信用,法律文书在线查询

13. 基于标定板的lidar到车体的外参标定思路

目录 1. 什么是lidar到车体的外参?2. 为什么要做这个外参矫正?3. 怎么做这个外参矫正?3.1 标定思路3.2 lidar检测标定板上的圆心流程介绍3.3 匹配过程 4. 老乡别走,一起来读书吧 1. 什么是lidar到车体的外参? 在机器人…

猫头虎分享疑难杂Bug:ERROR: No matching distribution found for beautifulsoup4解决方案

🐯 猫头虎分享疑难杂Bug:ERROR: No matching distribution found for beautifulsoup4解决方案 摘要 Python开发过程中,ERROR: No matching distribution found for beautifulsoup4 是常见错误之一。本文将详细介绍此错误的产生原因及解决方…

2024最详细的安装教程来了!手把手教你安装Python和PyCharm

最详细的Python安装教程 一、进入Python官网首页,下载最新的Python版本 https://www.python.org/downloads/ 选择最新的Python3.10.5,下载64位的版本 二、下载完成后,进行安装 1.双击Python-3.10.5-amd64.exe 2.选择Customize installation…

入门 PyQt6 看过来(案例)21~ 绘图案例

今天带给大家的是一些绘制图形的案例,第一个是绘制奥运图片,第二个是绘制五角星,第三个是绘制时钟。 1 绘制奥运图片 源码: import sys from PyQt6.QtWidgets import QApplication, QWidget from PyQt6.QtCore import Qt, QRect…

CSS mask-image 实现边缘淡出过渡效果

使用场景 在生产环境中,遇到一个需求,需要在一个深色风格的大屏页面中,嵌入 Google Maps。为了减少违和感,希望地图四边能够淡出过渡。 这里的“淡出过渡”,关键是淡出,而非降低透明度。 基于 Google Ma…

科普文:微服务之Spring Cloud Alibaba组件Nacos一致性协议Distro+Raft概叙

一、概要 Nacos是阿里开放的一款中间件,它主要提供三种功能:持久化节点注册,非持久化节点注册和配置管理。 二、一致性协议 - AP/CP Nacos不是纯粹的AP服务,也不是纯粹的CP服务,而是两者同时支持。 这要从服务注册…

【学习日记】静态库与动态库的区别及使用指南

文章目录 静态库与动态库的区别及使用指南静态库定义使用方式优点缺点使用示例创建静态库使用静态库 动态库定义工作原理优点缺点使用示例创建动态库使用动态库 如何区分静态库和动态库总结 封面 静态库与动态库的区别及使用指南 本文将详细介绍这两种库的定义、工作原理、优缺…

【机器学习】为什么使用Scikit-Learn来进行逻辑回归以及如何使用Scikit-Learn进行逻辑回归

引言 在Scikit-Learn中,逻辑回归是通过LogisticRegression类实现的。该类提供了多种方法来训练模型、进行预测以及评估模型性能。用户可以自定义许多参数,包括正则化类型(L1、L2或弹性网)、求解器类型(用于优化问题&am…

Cesium初探

Cesium 是一个开源 JavaScript 库,用于创建 3D 地理空间应用程序。它允许开发者在 Web 浏览器中构建高性能、交互式的 3D 地图和地球可视化应用,而无需安装任何插件。Cesium 支持多种数据格式,包括 3D Tiles(一种高效的 3D 场景流…

变量作用域、作用域链、return

全局变量 全局变量因为在全局操作会每次留存上次操作的结果 局部变量因为执行完成就会被销毁并不会保留本次操作的结果 可以通过传参和返回,将结果不断地专递处理 局部变量 参数也是局部变量 函数内的预解析预赋值 函数内的局部变量 如果同名全局变量遇到局部变量…

Java的jstat命令输出GC信息时携带时间信息(Windows系统中)

之前写了一篇在Linux系统中携带时间的文章:Java的jstat命令输出GC信息时携带时间信息(Linux系统中) 但是很多时候,我们都是在Windows系统中开发,可能有些人没有Linux环境,所以这篇文章就讲一下在Windows系统…

[论文精读]Multi-View Multi-Graph Embedding for Brain Network Clustering Analysis

论文原文:3504035.3504050 (acm.org) 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 省流版 1.1. 心得…

63 epoll服务器 (ET模式)

基于LT模式修改,并加入前面的应用层计算器,实现稍完整的服务器功能 1.修改tcp_socket.hpp,新增非阻塞读和非阻塞写接口 2.对于accept返回的new_sock加上EPOLLET这样的选项 注意:此代码暂时未考虑listen_sock ET的情况&#xff0c…

力扣高频SQL 50题(基础版)第三十九题

文章目录 力扣高频SQL 50题(基础版)第三十九题1327.列出指定时间段内所有的下单产品题目说明实现过程准备数据实现方式结果截图 力扣高频SQL 50题(基础版)第三十九题 1327.列出指定时间段内所有的下单产品 题目说明 表: Produc…

SQLite库笔记:API函数编程

本文主要介绍SQLite库的一些核心API函数,和实现数据库增删查改功能的C语言示例程序代码。 目录 1. API函数原型 1.1 sqlite3_open 1.2 sqlite3_close 1.3 sqlite3_free 1.4 sqlite3_errmsg 1.5 sqlite3_exec 1.6 sqlite3_get_table 1.7 sqlite3_free_table…

springboot废物回收管理商城-计算机毕业设计源码18221

基于Spring boot的废物回收管理商城 摘要 本研究基于Spring Boot框架设计并开发了一款废物回收管理商城系统,旨在有效整合废物回收资源,提高废物回收的效率和便捷性。通过对废物回收市场的调研与分析,结合现代互联网技术和物联网技术&#…

Docker Buildx 简介与安装指南

目录 1.Docker Buildx 简介 1. 引言 2. Docker Buildx 的背景和意义 3. Docker Buildx 的主要特性 4. 为什么选择 Docker Buildx 2.激活 Docker 实验性特性:一步设置 3.比如ARM架构下的Docker Buildx未自带 4.重启docker 🌐 无论你是初学者还是经…

非递归的归并排序

我们之前讲的快速排序有非递归的写法,那么归并排序也有非递归写法,我们一起来研究一下吧。 快速排序的非递归算法是使用的手动搭栈的方法,将区间存入栈里面,然后再排序,但是这次的归并排序可以吗?大家都知…

WebLogic 8.x中间件监控指标解读

监控易是一款功能强大的IT监控系统,能够全面监控各类IT设施的运行状态,及时发现并解决潜在问题。针对WebLogic 8.x中间件的监控,监控易提供了一系列详尽的指标,确保WebLogic集群和应用的稳定运行。 在WebLogic集群监控方面&#x…