操作系统学习笔记:大容量存储器的结构

一、大容量存储器结构简介

概述次级和三级存储器设备的物理结构

1、磁盘

大容量外存。

传输速率:驱动器和计算机之间的数据传输速率。

定位时间:随机访问时间,由寻道时间(移动磁臂到所要柱面所需时间)和旋转等待时间(等待所要的扇区旋转到磁臂下所需时间)组成。

磁盘驱动器通过一组称为I/O总线(IO bus)的线与计算机相连。有多种总线,如EIDE、ATA、SATA、USB、FC和SCSI。

由称为控制器的特殊处理器执行总线上的数据传输。分为主机控制器和磁盘控制器。主机控制器在计算机上,总线末端;磁盘控制器在磁盘内。计算机通过内存映射端口向主机控制器发送一个命令,主机控制器接着通过消息将命令传送给磁盘控制器,最后由磁盘控制器操纵磁盘驱动器硬件以执行命令。磁盘控制器通常有内置缓存。

2、磁带

二、磁盘结构

可以看做一个一维的逻辑块数组。逻辑块是最小的传输单位,通常为512B。可以通过低级格式化来设置逻辑块大小。

一维逻辑块数组按顺序映射到磁盘的扇区。扇区0是最外面柱面的第一个磁道的第一个扇区,如此由外到内排列。这样理论上能将逻辑块号转换为柱面号+磁道号+扇区号组成的老式磁盘地址。但这种转换实属不易,因为磁盘会有缺陷扇区,映射时必须用其他空闲扇区来顶替;其次是有些磁盘,每个磁道的扇区数并不是一样的。原因是离心远的磁道比较长,扇区数更多。为保持磁盘读写数据速率恒定,有两种方法:1是磁道位密度均匀,读写外磁道时,转速要比相对靠内的磁道快,此为常量线性速度(CLV);2是转速不变,但外磁道密度降低,此为恒定圆角速度(CAV)。

三、磁盘附属

计算机访问磁盘存储有两种方式,一是通过IO端口或主机附属存储,二是通过分布式文件系统的远程主机, 称为网络附属存储。

1、主机附属存储

通过本地IO端口访问。有多种技术:IDE、ATA、SATA、SCSI或FC。后2种常用在高端工作站和服务器。SCSI是个总线结构;FC是高速串行结构。

有多种存储设备可用于主机附属存储,包括硬盘、RAID阵列、CD、DVD和磁带。

2、网络附属存储

数据网络总远程访问的专用存储系统。客户机通过远程进程调用接口来访问NAS。远程进程调用(RPC)可通过IP网络的TCP或UDP来进行。存储单元通常用带有RPC接口软件的RAID阵列。

网络附加存储为局域网(靠,那云计算是咋回事?)上所有计算机提供了一个共享存储的方便方法。但效率及性能不如主机附加存储。

iSCSI是一种新的网络附加存储协议,使用IP网络协议来实现SCSI协议。

3、存储区域网络

存储区域网络(SAN)是服务器与存储单元之间的私有网络,采用存储协议而不是网络协议。优势在于灵活性,多个主机和存储阵列可以附加在同一SAN上,存储动态分配给主机。SAN能够让服务器集群共享同一存储,或者让存储阵列与多个主机直连。与存储阵列相比,SAN端口更多更低成本。

FC是一种最常见的SAN互联。而Infiniband是一种新兴的专门总线架构,在服务器和存储单元之间提供高速互联网络硬件和软件支持。

四、磁盘调度

访问磁盘的时间包括两个主要部分:寻道时间和旋转延迟。寻道时间是磁臂将磁头移动到包含目标扇区的柱面的时间,旋转延迟是磁盘需要将目标扇区转动到磁头下的时间。磁盘带宽是传输速率。可以通过调整访问顺序来调度磁盘IO,提高速度和带宽。

