操作系统——大容量存储结构

笔记内容及图片整理自XJTUSE “操作系统” 课程ppt,仅供学习交流使用,谢谢。

大容量存储结构概述

磁盘

磁盘为现代计算机系统提供大量外存。每个盘片为平的圆状(类似CD),普通盘片直径为4.5~9.0厘米。盘片的两面都涂着磁质材料,通过在盘片上进行磁性记录可以保存信息。

读写磁头在盘片表面上方飞行,磁头附着在磁臂上,磁臂将所有磁头作为整体而一起移动。盘片表面逻辑地分成一些圆形磁道,再细分为扇区,同一磁臂位置的磁道集合形成了柱面。事实上,每个磁盘驱动器有数千个同心柱面,每个磁道包括数百个扇区,因此磁盘驱动器的存储容量按GB来计算。

固态磁盘

固态磁盘SSD是非易失性存储,具有与传统硬盘相同的特性,但固态磁盘比硬盘更加可靠(没有移动部件),速度也更快(没有寻道时间/旋转延迟)。当然与传统硬盘相比,SSD的每兆字节更昂贵、容量更大、寿命更短,因此用途有限,常用于存储文件系统元数据以提高性能或者性能方面期望更小、更快、更节能的笔记本电脑。

磁带

磁带可以相对永久地保存大量数据,但是与内存和磁盘相比,磁带的访问时间也更长。另外随机访问速度上磁带比磁盘慢千余倍,因此磁带常用于备份不常使用的信息或者作为系统间信息传输的媒介。磁带大致有两种存储器:栈式存储器(保存一些磁带的库)和队式存储器(保存数以千计磁带的库)。通常,磁带上存有磁盘驻留文件,以便降低存储成本,计算机可以为了当前的使用把磁盘驻留文件传输回到磁盘上。

磁盘结构

磁盘设备是以一种逻辑块的一维大数组的形式编址的,逻辑块是传输的最小单位,逻辑块的一维数组映射到磁盘上一些相连的扇区。0扇区是最外边柱面的第一个磁道的第一个扇区。数据首先映射到一个磁道,其余数据映射到同一柱面的其他磁道,然后按照从外向内的顺序映射到其余的柱面。

磁盘组由若干磁盘组成,绕枢轴高速旋转,磁盘转速7200转/分。盘块物理地址由柱面号、磁头号、扇区号三部分组成。令块号B、柱面数L、盘面数M、扇区数N。

柱面号——各盘面所有读写磁头同时移动,并定位在同样的垂直位置磁道上,这些磁道形成一个柱面,由外向内依次编号:0,1,2,……,L;柱面号i=int(B, M ×N)。

磁头号——磁盘有效盘面从上到下依次编号:0,1,2,……,H;磁头号j=int(mod(B, M ×N), N)。

扇区号——将盘面分割成大小相等的扇区:0,1,2,……,n;扇区号k=mod(mod (B, M ×N), N)。

磁盘I/O速度的高低,将直接影响文件系统的性能,提高磁盘I/O速度的主要途径有:

1)选择性能好的磁盘

2)设置磁盘高速缓冲区

3)采用好的磁盘调度算法

磁盘访问时间Ta

寻道时间Ts是把磁头从当前位置移动到指定磁道上所经历的时间,它与磁盘转速、移动的磁道数有关。

令磁盘启动时间s、磁头移动1条磁道所花费时间m,共有n条磁道,则Ts = m × n + s。对于—般磁盘,m=0.2;对于高速磁盘,m≤0.1;磁盘启动时间s约为2ms。—般情况下, 寻道时间将随着寻道距离的增大而增大。

旋转延迟时间Tr是把指定扇区移动到磁头下面所经历的时间,它与磁盘转速有关。

令磁盘转速为r,则Tr = 1 / 2 * r。

若磁盘旋转速度为5400 r/min,则每转时间为11.1ms,平均旋转延迟时间Tr为5.55ms。

传输时间Tt是指把数据从磁盘读出或向磁盘写入数据所经历的时间。

令所读写的字节数为b,磁盘旋转速度为r,一条磁道上的字节数为N,则Tt = b /(r * N)。

