用户层的I/O软件:桥梁和保护者
用户层的I/O软件包括系统调用和库函数,它们构成了应用程序与操作系统间通信的桥梁。此外,还包括一些运行于用户空间的特殊程序,如假脱机系统和守护进程,为用户提供特定的服务。
系统调用
- 目的:允许用户程序间接访问操作系统的内核态服务,如I/O操作,而不直接调用内核过程。
- 执行过程:应用程序通过系统调用请求服务时,操作系统会将CPU从用户态切换到核心态,执行相应的服务,然后返回结果并切换回用户态,继续执行用户程序。
库函数
- 作用:提供了一种方便的方式来使用系统调用。在C语言和UNIX系统中,许多系统调用都有对应的库函数,简化了程序员的工作。
- Win32 API:微软定义的一套接口,不直接与系统调用一一对应,但提供了获取操作系统服务的方法。
- 扩展OS功能:库函数不仅仅是系统调用的封装,它们还扩展了操作系统内核的功能,使得用户能更方便地获取服务。
假脱机系统和守护进程
- 假脱机系统:一种在用户空间运行的程序,可以处理诸如打印作业等任务,使它们看起来像是异步执行的。
- 守护进程:在网络环境中,守护进程常用于处理文件传输等背景任务,是I/O系统的重要组成部分,运行在用户空间,但为系统和网络服务提供支持。
结论
用户层的I/O软件为操作系统的使用者提供了一个安全、方便的接口,通过系统调用和库函数,用户程序可以执行文件操作、设备控制等I/O任务,而无需关心底层的硬件细节。这种设计既保护了系统资源,也提高了开发效率和系统的可用性。通过假脱机系统和守护进程,操作系统能够在用户空间提供更多的服务和功能,进一步增强了其灵活性和功能性。
假脱机系统和守护进程:实现设备共享和虚拟化
假脱机(Spooling)技术是计算机操作系统中用来解决CPU与I/O设备速度不匹配问题的一种有效方法,同时也使得多个用户或进程能够共享同一物理I/O设备。
假脱机技术概述
- 起源:20世纪50年代,为缓和CPU与I/O设备速度的矛盾,引入了脱机输入/输出技术,后发展为假脱机技术。
- 定义:假脱机是一种在联机状态下模拟脱机输入/输出的技术,通过高速存储(如磁盘)暂存数据,实现CPU与I/O设备的并行操作。
假脱机系统组成
- 输入井和输出井:高速存储中的特定区域,用于暂存输入数据和待输出数据。
- 输入/输出缓冲区:内存中的缓冲区,用于缓解CPU和存储设备之间速度的不匹配。
- 输入/输出进程:负责将数据从输入设备传输到输入井,以及从输出井传输到输出设备。
- 井管理程序:控制数据与磁盘井之间的交换,管理输入/输出井中的数据。
特点
- 提高I/O速度:将I/O操作从对低速设备的直接访问转变为对高速磁盘的访问。
- 设备共享:允许多个进程共享单一的物理I/O设备,如打印机。
- 实现虚拟设备:宏观上,多个进程可以同时“使用”同一物理设备,每个进程感觉像是独占了一个逻辑设备。
假脱机打印机系统
- 组成:磁盘缓冲区、打印缓冲区、假脱机管理进程和打印进程。
- 功能:允许多个用户或进程共享打印机,通过磁盘缓冲区暂存打印数据,由打印进程负责实际的打印任务。
守护进程(Daemon)
- 定义:特殊的系统进程,运行在后台,执行如打印、邮件传输等服务。
- 作用:管理假脱机文件队列,按顺序处理打印请求,实现打印机等设备的共享。