每当一个进程需要进行磁盘IO,就向操作系统发出一个系统调用。如果磁盘和控制器空闲,那么请求会马上处理,否则会到磁盘请求队列排队。这就牵涉到磁盘调度算法。

1、FCFS调度

先来先服务(FCFS)。公平,但不是最快的。因为磁头可能会疲于奔命,而无法顺路处理。

2、SSTF调度

最短寻道时间优先算法。磁头移动过程中,沿路处理请求。该算法可能导致一些请求永远得不到处理,因为请求源源不断涌来,远处的只能傻傻的等待。

3、SCAN调度

磁臂从一端向另一端移动,沿路处理请求。当到达另一端时,往回走,沿路处理,如此循环往复。又称为电梯算法。

4、C-SCAN调度

SCAN的变种。从磁头移到另一端时,沿路处理请求。到达另一端时,往回走,但并不处理,而是回到原先起点后再开始。

5、LOOK调度

SCAN和C-SCAN其实并不是从一端跑到另一端的终点,而是只移动到一个方向的最远请求点就往回走了。返回时也如是。称为LOOK和C-LOOK。

6、磁盘调度算法的选择

算法多多,如何选择?

磁盘服务请求很大程度上受文件分配方法影响。连续分配的文件请求点位置相近,而链接或索引文件物理分散,大量的磁头移动。

另外,磁盘调度不仅仅由磁盘控制器决定,也受操作系统控制。

五、磁盘管理

1、磁盘格式化

分为低级格式化和格式化。

低级格式化又称为物理格式化,作用是将新磁盘分成扇区以便磁盘控制器能读和写。每个扇区有相应的数据结构,会有扇区号码和纠错代码。如何划分扇区的大小是个问题。通常磁盘出厂时已被低格处理。

而我们自己进行的格式化,相应地称为逻辑格式化。是操作系统将文件系统写到磁盘上。在此之前,还应该进行分区,将磁盘分为一个或多个柱面组成的分区。

有的操作系统或数据库软件直接将某个分区不经过逻辑分区就使用,此为生磁盘,上面没有任务文件系统数据结构,只作为一个大顺序数组。

为了提高效率,大多数操作系统将块集中到一大块,称为簇。磁盘IO通过块完成,但文件系统IO通过簇完成。

2、引导块

计算机开机或重启时,需要运行一个初始化程序。它初始化系统的各个方面,从CPU寄存器到设备控制器和内存,接着启动操作系统。对大多数计算机而言,自举程序保存在主板的ROM中,但这只是自举程序的小部分,其作用是进一步从磁盘上调入更完整的自举程序。这部分完整程序保存在磁盘的启动块上,启动块位于磁盘的固定位置。拥有启动分区的磁盘称为启动磁盘或系统磁盘。

3、坏块

每个磁盘或多或少存在坏块。对这些块有多种处理方式。比如IDE控制器,逻辑格式化的时候,会在FAT条目中写上标记表示其不可用;SCSI磁盘维护一个坏块链表,使用过程中不断更新。控制器会用备用块来逻辑替代坏块。坏块链表和备用块在低格时就已存在。

六、交换空间管理

交换指内容在磁盘和内存间的移动。当物理内存不够,进程将从内存移到磁盘以释放内存空间。当然,交换与虚拟内存技术和交换页结合,不必对整个进程进行交换。

因为虚拟内存使用磁盘作为内存的扩充,而磁盘比内存要慢得多,所以交换空间会严重影响性能。而交换空间管理是操作系统的一个底层任务,目的正是为虚拟内存提供最佳吞吐量。

1、交换空间的使用

不同操作系统使用方式不同。有的将交换空间用于保存整个进程映像,包括代码段和数据段;也有的用以存储换出的内存页。

2、交换空间位置

可以在普通文件系统上创建,或者在一个独立的磁盘分区上进行;或者干脆使用生磁盘。普通文件系统需要遍历目录结构和磁盘分配数据,效率较低;生磁盘则效率较好。