寻道时间和旋转延迟时间通常占据磁盘访问时间的大头,基本都与所读写数据的多少无关。目前随着磁盘传输速率不断提高,数据传输时间所占的比例更低。可见适当地集中数据传输将有利于提高传输效率,则Ta = Ts + 1 /(2 * r)+ b /(r * N)。

磁盘高速缓存

磁盘高速缓存利用内存中的存储空间暂存从磁盘中读出的一系列盘块中的数据,即高速缓存是一组在逻辑上属于磁盘,而在物理上驻留在内存中的盘块。它有两种实现形式:

1)在内存中开辟一个单独的大小固定的存储空间,不受应用程序的影响

2)把所有未利用的内存空间变为一个缓冲池,供请求分页系统和磁盘I/O共享。

磁盘高速缓存使用的置换算法常为LRU,即将高速缓存中所有盘块数据拉成一条LRU链,将会严重影响到数据一致性的和很久都不会再使用的盘块放入LRU链的头部,使它们能够优先写回磁盘;对于那些可能在不久又会访问的数据,应放在LRU链的尾部,以便以后再使用时可以直接在高速缓存中找到。

磁盘调度

操作系统的职责之一是高效使用硬件。对于磁盘设备,满足这个要求意味着具有很短的访问时间和较宽的磁盘带宽,且寻道时间约等于寻道距离。通过管理磁盘I/O请求的处理次序,可以改善访问时间和磁盘带宽。每当需要进程执行磁盘I/O操作时,进程就向操作系统发出一个系统调用,这个请求需要以下信息:

1)该I/O操作是输入还是输出

2)传输的磁盘地址是什么

3)传输的内存地址是什么

4)传输的扇区数目是什么

若所需要的磁盘设备和控制器空闲,则立即处理请求;若忙碌则任何新的服务请求都会添加磁盘设备的待处理请求队列。对于具有多个进程的一个多道程序系统,磁盘队列可能有多个待处理的请求。因此当一个请求完成时,操作系统可以自行选择待处理的请求服务。

FCFS调度-先来先服务

FCFS调度是磁盘调度的最简单形式,这种算法优先执行先到达的请求,公平但通常速度慢。

SSTF调度-最短寻道时间优先

SSTF调度是SJF调度的一种形式,它选择从当前磁头位置所需寻道时间最短的请求,性能提升但有可能引起某些较远请求的饥饿。

SCAN调度-扫描

SCAN调度也称为电梯算法,磁头从磁盘一端开始向另一端移动,沿途响应访问请求,直到抵达磁盘的另一端,此时磁头反向移动并继续响应服务请求。

C-SCAN调度-循环扫描

C-SCAN调度是SCAN调度的变种,目的是提供更加均匀的等待时间,它把所有柱面看成一个循环的序列,最后一个柱面接续第一个柱面。磁头从磁盘的一端向另一端移动,沿途响应请求。当它到了另一端后立即回到磁盘开始处,返回途中不响应任何请求。

LOOK调度-改进扫描

LOOK调度是SCAN调度的一种形式,磁臂在每个方向上仅仅移动到最远的请求位置,然后立即反向移动,而不需要移动到磁盘的一端。其他规则与SCAN调度相似。

C-LOOK调度-改进循环扫描

C-LOOK调度是C-SCAN调度的一种形式,磁臂在每个方向上仅仅移动到最远的请求位置,然后立即反向移动,而不需要移动到磁盘的一端。其他规则与C-SCAN调度相似。

NSCAN调度-分步扫描

NSCAN调度将磁盘请求队列分成若干个长度为N的子队列,磁盘调度按照FCFS依次处理这些子队列,而处理一个子队列内部时又按照SCAN算法。当处理某一子队列时,若又出现新的I/O请求,则将请求进程放入其他子队列。

当N取值很大时,算法性能接近于SCAN算法;当N=1时,算法成为FCFS算法。总体上NSCAN调度具有能使I/O请求的等待时间不至于过长,避免饿死现象的优点。

FSCAN调度-简化分布扫描

FSCAN调度只将磁盘请求队列分成两个子队列,其中一个子队列由当前所有请求磁盘I/O的进程组成,按SCAN算法调度;扫描期间新出现的请求进程放入另一个等待处理的子队列。

磁盘管理

磁盘格式化

物理格式化,也称为低级格式化把磁盘划分成扇区,以便磁盘设备能够读写。为了使用磁盘保存文件,操作系统还需要在磁盘上保存它自身的数据结构,这分为两步:

1)将磁盘分为由一组或多组柱面组成的分区

2)逻辑格式化,也称为创建文件系统,即将初始的文件系统数据结构存储到磁盘上,这些数据结构包括空闲和已分配的空间和一个初始为空的目录。

启动块初始化系统需要先引导程序存储在ROM中,再引导程序装载程序。

引导块

计算机需要一个初始程序来运行打开电源操作或重启操作,这个初始程序被称为自举程序。它初始化系统的所有部分,从CPU寄存器到设备控制器和内存,接着启动操作系统。因此自举程序找到磁盘上的操作系统内核,加载到内存并转到起始地址以便开始执行操作系统。自举程序通常存储在ROM中,因为ROM不需要初始化而且位于固定位置,便于处理器在通电或复位后开始执行且不会受到计算机病毒的影响。它初始化系统的所有方面,然后通过从MBR(主引导记录,引导代码存在磁盘的第一个扇区)读取引导代码来启动操作系统。

坏块

磁盘具有移动部件且容错差,导致容易出现故障,甚至一个或多个扇区坏掉,需要处理。

对于简单磁盘,如IDE磁盘,需要手动处理这些坏块。发现坏块后系统会在FAT条目中写入特殊值,告诉分配例程不要使用该块。

对于高端磁盘,如SCSI磁盘,具有用于处理坏块的扇区备用等方法。控制器维护磁盘上的坏块列表,该列表在工厂的物理格式化(留出操作系统不可见的备用扇区)过程中初始化,并在磁盘的生命周期内更新。控制器还能告诉控制器用备用扇区之一在逻辑上替换坏扇区。

交换空间管理

交换是在磁盘和内存之间移动进程,交换空间指虚拟内存使用磁盘空间作为对主存的扩展。交换空间可以在常规的文件系统中实现,或者更通常的情况是放在一个单独的磁盘分区里。交换空间管理是操作系统的一个底层任务,追求的是访问速度,而不是存储效率。

交换空间的使用

不同操作系统使用交换空间的方式不同,这取决于操作系统采用的内存管理算法。采用整体进程交换的操作系统,用交换空间存放整个进程的映像;采用请求分页的操作系统,用交换空间存放被换出的页。一个系统所需的交换空间大小取决于:

1)物理内存容量

2)需后备的虚拟内存容量

3)虚拟内存的使用方式

例如Solaris系统交换空间的容量为虚存超出物理内存的部分,传统Linux系统交换空间的容量为物理内存的2倍,现代Linux系统则去除了此限制并普遍采用更小的交换空间。

交换空间位置

原始分区方法:若交换空间位于普通文件系统上,则交换空间作为一个文件存在于文件系统中,由文件系统进行管理,包括创建、命名、分配空间等操作;

文件系统方法:若交换空间是一个单独的磁盘分区,则交换空间存在于一个单独的未格式化的分区中,这里没有文件系统或目录结构,由交换空间管理程序独立完成分配和回收。

有些操作系统较为灵活,可以采用原始分区方法和文件系统方法进行交换。例如Linux系统策略和实现是分开的,系统管理员可以决定使用哪种类型,它需要权衡文件系统分配和管理的便利饥饿原始分区交换的性能。

磁盘可靠性

磁盘使用技术中,有几种实现都包括了使用多个磁盘协同工作方式,因此可靠性尤为重要。磁盘条使用一组磁盘作为一个存储单元,RAID系统依靠存储冗余数据改善了存储系统的性能和可靠性,镜像或影像为每个磁盘保存了备份,块交叉奇偶方式大大地减少了冗余。磁盘可靠性问题的最终解决是引入冗余,即使磁盘故障,数据也不会彻底丢失。

RAID系统内容包含在计算机组成原理中。

三级存储设备

三级存储的定义特征是低成本,它通常由可移动介质构成,典型的例子是软盘和光盘。

软盘——在又薄又软的盘面上面涂上磁介质,装在一个用于保护的塑料套中。大多数软盘的容量是1MB,类似的技术也用于容量大于1GB的可移动磁盘。事实上,可移动磁盘的速度几乎与硬盘一样快,但由于可移动磁盘暴露在外,其损坏的风险更大。

