Page cover image

第八章 设备管理

8.1 I/O设备的概念和分类

什么是I/O设备?

I/O设备(输入/输出设备)是计算机系统与外部世界进行通信的硬件组件。它们用于输入数据和输出处理结果。I/O设备可以包括键盘、鼠标、显示器、打印机、硬盘驱动器、网络适配器等。

按使用特性分类

I/O设备可以根据其使用特性分为以下几类:

  1. 输入设备

    • 键盘

    • 鼠标

    • 扫描器

    • 网络摄像头

    • 条形码读取器

  2. 输出设备

    • 显示器

    • 打印机

    • 喇叭

    • 项目报告器

  3. 输入/输出设备

    • 硬盘驱动器

    • USB闪存驱动器

    • 网络适配器

    • 触摸屏

按传输速率分类

I/O设备可以根据数据传输速率分为以下几类:

  1. 低速设备

    • 键盘

    • 鼠标

    • 打印机

    • 条形码读取器

  2. 中速设备

    • 网络摄像头

    • 网络适配器(在特定条件下)

    • 磁盘驱动器(如HDD)

  3. 高速设备

    • 固态硬盘(SSD)

    • 显卡(与显示器通信)

    • 高速网络适配器(如10 Gbps以太网)

按信息交换的单位分类

I/O设备可以根据信息交换的单位进行分类:

  1. 字符设备

    • 这些设备通常以字符或字节为单位进行数据传输,如键盘、打印机等。

    • 传输数据时,通常不需要缓冲,或者只需要很小的缓冲区。

  2. 块设备

    • 块设备以固定大小的数据块(通常是512字节或更大)为单位进行数据传输,如硬盘驱动器。

    • 这些设备通常有较大的缓冲区,可以优化数据传输速度。

  3. 网络设备

    • 网络设备通常以数据包为单位进行数据传输,如网络适配器。

    • 数据包可以包含多个字符或多个块,其大小取决于网络协议和数据类型。

8.2 I/O控制方式

1. 程序直接控制(Programmed I/O)

程序直接控制是最简单的I/O控制方式,它由CPU直接管理数据传输。

  • 工作原理:CPU通过轮询(Polling)或等待状态来检查I/O设备是否准备好进行数据传输。如果设备准备好,CPU直接从设备读取数据或向设备写入数据。

  • 优点:实现简单,不需要特殊的硬件支持。

  • 缺点:效率低,因为CPU在等待I/O操作完成时,不能执行其他任务,这称为忙等待(Busy Waiting)。

2. 中断驱动I/O(Interrupt-driven I/O)

中断驱动I/O利用中断机制来提高CPU的效率。

  • 工作原理:当I/O设备准备好数据传输时,它会向CPU发送一个中断信号。CPU响应中断,暂停当前任务,执行中断服务例程(ISR)来处理I/O操作,然后返回到原来的任务。

  • 优点:减少了CPU的空闲时间,提高了系统效率。

  • 缺点:中断处理可能会引入延迟,特别是当系统中有大量中断时。

3. 直接内存访问(DMA,Direct Memory Access)

DMA允许I/O设备直接与内存进行数据传输,而无需CPU的干预。

  • 工作原理:DMA控制器接管数据传输的控制权,CPU只需初始化DMA操作。DMA控制器直接在内存和I/O设备之间传输数据块,传输完成后通知CPU。

  • 优点:大幅减少了CPU的负担,提高了数据传输的速率。

  • 缺点:需要额外的硬件支持(DMA控制器),并且对内存带宽有较高要求。

4. 通道方式(Channel I/O)

通道方式是DMA的一种更高级形式,通常用于大型计算机系统。

  • 工作原理:通道是一个专门用于I/O操作的处理器,它能够执行一组有限的I/O指令。CPU将I/O任务交给通道,通道自主完成数据传输,然后通知CPU。

  • 优点:进一步减少了CPU的负担,允许CPU执行其他任务,提高了系统吞吐量。

  • 缺点:需要复杂的硬件支持,成本较高,通常只在大型系统中使用。

每种I/O控制方式都有其适用的场景和优缺点。在选择I/O控制方式时,需要考虑系统的需求、成本、性能以及可用的硬件资源。随着技术的发展,例如非一致性内存访问(NUMA)和高速网络技术,I/O控制方式也在不断演进。

8.3 假脱机技术

什么是假脱机技术及解决的问题:

定义:假脱机技术是一种输入/输出技术,它通过使用磁盘空间作为输入/输出缓冲区(通常称为输入输出井),允许进程在执行其他任务的同时进行I/O操作。

解决的问题

  • 设备冲突:在多道程序系统中,多个进程可能同时需要使用打印机、磁带机等独占设备,假脱机技术可以解决这种设备冲突问题。

  • 提高效率:它允许CPU在等待I/O操作完成时执行其他任务,减少了CPU的空闲时间。

  • 均衡速度差异:由于CPU的处理速度远高于I/O设备,假脱机技术可以平衡CPU与I/O设备之间的速度差异。

实现原理:

  1. 输入输出井(Spool)

    • 输入输出井是磁盘上的一个区域,用于暂存即将打印或输出的数据。

    • 当一个进程请求打印时,它的输出不是直接发送到打印机,而是先写入到输出井中。

  2. 输入输出进程(Spooler)

    • 输入输出进程是管理假脱机操作的软件部分,它负责将数据从输入井传输到输出井,以及从输出井传输到打印机或其他输出设备。

    • 该进程也负责从输入设备读取数据并存储到输入井中。

  3. 缓冲区

    • 缓冲区是内存中的一块区域,用于暂存正在处理的数据。

    • 在假脱机技术中,缓冲区用于减少直接与磁盘交互的次数,提高数据传输的效率。

共享打印机原理:

假脱机技术使得共享打印机成为可能,以下是共享打印机的原理:

  1. 打印请求排队

    • 当多个进程请求打印时,它们的打印作业被发送到打印队列中,这个队列通常存储在磁盘的输出井中。

  2. 打印管理进程

    • 打印管理进程(Spooler)根据队列中的顺序依次处理打印作业。

    • 当打印机空闲时,打印管理进程从输出井中取出下一个打印作业,并将其发送到打印机。

  3. 打印作业处理

    • 打印作业在打印机上完成后,打印管理进程会通知相应的进程打印作业已完成,并从队列中移除该作业。

  4. 无冲突使用

    • 由于所有的打印作业都通过打印管理进程进行排队处理,因此即使多个进程同时请求打印,也不会发生冲突,每个进程都可以认为它独占使用了打印机。

8.4 设备管理与回收

设备分配:

设备分配是指操作系统根据一定的策略将I/O设备分配给请求该设备的进程。设备分配策略主要分为以下几种:

  1. 静态分配

    • 在系统启动时,某些设备被分配给特定的进程,并在整个系统运行期间保持这种分配状态。

    • 这种方法适用于对设备使用有严格要求的专用系统。

  2. 动态分配

    • 设备在进程请求时才被分配,一旦使用完毕,设备可以被其他进程请求使用。

    • 动态分配更加灵活,能够提高设备的利用率。

设备分配的策略通常包括:

  • 独占分配:设备在分配给一个进程后,直到该进程完成使用并释放设备,其他进程才能使用。

  • 共享分配:多个进程可以同时使用同一设备,如打印机可以允许多个进程排队打印。

  • 虚拟分配:通过假脱机技术等手段,将物理设备虚拟化为多个逻辑设备供多个进程使用。

设备分配的过程:

  1. 请求:进程通过系统调用请求使用某一类设备。

  2. 分配:操作系统根据请求和当前设备的可用状态进行分配。

  3. 映射:操作系统将分配的设备映射到请求进程的地址空间。

  4. 控制:操作系统提供适当的接口供进程控制设备。

设备回收:

设备回收是指当进程完成对I/O设备的使用后,操作系统将该设备从进程中释放并可能重新分配给其他进程的过程。以下是设备回收的步骤:

  1. 检测:操作系统检测到设备使用完毕,通常是通过中断或系统调用完成的信号。

  2. 状态更新:操作系统更新设备的状态为“可用”。

  3. 资源释放:操作系统释放进程与设备之间的映射关系,以及所占用的任何相关资源。

  4. 通知:操作系统可能需要通知等待该设备的其他进程设备已可用。

  5. 调度:如果存在等待该设备的进程队列,操作系统将根据调度策略分配设备给下一个进程。

设备分配与回收的策略:

  • 先请求先服务(FIFO):按照请求的顺序分配设备。

  • 优先级分配:根据进程的优先级来分配设备。

  • 最短作业优先:优先分配给预计使用时间最短的进程。

  • 基于需求的分配:根据进程的需求和设备的特性进行分配。