3、交换空间管理

七、RAID结构

RAID,磁盘冗余阵列。

过去,RAID由许多小的、便宜的磁盘组成,作为大而昂贵磁盘的替代品;现如今,RAID还在使用,是因为其高可靠性和高传输率。

1、通过冗余改善可靠性

如镜像

2、通过并行处理改善性能

如条带化

3、RAID级别

如RAID0,RAID1,RAID5等

八、稳定存储实现

系统为每个逻辑块维护两个物理副本。输出操作按如下方式执行:

1、将信息写到第一块物理块上

2、当第一次写成功完成时,再将同样信息写到第二块物理块上

3、只有在第二次写成功完成时,才声明写操作成功完成

从差错中恢复时,每对物理块都要检查。两块无错且内容相同,万事大吉;一块有错,则用另一块替换;两块无错但内容不同,则用第二块内容替代第一块。

由于等待磁盘写(同步IO)操作的完成相当费时,许多存储阵列增加了NVRAM(非易失)作为缓存。

九、三级存储结构

指可移动存储设备。

1、三级存储设备

1)可移动磁盘

可移动磁盘,光盘等

2)磁带

3)未来技术

2、操作系统支持

操作系统的两个主要任务是管理硬件和为应用程序提供一个虚拟机器的抽象。对于磁盘,操作系统提供了两种抽象,一是生设备,一种是文件系统。那么,当存储介质是可移动时,操作系统如何处理?

1)应用接口

像处理固定盘一样处理可移动磁盘。而打开整个磁带以作为生设备。

2)文件命名

另一个问题是如何命名可移动介质上的文件。因为不固定,所以不能像固定磁盘那样,通过盘符+路径之类的名字来区分。现代操作系统通常是对可移动介质的命名空间问题不加处理,而由应用系统和用户来决定。

3)层次存储管理

可移动存储通常用来做备份。

3、性能

三级存储器最重要的三个性能指标为速度、可靠性和价格。

时间: 2024-10-28 21:23:25

操作系统学习笔记:大容量存储器的结构的相关文章

Linux 操作系统学习笔记

一,unix 1.unix 特点 伸缩性强,开放性好, 2.基本原则 所有对象,硬件都是文件 配置数据以文本形式保存 短小的单目的程序构成 多个程序合作完成复杂任务 3.gnu 基本原则是共享,建立自由开放的unix系统 1984年 richard stallman 发起 基本体系是micro kernel 4.gpl Copyleft 原作者所有权 5.linux起源 Linustorvalds, 自由的类unix操作系统, 遵循gnu和gpl 6.linux 可以实现unix功能 遵循开源许

RTX51 Tiny实时操作系统学习笔记—初识RTX51 Tiny

 一,RTX51 Tiny简单介绍 RTX51 Tiny是一种实时操作系统(RTOS),能够用它来建立多个任务(函数)同一时候运行的应用(从宏观上看是同一时候运行的,但从微观上看,还是独立运行的).嵌入式应用系统常常有这样的需求.RTOS能够提供调度.维护.同步等功能. 实时操作系统能灵活的调度系统资源,像CPU和存储器,而且提供任务间的通信.RTX51 Tiny是一个功能强大的RTOS,且易于使用,它用于8051系列的微控制器.该RTOS最多支持16个任务,基于RTX51 Tiny构建的应用程

计算机操作系统学习笔记_1_操作系统概述

操作系统概述 一.操作系统的概念.特征.功能和提供的服务 1.操作系统的概念     操作系统是计算机系统中最重要.最基本的系统软件,操作系统位于硬件和用户程序之间.    对于用户来讲:它能向用户提供使用计算机的接口;    从资源管理角度来看:它能管理计算机软硬件资源,提高其利用率;    再者,利用虚拟机技术(如WMWare,VirtualBox,Java虚拟机等),扩展了计算机的功能和使用范围.     因此,操作系统的定义为:操作系统是控制和管理计算机软.硬件资源,以尽可能合理.高效的