光盘——在一个涂有磁介质的刚性盘面上记录数据,激光的热量用来放大一个大面积脆弱的磁区域来记录数据,而激光的光线用来读取数据。光电磁头距离盘面的距离比磁头远,并且磁介质上覆盖有塑料或玻璃的保护层以抗磁头撞击。通常,光盘不使用磁介质,它使用激光改造过的特殊材料。

性能

三级存储设备的性能主要由速度、可靠性、成本三方面决定。

速度——三级存储速度的两个方面是带宽和延迟。带宽用每秒的字节数来衡量,持续带宽指大量传输过程中的平均数据率;有效带宽指平均整个I/O时间,包括寻道定位以及盘碟选择。访问延迟是定位数据需要的时间。磁盘访问时间指移动磁臂来选择柱面,并且等待旋转延迟;访问磁带需要把所选的块倒到磁带头的位置(一般来说,对盘碟的随机访问比对磁盘的随机访问要慢一千倍)。三级存储成本低,这是许多便宜的盘碟使用少量昂贵驱动器的结果。

可靠性——固定磁盘驱动器比可移动磁盘或磁带驱动器更加可靠,光介质比磁介质的磁盘或磁带更加可靠。对于固定的硬盘,磁头撞击通常会破坏数据,然而磁带或光盘驱动器的错误通常对数据盘碟是无害的。

成本——主存比磁盘存储的成本要高很多。如果每个驱动器只用一条磁带,那么硬盘存储的每兆字节成本与磁带不相上下。因此最便宜的磁带驱动器和最便宜的磁盘驱动器的存储容量几乎一样,只有当盘碟数量远大于驱动器数量的时候,三级存储才能节约成本。

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

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

相关文章

Redis从入门到进阶(总结)

以下内容均以CentOS7为背景。 一、Redis安装及启动 mysql(读:2000/s;写:600/s) redis(读:10w/s;写:8w/s)通过官方给出的数据单机并发可以达到10w/s&#xf…

Java进阶(注解,设计模式,对象克隆)

Java进阶(注解,设计模式,对象克隆) 一. 注解 1.1 什么是注解 java中注解(Annotation),又称java标注,是一种特殊的注释 可以添加在包,类,成员变量,方法,参数等内容上 注解会随同…

使用 Gin 框架构建 RESTful 博客 API

使用 Gin 框架构建 RESTful 博客 API 引言 在现代 Web 开发中,RESTful API 是一种非常流行的设计风格,它通过 HTTP 协议与客户端进行通信,提供了灵活且易于扩展的接口。Go 语言以其高效的并发处理能力和简洁的语法,成为了构建高…

Leecode刷题C语言之骑士在棋盘上的概率

执行结果:通过 执行用时和内存消耗如下: 代码如下: static int dirs[8][2] {{-2, -1}, {-2, 1}, {2, -1}, {2, 1}, {-1, -2}, {-1, 2}, {1, -2}, {1, 2}};double knightProbability(int n, int k, int row, int column){double dp[200][30][30];mem…

21. C++STL 7(8000字详解list及其迭代器的模拟实现)

⭐本篇重点:STL中的list及其迭代器的模拟实现和测试 ⭐本篇代码:c学习 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) 目录 一. list的节点 二. list的迭代器 2.1 迭代器框架 2.2 迭代器实现 三. list的实现 3.1 list的构造函数 3.…

Docker打包SpringBoot项目

一、项目打成jar包 在进行docker打包之前,先确定一下,项目能够正常的打成JAR包,并且启动之后能够正常的访问。这一步看似是可有可无,但是能避免后期的一些无厘头问题。 二、Dockerfile 项目打包成功之后,需要编写Doc…

零基础学鸿蒙开发--第九篇--网络请求

12. ⽹络请求 鸿蒙系统提供了 http 模块 ⽤于发送 http 请求,另外, OpenHarmony社区基于该模块将前端开发中常⽤的⽹络请 求库 axios 移植到了鸿蒙系统,因此我们也可以在鸿蒙系统中使⽤ axios 发送 http 请求,下⾯重点为⼤家介绍…

133.WEB渗透测试-信息收集-小程序、app(4)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:132.WEB渗透测试-信息收集-小程序、app(3) 输入命令:…

Pointnet++改进71:添加LFE模块|高效长距离注意力网络

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入LFE模块,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.理…

