磁盘管理
磁盘组织与管理
磁盘是现代计算机系统中常用的高速、大容量存储设备。以下是磁盘组织与管理的关键点:
磁盘结构
- 磁盘由多个盘片组成,每个盘片有多个盘面,每个盘面上有多个磁道。磁道被进一步划分为扇区。
- 磁盘空间的地址由三个参数决定:柱面号、磁头号和扇区号,表示特定的物理位置。
- 计算公式:
- 块号 \( b = k + s \times (j + i \times t) \)
- 其中 \( k \) 是扇区号,\( s \) 是每个磁道的扇区数,\( j \) 是磁头号,\( i \) 是柱面号,\( t \) 是每个柱面的磁道数。
磁盘空间管理
- 空闲块表法:记录所有空闲块的地址。
- 空闲块链法:使用链表将所有空闲块连接。
- 位示图法:使用位图表示磁盘的使用情况,位值为0表示空闲,为1表示已占用。
- 成组链接法:以成组的方式链接空闲块,适用于大容量磁盘。
磁盘调度算法
磁盘调度算法用于优化磁盘访问时间,减少寻道时间。常见的调度算法有:
先来先服务(FCFS)
- 按照请求到达的顺序依次处理,算法简单且公平。
- 缺点:寻道时间可能较长,适合请求数目较少的场合。
最短寻道时间优先(SSTF)
- 优先选择距离当前磁头最近的请求。
- 优点:减少总寻道时间,提高效率。
- 缺点:可能导致距离远的请求长时间得不到处理,出现“饥饿”现象。
电梯调度算法(SCAN)
- 类似电梯的运行模式,磁头在两个方向来回移动,处理沿途的请求。
- 优点:减少了磁头来回移动的次数,避免了饥饿现象。
- 变种:
- 单向扫描(LOOK):只在一个方向上扫描到最后一个请求,返回时不处理请求。
- 双向扫描(C-SCAN):在扫描结束时从另一端开始新一轮扫描,避免了某一方向的等待时间过长。
循环扫描(C-LOOK)
- 在单向扫描的基础上优化,只扫描到最远的请求,然后从起始位置重新开始,减少无效扫描。
虚拟设备的实现思想
虚拟设备技术通过软件模拟多个物理设备,使共享型设备看起来像多个独占设备,以提高设备利用率和系统的并行处理能力。
虚拟设备的实现
- 实现方式:通过设备管理程序(如设备驱动程序)对设备进行抽象,使其在操作系统中表现为独立的逻辑设备。
- 应用场景:打印机共享、磁盘分区、虚拟内存等。
假脱机技术(SPOOLing)
SPOOLing(Simultaneous Peripheral Operations On-Line,假脱机)系统是通过模拟独占型设备为多个用户服务的一种技术,它的核心是利用磁盘作为中介缓冲,解决独占型设备在多用户环境下的并发使用问题。SPOOLing系统主要由以下三部分组成:
预输入程序(Input Spooler)
- 功能:
- 负责将输入设备的数据(如键盘、终端等)从外部设备读取并存储到磁盘的输入缓冲区中。
- 在多用户系统中,每个用户的输入请求通过预输入程序重定向到磁盘的输入区域,避免了直接访问实际输入设备的资源竞争问题。
- 工作流程:
- 接收到用户输入的数据请求后,预输入程序将数据写入到磁盘的输入缓冲区(称为“井”)。
- 将输入的数据进行排队,等待后续的“井管理”程序处理。
井管理程序(Well Management Program)
- 功能:
- 作为SPOOLing系统的核心部分,负责管理存储在磁盘缓冲区(井)中的数据。
- 处理输入数据的组织、排序和调度,决定哪些数据应该被传递给处理程序,以及何时执行。
- 工作流程:
- 根据优先级或到达顺序从井中提取输入缓冲区的数据。
- 调度和分配数据处理任务,将用户输入的数据传递给对应的处理程序进行执行。
- 将处理完成的输出数据交给“缓输出”程序进行处理。
缓输出程序(Output Spooler)
- 功能:
- 负责将处理程序产生的输出数据暂时存储在磁盘的输出缓冲区中,并在设备空闲时将这些数据传输到实际的输出设备(如打印机、显示器等)。
- 缓输出程序可以有效减少用户等待时间,提高设备的利用率。
- 工作流程:
- 将用户处理程序的输出结果写入磁盘的输出缓冲区。
- 根据输出设备的状态(如空闲或忙碌)决定何时将数据从缓冲区传送至实际设备。
- 按顺序将输出数据发送到设备,完成输出操作。
SPOOLing系统的工作流程
- 预输入阶段:用户输入的请求通过“预输入”程序被存储到磁盘的输入缓冲区。
- 井管理阶段:系统根据调度策略,从输入缓冲区中取出请求进行处理,完成后将结果放入输出缓冲区。
- 缓输出阶段:当输出设备空闲时,“缓输出”程序将缓冲区中的数据按序输出到实际设备。
SPOOLing系统的优势
- 设备共享:多个用户可以同时使用独占型设备(如打印机),提高设备利用率。
- 并行处理:利用磁盘作为中介,能够并行处理输入和输出请求,减少设备等待时间。
- 减少阻塞:用户不必等待设备完成当前任务即可继续工作,提升系统响应速度。
应用场景
- 打印服务:在打印机共享的环境中,用户的打印请求先被存入磁盘缓冲区,然后由SPOOLing系统统一调度,逐一传送给打印机进行输出。
- 输入/输出设备管理:适用于需要缓解输入/输出设备与CPU速度不匹配的场景,提高系统的整体吞吐量。
总结
- 磁盘管理通过结构化的组织和高效的空间管理策略,实现磁盘的高效利用。
- 磁盘调度算法通过不同的调度策略,减少磁盘的寻道时间,提升系统性能。
- 虚拟设备和SPOOLing技术使独占型设备能够被多个进程并发使用,提高了系统的资源利用率和处理效率。