设备分配与回收是操作系统管理I/O设备的关键部分,合理的策略可以提高系统性能,减少设备等待时间,并提高设备的利用率。

8.5 缓冲区管理

缓冲区管理是操作系统中的一个重要功能,它涉及到在内存中为输入/输出(I/O)操作设置缓冲区,以优化数据传输的性能和效率。以下是缓冲区管理的基本概念、目的、策略和实现方式:

基本概念:

  • 缓冲区:是一块连续的内存空间,用于暂时存储数据,以便于不同速度的设备或进程之间进行数据交换。

目的:

  1. 速度匹配:CPU的处理速度远高于I/O设备的速度,缓冲区可以减少CPU等待I/O操作的时间。

  2. 流量控制:当数据产生速度与消费速度不匹配时,缓冲区可以起到调节作用。

  3. 数据保护:缓冲区可以避免由于数据传输过程中的错误而直接影响到主存储器或处理器。

  4. 数据集中:缓冲区可以将多次小量的I/O操作集中成一次大量操作,提高效率。

策略:

  1. 单缓冲:为每个设备或进程分配一个缓冲区。

    • 简单但效率较低,因为在数据被处理或传输时,缓冲区是空闲的。

  2. 双缓冲:使用两个缓冲区,当一个缓冲区正在被处理时,另一个缓冲区可以接收新的数据。

    • 提高了缓冲区的利用率,但需要额外的机制来同步两个缓冲区。

  3. 循环缓冲:多个缓冲区组成一个环,用于连续的数据流处理。

    • 适用于数据流不断且需要连续处理的情况。

  4. 缓冲池:系统维护一组缓冲区,供多个进程共享使用。

    • 提高了缓冲区的使用效率,适用于多进程环境。

实现方式:

  1. 缓冲区分配

    • 静态分配:在系统启动时分配固定大小的缓冲区。

    • 动态分配:根据需要动态地分配和释放缓冲区。

  2. 缓冲区同步

    • 使用信号量、互斥锁等同步机制来控制对缓冲区的访问。

    • 生产者-消费者问题:通过同步机制确保生产者不会覆盖未处理的数据,消费者不会读取空缓冲区。

  3. 缓冲区操作

    • 填充:将数据从输入设备读入缓冲区。

    • 清空:将缓冲区中的数据写入输出设备。

    • 传输:在缓冲区之间或缓冲区与用户空间之间传输数据。

  4. 缓冲区管理算法

    • 先进先出(FIFO):最先进入缓冲区的数据最先被处理。

    • 优先级调度:根据数据的优先级来处理缓冲区中的数据。

缓冲区管理的挑战:

  • 缓冲区溢出:当数据输入速度超过缓冲区处理速度时,可能导致数据丢失。

  • 缓冲区饿死:低优先级的数据长时间得不到处理。

  • 同步问题:确保生产者和消费者正确地访问缓冲区,避免竞态条件。

缓冲区管理是提高系统I/O性能的关键技术,合理地设计和实现缓冲区管理策略可以显著提升系统的整体性能。

8. 6 磁盘结构、调度算法和管理

磁盘是计算机系统中最常用的外部存储设备之一,其结构和调度算法对于系统的性能有着重要的影响。以下是磁盘的结构、调度算法和管理的详细描述:

磁盘结构:

  1. 磁头(Head):用于读写磁盘表面的磁性介质。

  2. 盘片(Platter):一个磁盘通常由多个圆形的盘片组成,每个盘片都有两面可以存储数据。

  3. 磁道(Track):每个盘片表面由一组同心圆组成,每个圆称为一个磁道。

  4. 扇区(Sector):磁道被划分为多个扇区,每个扇区是磁盘读写的最小单位。

  5. 柱面(Cylinder):所有盘片上相同编号的磁道组成一个柱面。

  6. 接口(Interface):磁盘与计算机系统连接的部分,如SATA、SAS、SCSI等。

磁盘调度算法:

磁盘调度算法决定了对磁盘I/O请求的处理顺序,以下是一些常见的磁盘调度算法:

  1. 先来先服务(FCFS)

    • 按照请求到达的顺序服务。

    • 可能会导致磁盘头频繁移动,从而造成“饥饿”现象。

  2. 最短寻找时间优先(SSTF)

    • 选择与当前磁头位置最近的请求进行服务。

    • 减少了磁头的移动距离,但可能导致某些请求长期得不到服务。

  3. 扫描算法(SCAN)

    • 磁头在一个方向上移动,直到到达该方向的最后一个请求,然后反向移动。

    • 也称为电梯算法,因为其工作方式类似于电梯的运动。

  4. 循环扫描算法(C-SCAN)

    • 类似于SCAN,但是磁头只在一个方向上移动,到达磁盘末端后直接跳转到另一端开始。

  5. LOOK和C-LOOK算法

    • 是SCAN和C-SCAN的变种,当磁头移动到没有请求的位置时,会立即改变方向。

