h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; font-size: 18pt; }h1.cjk { font-family: "微软雅黑"; font-size: 18pt; }h1.ctl { font-family: "AR PL UMing CN"; font-size: 18pt; }p { margin-bottom: 0.25cm; line-height: 120%; }
文件管理
--磁盘组织与管理
一、磁盘的结构
p { margin-bottom: 0.25cm; line-height: 120%; }
1、磁道(柱面)
2、扇区
3、磁盘
注:相邻磁道以及相邻扇区间通过一定的间隙分隔开,以避免精度错误!
p { margin-bottom: 0.25cm; line-height: 120%; }
二、磁盘调度算法
读写一次磁盘所需的时间可分为以下几种:
(1)设备等待:设备或总线忙,需要等候。
(2)寻道时间:将读/写磁头移动到相应的柱面所花费的时间。
(3)旋转延迟时间:扇区转到磁头位置所需的时间。
(4)传输时间:数据写入磁盘或从磁盘读出的时间。
常用的磁臂调度算法有:
1.先来先服务(FCFS)调度
根据进程请求访问磁盘的时间顺序,先来先服务。
2.最短寻道时间优先(SSTF)调度
根据磁头的当前位置首先将请求队列中距磁头最短的请求为之服务。
3.扫描算法(SCAN)调度
也叫“电梯”算法,磁头固定从外向内然后从内向外逐柱面运动。如此往复。
4.循环扫描(C-SCAN)调度
循环扫描算法,即磁头从盘面上的一端向另一端移动,遇到请求立即服务,返回是直接快速移至起始端,而不服务于任何请求。
5.察看(LOOK)调度
通常磁头只移动到一个方向上最远的请求为之。接着马上回头,而不是继续到磁盘的尽头。这种形式的 SCAN和 C-SCAN称为察看 LOOK和循环察看C-LOOK调度,这是因为它们在朝—个给定方向移动前会察看是否有请求。
【注意,国内部分教材将SCAN和 LOOK算法都称为扫描算法】
三、磁盘的管理
1)磁盘初始(格式)化。
一个新的磁盘只是一个含有磁性记录材料的空白盘。在磁盘能存储数据之前,它必须分成扇区以便磁盘控制器能读和写。这个过程称为低级格式化(物理分区)。低级格式化为磁盘的每个扇区采用特别的数据结构。每个扇区的数据结构通常由头、数据区域(通常为512B 大小)和尾部组成。头部和尾部包含了一些磁盘控制器所使用的信息。
为了使用磁盘存储文件,操作系统还需要将自己的数据结构记录在磁盘上:第一步将磁盘分为由一个或多个柱面组成的分区(即我们熟悉的C盘、D盘等形式的分区);第二步对物理分区进行逻辑格式化(创建文件系统),操作系统将初始的文件系统数据结构存储到磁盘上,这些数据结构包括空闲和已分配的空间以及一个初始为空的目录。
2)引导块
计算机启动时需要运行一个初始化程序(自举程序),它初始化CPU、寄存器、设备控制器和内存等,接着启动操作系统。为此,该自举程序应找到磁盘上的操作系统内核,装入内存,并转到起始地址,从而开始操作系统的运行。
自举程序通常保存在ROM中。为了避免改变自举代码需要改变ROM硬件的问题,故只在 ROM中保留很小的自举装入程序,将完整功能的自举程序保存在磁盘的启动块上,启动块位于磁盘的固定位。拥有启动分区的磁盘称为启动磁盘或者系统磁盘。
3)坏块
由于磁盘有移动部件且容错能力弱,所以容易导致一个或多个扇区损坏。部分磁盘甚至从出厂时就有坏扇区。根据所使用的磁盘和控制器,对这些块有多种处理方式。对于简单磁盘,如IDE,坏扇区可手工处理。如,MS-DOS的 Format命令执行逻辑格式化时便会扫描磁盘以检查坏扇区。坏扇区在FAT表上会标明,因此程序不会使用。
对于复杂的磁盘,如SCSI,其控制器维护一个磁盘坏块链表。该链表在出厂前进行低级格式化时就初始化了,并在磁盘的整个使用过程中不断更新。低级格式化将一些块保留作为备用,对操作系统透明。控制器可以用备用块来逻辑地替代坏块。这种方案称为扇区备用。