计算机操作系统——设备管理(6)

来源:互联网 发布:注册淘宝要多少钱 编辑:程序博客网 时间:2024/05/18 02:10
磁盘存储器的管理

磁盘的结构和布局



磁盘的格式化

为了在磁盘上存储数据,必须先将磁盘低级格式化。每个扇区容量为 600 个字节,其中512 个字节存放数据,其余的用于存放控制信息。磁盘格式化完成后,一般要对磁盘分区。在逻辑上,每个分区就是一个独立的逻辑磁盘。每个分区的起始扇区和大小都记录在磁盘0 扇区的主引导记录分区表所包含的分区表中。在这个分区表中必须有一个分区被标记成活动的,以保证能够从硬盘引导系统。但是,在真正可以使用磁盘前,还需要对磁盘进行一次高级格式化,即设置一个引导块、空闲存储管理、根目录和一个空文件系统,同时在分区表中标记该分区所使用的文件系统。

磁盘访问时间

1)寻道时间:这是指把磁臂(磁头)移动到指定磁道上所经历的时间。
2)旋转延迟时间:这是指定扇区移动到磁头下面所经历的时间。
3)传输时间:这是指把数据从磁盘读出或向磁盘写入数据所经历的时间。

在访问时间中,寻道时间和旋转延迟时间基本上都与所读/写数据的多少无关,而且它通常占据了访问时间中的大头。

磁盘调度

目标:当有多个进程都要求访问磁盘时,应采用一种最佳调度算法,以使各进程对磁盘的平均访问时间最小。磁盘调度的目标是使磁盘的平均寻道时间最少。
算法:
1. 先来先服务(FCFS)
2. 最短寻道时间优先
3. 扫描算法
4. 循环扫描算法

磁盘高速缓存(Cached)

概念:利用内存中的存储空间来暂存从磁盘中读出的一系列盘块中的信息。是一组在逻辑上属于磁盘,而物理上是驻留在内存中的盘块。

高速缓存在内存中分为两种形式:
1. 在内存中开辟一个单独的存储空间来作为磁盘高速缓存,其大小是固定的,不会受应用程序多少的影响;
2. 把所有未利用的内存空间变为一个缓冲池,供请求分页系统和磁盘I/O 时(作为磁盘高速缓存)共享。此时,高速缓存的大小显然不再是固定的。当磁盘I/O 的频繁程度较高时,该缓冲池可能包含更多的内存空间;而在应用程序运行得较多时,该缓冲池可能只剩下较少的内存空间。

高速缓存的数据交付方式:数据交付(Data Delivery)是指将磁盘高速缓存中的数据传送给请求者进程。当有一进程请求访问某个盘块中的数据时,由核心先去查看磁盘高速缓冲器,看其中是否存在进程所需访问的盘块数据的拷贝。若有其拷贝,便直接从高速缓存中提取数据交付给请求者进程,否则,应先从磁盘中将所要访问的数据读入并交付给请求者进程,同时也将数据送高速缓存。
1. 数据交付
2. 指针交付

置换算法:
如同请求调页(段)一样,在将磁盘中的盘块数据读入高速缓存时,同样会出现因高速缓存中已装满盘块数据而需要将该数据先换出的问题。

周期性的写回磁盘:
在UNIX 系统中专门增设了一个修改(update)程序,使之在后台运行,该程序周期性地调用一个系统调用SYNC。该调用的主要功能是强制性地将所有在高速缓存中已修改的盘块数据写回磁盘。一般是把两次调用SYNC的时间间隔定为30 s。这样,因系统故障所造成的工作损失不会超过30 s的劳动量。

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

1. 提前读
用户(进程)对文件进行访问时,经常采用顺序访问方式,即顺序地访问文件各盘块的数据。在这种情况下,在读当前块时可以预知下一次要读的盘块。因此,可以采取预先读方式,即在读当前块的同时,还要求将下一个盘块(提前读的块)中的数据也读入缓冲区。这样,当下一次要读该盘块中的数据时,由于该数据已被提前读入缓冲区,因而此时便可直接从缓冲区中取得下一盘块的数据,而不需再去启动磁盘I/O,从而大大减少了读数据的时间。这也就等效于提高了磁盘I/O 的速度。