磁盘管理:

磁盘管理涉及到对磁盘空间的有效分配和使用,以下是一些管理任务:

  1. 分区

    • 将一个物理磁盘划分为多个逻辑磁盘,每个逻辑磁盘称为一个分区。

  2. 格式化

    • 在磁盘上创建文件系统,以便操作系统可以存储和检索数据。

  3. 文件系统管理

    • 管理磁盘上的文件和目录结构,包括分配和回收存储空间。

  4. 磁盘配额

    • 限制用户或组可以使用的磁盘空间量。

  5. 磁盘碎片整理

    • 通过重新排列磁盘上的文件和空闲空间,减少磁盘碎片,提高磁盘访问速度。

  6. 错误检测与修复

    • 使用磁盘上的冗余信息来检测和修复错误。

  7. 磁盘镜像与备份

    • 创建磁盘的镜像副本,用于数据恢复和备份。

  8. 磁盘阵列(RAID)

    • 通过组合多个磁盘驱动器来提高数据传输率和/或可靠性。

磁盘的结构、调度算法和管理对于计算机系统的性能和可靠性至关重要。有效的磁盘管理可以确保数据的安全,提高系统的响应速度和吞吐量。

8.7 固态硬盘

固态硬盘(Solid State Drive,简称SSD)是一种使用固态电子存储芯片阵列制成的硬盘,与传统的机械硬盘(HDD)相比,它没有活动的机械部件。以下是固态硬盘SSD的一些关键特点:

SSD的结构:

  1. 控制器:控制器是SSD的大脑,负责管理数据传输、错误校正、坏块映射、垃圾回收等操作。

  2. NAND闪存芯片:这是SSD存储数据的地方,通常使用NAND型闪存,包括SLC、MLC、TLC和QLC等不同类型。

  3. 缓存:许多SSD使用DRAM或SRAM作为缓存,以提高读写性能。

  4. 接口:SSD使用SATA、NVMe over PCIe、SAS等接口与计算机系统连接。

SSD的优点:

  1. 速度:SSD的读写速度远高于HDD,这意味着系统启动、文件传输和应用程序加载时间更短。

  2. 耐用性:由于没有机械运动,SSD更耐震动和冲击。

  3. 静音:SSD在运行时几乎不发出声音,因为它没有旋转的磁盘和移动的读写头。

  4. 功耗低:SSD的功耗通常低于HDD,有助于延长笔记本电脑的电池寿命。

SSD的缺点:

  1. 成本:SSD的单位存储成本高于HDD,但随着技术的发展,这一差距正在缩小。

  2. 存储容量:尽管SSD的容量在不断增加,但HDD在提供大容量存储方面仍然具有优势。

  3. 写入寿命:NAND闪存单元有有限的写入次数,虽然现代SSD通过技术如wear leveling来延长寿命,但仍然是一个考虑因素。

SSD的类型:

  1. SATA SSD:使用SATA接口,速度受限于SATA接口的速度,通常在500MB/s至600MB/s。

  2. NVMe SSD:使用NVMe(Non-Volatile Memory Express)协议,通过PCIe接口,速度可以达到数GB/s。

  3. mSATA SSD:尺寸较小的SATA SSD,适用于小型设备。

  4. M.2 SSD:尺寸和形状标准化的SSD,可以支持SATA或NVMe接口。

SSD的管理:

  1. 垃圾回收:SSD需要定期执行垃圾回收来清理已删除的数据,并整理空间以保持性能。

  2. TRIM命令:操作系统通过TRIM命令告诉SSD哪些数据块不再需要,以便SSD可以提前擦除这些块。

  3. 坏块管理:SSD控制器需要管理坏块,确保数据不会写入损坏的区域。

由于SSD的诸多优势,它们已经逐渐成为计算机系统的主要存储设备,尤其是在追求高性能和移动性的场合。随着技术的进步,SSD的成本正在下降,而容量和性能则在不断提升。

Last updated