java之jvm学习笔记十三(jvm基本结构)

java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成图形,所以只要你有耐心,仔细,认真,并发挥你的想象力,这一章之后你会充满自信.当然,不是说看完本章,就对jvm了解了,jvm要学习的知识实在是非常的多.在你看完本节之后,后续我们还会来学jvm的细节,但是如果你在学习完本节的前提下去学习,再学习其他jvm的细节会事半功倍. 为了让你每一个知识点都有迹

计算机操作系统学习笔记_2_进程管理 --进程与线程(上)

h3.western { font-family: "Liberation Sans",sans-serif; }h3.cjk { font-family: "微软雅黑"; }h3.ctl { font-family: "AR PL UMing CN"; }h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { fon

操作系统学习笔记----进程/线程模型----Coursera课程笔记

操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型 多道程序设计 进程的概念.进程控制块 进程状态及转换.进程队列 进程控制----进程创建.撤销.阻塞.唤醒.... 0.2 线程模型 为什么引入线程 线程的组成 线程机制的实现 用户级线程.核心级线程.混合方式 1. 进程的基本概念 1.1 多道程序设计 允许多个程序同时进入内存运行,目的是为了提高CPU系统效率 1.2 并发环境与并发程序 并发环境: 一段时间间隔内,单处理器上

os-12.大容量存储器的结构

12.大容量存储器的结构 大容量存储器结构简介 磁盘 磁道,扇区,柱面,盘面 磁盘速度: 传输速度 访问时间:寻道时间+旋转延迟 磁盘结构 扇区0是最外面柱面的第一个磁道的第一个扇区,然后先按磁道内扇区顺序,再按柱面内磁道顺序,最后按从外到内的柱面顺序排序 磁盘附属 主机附属存储 I/O总线:IDE->SATA(串行)->SCSI(可热插拔)->FC(光纤) 网络附属存储 NAS(network-attached storage)是数据网络中远程访问的专用存储系统,客户机通过RPC来访问

Swift学习笔记:类和结构

一.类和结构的异同 类和结构有一些相似的地方,它们都可以: 1. 定义一些可以赋值的属性: 2. 定义具有功能性的方法 3. 定义下标,使用下标语法 4. 定义初始化方法来设置初始状态 5. 在原实现方法上的可扩展性 根据协议提供某一特定类别的基本功能 1. 类还有一些结构不具备的特性: 2. 类的继承性 3. 对类实例实时的类型转换 4. 析构一个类的实例使之释放空间 5. 引用计数,一个类实例可以有多个引用 1. 定义语法 struct Name{ let firstName = "&quo

2014年7月17日学习笔记--PHP的循环结构学习

今天重新开始学习PHP, 为了学习PHP买了书,但书是一本大部头的书,不好带一直没有好好学习,我决定把书拆了分章来看,这样也方便带 也可以很快完成任务. 今天在linux mint 17上安装了lnmp 环境 和brackets工具,来学PHP,小的例子用vim来完成的. 记录一下自己美化的九九乘法表 代码如下: <?php     for($i=1;$i<=9;$i++){         for($j=1;$j<=9;$j++){             if($i>=$j){

Swift学习笔记(11)--类与结构体

类与结构是编程人员在代码中会经常用到的代码块.在类与结构中可以像定义常量,变量和函数一样,定义相关的属性和方法以此来实现各种功能. 和其它的编程语言不太相同的是,Swift不需要单独创建接口或者实现文件来使用类或者结构.Swift中的类或者结构可以在单文件中直接定义,一旦定义完成后,就能够被直接其它代码使用. 注意:一个类的实例一般被视作一个对象,但是在Swift中,类与结构更像是一个函数方法,在后续的章节中更多地是讲述类和结构的功能性. 1.类和结构的异同 类和结构有一些相似的地方,它们都可以