2. 延迟写
延迟写是指在缓冲区A中的数据,本应立即写回磁盘,但考虑到该缓冲区中的数据在不久之后可能还会再被本进程或其它进程访问(共享资源),因而并不立即将该缓冲区A 中的数据写入磁盘,而是将它挂在空闲缓冲区队列的末尾。随着空闲缓冲区的使用,缓冲区也缓缓往前移动,直至移到空闲缓冲队列之首。当再有进程申请到该缓冲区时,才将该缓冲区中的数据写入磁盘,而把该缓冲区作为空闲缓冲区分配出去。当该缓冲区A仍在队列中时,任何访问该数据的进程,都可直接读出其中的数据而不必去访问磁盘。这样,又可进一步减小等效的磁盘I/O时间。

3. 优化物理块的分布
另一种提高磁盘I/O 速度的重要措施是优化文件物理块的分布,使磁头的移动距离最小。

4. 虚拟盘
所谓虚拟盘,是指利用内存空间去仿真磁盘,又称为RAM 盘。该盘的设备驱动程序也可以接受所有标准的磁盘操作,但这些操作的执行,不是在磁盘上而是在内存中。
虚拟盘与磁盘高速缓存的主要区别在于: 虚拟盘中的内容完全由用户控制,而高速磁盘缓存中的内容则是由OS 控制的。例如,RAM 盘在开始时是空的,仅当用户(程序)在RAM 盘中创建了文件后,RAM 盘中才有内容。

廉价冗余磁盘阵列(RAID)

概念:利用一台磁盘阵列控制器,来统一管理和控制一组(几台到几十台)磁盘驱动器,组成一个高度可靠的、快速的大容量磁盘系统。

并行交叉存储
在该系统中,有多台磁盘驱动器,系统将每一盘块中的数据分为若干个子盘块数据,再把每一个子盘块的数据分别存储到各个不同磁盘中的相同位置上。在以后,当要将一个盘块的数据传送到内存时,采取并行传输方式,将各个盘块中的子盘块数据同时向内存中传输,从而使传输时间大大减少。例如,在存放一个文件时,可将该文件中的第一个数据子块放在第一个磁盘驱动器上;将文件的第二个数据子块放在第二个磁盘上;……;将第N 个数据子块,放在第N个驱动器上。以后在读取数据时,采取并行读取方式,即同时从第1~N个数据子块读出数据,这样便把磁盘I/O 的速度提高了N-1 倍。


RAID的分级
(1) RAID 0级。本级仅提供了并行交叉存取。它虽能有效地提高磁盘I/O 速度,但并无冗余校验功能,致使磁盘系统的可靠性不好。只要阵列中有一个磁盘损坏,便会造成不弥补的数据丢失,故较少使用。
(2) RAID 1级。它具有磁盘镜像功能,例如,当磁盘阵列中具有8 个盘时,可利用其中4 个作为数据盘,另外4 个作为镜像盘,在每次访问磁盘时,可利用并行读、写特性,将数据分块同时写入主盘和镜像盘。故其比传统的镜像盘速度快,但其磁盘容量的利用率只有50%,它是以牺牲磁盘容量为代价的。
(3) RAID 3级。这是具有并行传输功能的磁盘阵列。它利用一台奇偶校验盘来完成数据的校验功能,比起磁盘镜像,它减少了所需要的冗余磁盘数。例如,当阵列中只有7 个盘时,可利用6 个盘作数据盘,一个盘作校验盘。磁盘的利用率为6/7。RAID 3级经常用于科学计算和图像处理。
(4) RAID 5级。这是一种具有独立传送功能的磁盘阵列。每个驱动器都各有自己独立的数据通路,独立地进行读/写,且无专门的校验盘。用来进行纠错的校验信息,是以螺旋(Spiral)方式散布在所有数据盘上。RAID 5级常用于I/O 较频繁的事务处理中。

0 0
原创粉丝点击