Android仿美团左右联动购物列表

Android仿美团左右联动购物列表 左右联动购物列表,不难。 一、思路: 两个RecycleView 二、效果图: 三、关键代码: public class MainActivity extends AppCompatActivity {private RecyclerView rl_left;private RecyclerVie…

Mitel MiCollab 企业协作平台 任意文件读取漏洞复现(CVE-2024-41713)

0x01 产品简介 Mitel MiCollab是加拿大Mitel(敏迪)公司推出的一款企业级协作平台,旨在为企业提供统一、高效、安全的通信与协作解决方案。通过该平台,员工可以在任何时间、任何地点,使用任何设备,实现即时通信、语音通话、视频会议、文件共享等功能,从而提升工作效率和…

深度学习camp-第J3-1周:DenseNet算法 实现乳腺癌识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 我的环境 语言环境:Python 3.12编译器:Jupyter Lab深度学习环境:Pytorch 2.4.1 Torchvision 0.19.1数据集:乳腺…

Elasticsearch 单节点安全配置与用户认证

Elasticsearch 单节点安全配置与用户认证 安全扫描时发现了一个高危漏洞:Elasticsearch 未授权访问 。在使用 Elasticsearch 构建搜索引擎或处理大规模数据时,需要启用基本的安全功能来防止未经授权的访问。本文将通过简单的配置步骤,为单节…

Vulhub:Shiro[漏洞复现]

目录 CVE-2010-3863(Shiro未授权) 使用浏览器访问靶场主页面 使用Yakit进行抓包 使用ffuf对靶机8080端口进行根路径FUZZ CVE-2016-4437(Shiro-550) 使用浏览器访问靶场主页面 使用Yakit进行抓包 使用Yakit反连中自带的Yso-Java Hack进行漏洞利用 首先运行脚本生成一个…

数学拯救世界(一)———寻“数”记

一、 很久很久以前,在一个只认识整数和小数的国度,有一个很残暴的国王提了一个要求:要是不能表示出把一段1米的绳子三等分后的大小,就要把所有的大臣杀掉。 1➗3 0.333,怎么办呀?怎么办呀? 袁q…

Codeforces Round 991 (Div. 3)题解

先随随便便写一点东西吧&#xff0c;毕竟只是一场div3 A. Line Breaks 思路&#xff1a;一道很简单的模拟题吧&#xff0c;就是遍历一遍&#xff0c;当大于x的时候就break&#xff0c;然后前面那个就是找到的前x个字的总长度不超过m #include<bits/stdc.h> using names…

掌握谈判技巧,达成双赢协议

在当今竞争激烈且合作频繁的社会环境中&#xff0c;谈判成为了我们解决分歧、谋求共同发展的重要手段。无论是商业合作、职场交流&#xff0c;还是国际事务协商&#xff0c;掌握谈判技巧以达成双赢协议都具有极其关键的意义。它不仅能够让各方在利益分配上找到平衡点&#xff0…

基于Matlab特征提取与浅层神经网络的数字图像处理乳腺癌检测系统(GUI界面+训练代码+数据集)

本研究提出了一种结合数字图像处理技术、特征提取与浅层神经网络的创新癌症检测系统&#xff0c;旨在为医学图像的分析和早期癌症检测提供有效支持。系统主要处理癌症与正常组织的医学图像&#xff0c;通过灰度共生矩阵&#xff08;GLCM&#xff09;等方法&#xff0c;从图像中…

Backblaze 2024 Q3硬盘故障质量报告解读

作为一家在2021年在美国纳斯达克上市的云端备份公司&#xff0c;Backblaze一直保持着对外定期发布HDD和SSD的故障率稳定性质量报告&#xff0c;给大家提供了一份真实应用场景下的稳定性分析参考数据&#xff1a; 以往报告解读系列参考&#xff1a; Backblaze发布2024 Q2硬盘故障…

河工oj第七周补题题解2024

A.GO LecturesⅠ—— Victory GO LecturesⅠ—— Victory - 问题 - 软件学院OJ 代码 统计 #include<bits/stdc.h> using namespace std;double b, w;int main() {for(int i 1; i < 19; i ) {for(int j 1; j < 19; j ) {char ch; cin >> ch;if(ch B) b …