操作系统中的块设备和字符设备7 Jan 2025 | 11分钟阅读 在本文中,我们将讨论操作系统中的块设备和字符设备,包括它们的组成部分、用例和示例。 设备简介在操作系统领域,设备是处理数据输入和输出的硬件组件。这些设备对于计算机与其环境通信至关重要。换句话说,设备可分为几种类型。输入设备包括键盘和鼠标;输出设备包括显示器和打印机;存储设备包括硬盘驱动器。通信方面有网络接口等。这些各种设备之间的和谐运行对于操作系统的有效管理至关重要。 设备管理的重要性控制和协调连接到计算机的各种硬件组件是操作系统的一个重要部分,称为设备管理。设备管理在获得最大系统性能、可靠性和可接受的用户体验方面具有最重要的意义。它使得操作系统与硬件设备之间的交互有了一个清晰的标准。 设备管理的一个重要方面涉及资源的分配方式,以便多个进程都能使用设备而不会发生冲突。此外,设备管理还涉及处理中断。中断是由硬件生成的信号,用于通知操作系统已发生特定事件,例如数据到达或任务完成。必须妥善处理这些中断,否则数据将无法及时准确地处理。 块设备和字符设备由操作系统控制的设备可分为两大类:块设备和字符设备。块设备以固定大小的块存储和检索数据,这允许真正的随机访问。此类包括硬盘驱动器和固态硬盘等存储设备,其中数据以块的形式排列。系统可以独立访问任何这些块来读取或写入数据。 然而,字符设备一次一个字符地串行处理数据。键盘和串行端口等设备的典型方向是流式数据。与块设备相反,字符设备不支持随机访问,并且数据是按接收顺序处理的。 块设备简介块设备是操作系统的一种基本设备类型。它们以固定大小的块或数据块的形式存储和访问数据。它们通常有几千字节大小,代表可以在硬盘上读取或写入的最小单位。块设备在其数据访问功能方面有所不同。字符设备单独处理信息,而块类型可以随机读取或写入。 块设备的许多流行应用涉及长期存储;例如硬盘驱动器 (HDD) 和固态硬盘 (SSD),它们被称为大容量存储。 块设备操作从块设备读取
写入块设备
随机访问
块设备接口的组成部分块设备接口是一个复杂的系统,可简化操作系统与块设备之间的通信。设备驱动程序、I/O 调度程序和缓冲区缓存等组件结合在一起,提供了一种方便而有效的方式来处理多个块设备。现代操作系统具有灵活而强大的块设备处理结构。这是因为该接口支持 DMA、错误报告机制、热插拔功能等。 设备驱动程序
I/O 调度程序
缓冲区缓存
原始 I/O 和直接 I/O原始 I/O原始 I/O,简称原始磁盘 I/O,涉及在最低级别与块设备进行交互。在块设备接口中,原始 I/O 意味着应用程序与块设备之间的直接交换,绕过了文件系统操作。 特性
用例 操作系统中的原始 I/O 有多种用例。原始 I/O 的一些主要用例如下:
直接 I/O直接 I/O,或简称为直接磁盘 I/O (DIO),是一种允许应用程序直接在主内存中执行输入输出操作的技术,而无需通过操作系统缓冲区缓存。在块设备接口下,直接 I/O 提供了一种绕过缓冲区缓存并将数据直接从应用程序内存空间传输到块设备内存空间或从中传输的.。 特性
用例 操作系统中的直接 I/O 有多种用例。直接 I/O 的一些主要用例如下:
与块设备接口的关系与块设备的集成 设备接口与原始 I/O 和直接 I/O 密切相关。这些方法为应用程序访问块设备提供了替代通道,从而实现了直接和低级别的交互。 注意事项
块设备中的错误校正
块设备中的安全措施
算法优化 在块设备中,I/O 调度程序决定读写请求的服务顺序。高端调度程序使用算法来最大限度地减少磁盘访问的频率和距离,从而减少寻道时间,同时提高系统性能。示例包括CFQ(完全公平排队)、Deadline 和预期调度程序。 SSD 感知调度程序 随着固态硬盘的广泛使用,一些 I/O 调度程序将变得 SSD 感知。由于 SSD 没有机械部件,这些调度程序会考虑这种结构和 I/O 操作安排的差异,从而延长 SSD 产品的寿命并提高性能。 SCM 作为块设备 例如,3D XPoint 技术是一种介于传统 RAM 和存储之间的非易失性内存。与块设备一样,SCM 提供低延迟、字节可寻址的访问,类似于 RAM。 块设备示例操作系统中有多种块设备示例。其中一些如下: 1. 硬盘驱动器 (HDD) 块设备最常见的例子是硬盘驱动器。HDD 使用磁存储在旋转磁盘上的块中存储数据。此外,每个块都有一个不同的地址。这意味着操作系统可以任意访问数据。HDD 以其大存储容量而闻名;它们已被大规模生产并广泛用于个人计算机、服务器和其他计算设备中以存储长期数据。 2. 固态硬盘 (SSD) 另一种常见的块设备类型是固态硬盘,它因其速度和可靠性而越来越受欢迎。与 HDD 不同,SSD 使用基于 NAND 的闪存进行存储。HDD 和 SSD 的组织方式相同;它们以块的形式存储数据,操作系统可以对这些小单元进行随机读写操作。SSD 的数据访问时间更快、更稳定,因此适用于速度和稳定性很重要的应用程序。 3. USB 驱动器 USB 驱动器,也称为闪存或U盘,是使用 NAND 闪存存储数据的便携式块设备。这些设备通过 USB 端口连接到计算机,通常用于数据传输、备份或便携式存储。与其他块设备一样,USB 驱动器可以随机访问存储的信息。您可以直接读取和写入特定文件,而无需像使用过时的顺序 I/O 操作的硬盘驱动器那样逐个或多个块读取的过程。 字符设备一次一个字符地串行处理数据是操作系统中使用设备的根本。与以固定大小的块存储数据并具有随机访问能力的块设备不同,字符设备将数据作为连续流进行管理。当数据以线性方式处理或生成时,字符设备对于管理输入和输出至关重要。 键盘、鼠标和其他类似的输入单元通常属于此类。此类设备通过传递单个字符与操作系统进行通信,从而实现即时交互式数据处理。 字符设备操作从字符设备读取
写入字符设备
顺序访问
示例:键盘、鼠标、串行端口 输入子系统框架大多数操作系统都有复杂的输入子系统框架,为处理字符设备提供事件驱动的结构。这些框架控制输入事件的流程,让应用程序监听特定的类型。输入事件包括键盘快捷键和基于手势的修改等。 输入设备抽象输入子系统中的抽象层支持设备无关的编程。应用程序可以响应通用输入事件。然后,子系统会将这些事件转换为设备相关的函数,并为触摸屏、键盘和鼠标等不同字符设备提供统一的接口。 多路复用和解复用许多字符设备可以支持多路复用,从而允许多个应用程序同时使用一个设备。例如,像tmux 这样的终端多路复用器允许您在一个字符设备上运行多个终端会话。解复用机制可以区分输入和输出并对其进行适当路由。 进程间通信 (IPC)字符设备可以作为进程之间通信的通道。使用字符设备进行进程间通信可以非常有效地实现应用程序之间的数据交换和同步。例如,命名管道和 Unix 域套接字就是此类示例。 量子计算的影响量子计算为块设备和字符设备带来了新的考虑。量子比特可能仅用于量子存储,即这些基本不同的架构可能会彻底改变经典系统所设定的边界。 NVMe 协议NVMe 是一种用于操作系统与 PCI Express 上的固态硬盘 (SSD) 之间通信的新协议。它在低延迟、并行性和可伸缩性方面也提供了巨大的改进,非常适合当今的存储设备。 多队列支持NVMe 引入了多队列支持的概念,该概念允许同时进行 I/O 操作,解决了传统存储协议的问题,并在包含多个核心或线程的环境中提供了改进的性能。 下一主题操作系统错误处理 |
我们请求您订阅我们的新闻通讯以获取最新更新。