操作系统理论 第六章(输入输出系统)—第六节(用户层的I/O软件)

写在前面:

  1. 本系列笔记主要以《计算机操作系统(汤小丹…)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:操作系统(汤小丹等第四版)_哔哩哔哩_bilibili

一、系统调用与库函数

1、系统调用

        一方面,为使诸进程能有条不紊地使用I/O设备,且能保护设备的安全性,不允许运行在用户态的应用进程去直接调用运行在核心态(系统态)的OS过程;但另一方面,应用进程在运行时,又必须取得OS所提供的服务,否则应用程序几乎无法运行。为了解决此矛盾,OS在用户层中引入了一个中介过程——系统调用,应用程序可以通过它间接调用OS中的I/O过程,对I/O设备进行操作。

        系统中会有许多系统调用,它们的实现方法是基本相同的。当应用程序需要执行某种I/O操作时,在应用程序中必须使用相应的系统调用当OS捕获到应用程序中的该系统调用后,便将CPU的状态从用户态转换到核心态,然后转向操作系统中相应过程,由该过程完成所需的I/O操作;执行完成后,系统又将CPU状态从核心态转换到用户态,返回到应用程序继续执行。

2、库函数

        事实上,由OS向用户提供的所有功能,用户进程都必须通过系统调用来获取,或者说,系统调用是应用程序取得OS所有服务的唯一途径。在早期的操作中,系统调用是以汇编语言形式提供的,所以只有在用汇编语言编写的程序中,才能直接使用系统调用,这对用户是非常不方便的,后来在C语言中,首先提供了与系统调用相对应的库函数。

        在C语言以及UNIX系统中,系统调用与各系统调用所使用的库函数之间几乎是一一对应的,用户程序通过调用对应的库函数使用系统调用,这些库函数与调用程序连接在一起,被嵌入在运行时装入内存的二进制程序中。

        在C语言中提供了多种类型的库函数,对于I/O方面,主要是对文件和设备进行读写的库函数,以及控制/检查设备状态的库函数,显然这些库函数的集合也应是I/O系统的组成部分。可以这样来看待内核和库函数之间的关系:内核提供了OS的基本功能,而库函数扩展了OS内核,使用户能方便取得操作系统的服务。在许多现代OS中,系统调用本身已经采用C语言编写,并以函数形式提供,所以在使用C语言编写的用户程序中,可以直接使用这些系统调用。

        另外,操作系统在用户层中还提供了一些非常有用的程序,如下面将要介绍的假脱机系统,它们是运行在内核之外的程序,但它们仍属于I/O系统。

二、假脱机(Spooling)系统

1、假脱机技术

        为了缓和CPU的高速性与I/O设备低速性间的矛盾,引入了脱机输入、脱机输出技术,该技术是利用专门的外围控制机,先将低速I/O设备上的数据传送到高速磁盘上,或者相反,这样,当处理机需要输入数据时便可以直接从磁盘中读取数据,极大地提高了输入速度,反之,在处理机需要输出数据时,也可以很快的速度把数据先输出到磁盘上,处理机便可去做自己的事情。

        当系统中引入了多道程序技术后,完全可以利用其中的一道程序来模拟脱机输入时的外围控制机功能,把低速I/O设备上的数据传送到高速磁盘上,再用另一道程序模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上,这样便可在主机的直接控制下实现脱机输入、输出功能,此时的外围操作与CPU对数据的处理同时进行这种在联机情况下实现的同时外围操作的技术称为SPOOLing技术,或称为假脱机技术

2、SPOOLing系统的组成

(1)输入井和输出井。这是在磁盘上开辟出来的两个存储区域。输入井模拟脱机输入时的磁盘,用于收容I/O设备输入的数据;输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据。

(2)输入缓冲区和输出缓冲区。这是在内存中开辟的两个缓冲区,用于缓和CPU和磁盘之间速度不匹配的矛盾。输入缓冲区用于暂存由输入设备传送的数据,之后再传送到输入井;输出缓冲区用于暂存从输出井传送的数据,之后再传送到输出设备。

(3)输入进程和输出进程。输入进程也称为预输入进程,用于模拟脱机输入时的外围控制机,将用户要求的数据从输入设备传送到输入缓冲区,再存放到输入井,当CPU需要输入设备时,直接从输入井读入内存;输出进程也称为缓输出进程,用于模拟脱机输出时的外围控制机,把用户要求输入的数据从内存传送并存放到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区输出至输出设备上。

(4)井管理程序。用于控制作业与磁盘井之间信息的交换,当作业执行过程中向某台设备发出启动输入或输出操作请求时,由操作系统调用井管理程序,由其控制从输入井读取信息或将信息输出至输出井。

3、SPOOLing系统的特点

(1)提高了I/O的速度。这里对数据所执行的I/O操作,已从对低速I/O设备执行的I/O操作演变为对磁盘缓冲区中数据的存取,如同脱机输入输出一样,提高了I/O速度,缓和了CPU与低速I/O设备之间速度不匹配的矛盾。

(2)将独占设备改造为共享设备。因为在假脱机打印机系统中,实际上并没为任何进程分配设备,而只是在磁盘缓冲区中为进程分配一个空闲盘块和建立一张I/O请求表,这样,便把独占设备改造为共享设备。

(3)实现了虚拟设备功能。宏观上,虽然是多个进程在同时使用一台独占设备,而对于每一个进程而言,它们都会认为自己是独占了一个设备。

4、假脱机打印机系统

        打印机是独占设备,利用SPOOLing技术将其改造成共享设备。

        每当用户进程发出打印输出请求时,假脱机打印机系统并不是立即把打印机分配给该用户进程,而是由假脱机管理进程完成两项工作:

        ①在磁盘缓冲区中为之申请一个空闲盘块,并将要打印的数据送入其中暂存。

        ②为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到假脱机文件队列上。

        真正的打印输出是假脱机打印进程负责的,当打印机空闲时,该进程首先从假脱机文件队列的队首摘取一张请求打印表,然后根据表中的要求将要打印的数据由输出并传送到内存缓冲区,再交付打印机进行打印。一个打印任务完成后,假脱机打印进程将再次查看假脱机文件队列,若队列非空,则重复上述的工作,直至队列为空,此后,假脱机打印进程将自己阻塞起来,仅当再次有打印请求时,才被重新唤醒运行。

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
I/O设备管理是操作系统中的一个重要组成部分,它负责管理计算机系统中的各种输入输出设备,包括硬盘、键盘、鼠标、打印机等。在本章的下半部分,我们将继续深入讨论I/O设备管理的相关内容。 1. I/O设备驱动程序 I/O设备驱动程序是操作系统中的一个重要组成部分,它负责将操作系统和I/O设备之间进行交互。通常来说,每一种I/O设备都需要对应一个相应的驱动程序。I/O设备驱动程序通常由操作系统厂商提供,也可以由第三方厂商提供。 2. 中断处理程序 当一个I/O设备完成了一个输入输出操作时,它会向CPU发送一个中断请求,以通知CPU有一个I/O设备需要处理。CPU在接收到中断请求后,会暂停当前正在执行的任务,并执行中断处理程序。中断处理程序是操作系统中的一个重要组成部分,它负责处理中断请求,并将结果返回给I/O设备驱动程序。 3. 缓存管理 缓存是操作系统中的一个重要概念,它指的是在内存中存储的数据副本。I/O设备管理中的缓存可以分为两种,一种是输入缓存,用于存储从I/O设备读取的数据;另一种是输出缓存,用于存储将要写入I/O设备的数据。缓存管理的目的是提高I/O设备的读写效率,减少CPU对I/O设备的访问次数。 4. 设备控制块 设备控制块是操作系统中的一个数据结构,用于管理I/O设备。每一个I/O设备都有一个相应的设备控制块,它包含了I/O设备的基本信息,包括设备类型、设备状态、缓存信息等。设备控制块还可以用于实现多任务操作,即同时处理多个I/O设备请求。 5. 通道控制程序 通道控制程序是操作系统中的一个重要组成部分,它负责管理计算机系统中的通道设备。通道设备是一种高速输入输出设备,通常用于处理大量数据的输入输出操作。通道控制程序可以将多个I/O设备的请求合并,以提高系统输入输出效率。 总之,I/O设备管理是操作系统中的一个重要组成部分,它涉及到多个方面的内容,包括I/O设备驱动程序、中断处理程序、缓存管理、设备控制块和通道控制程序等。在实际应用中,需要根据具体的需求和系统架构,选择合适的I/O设备管理策略,以提高系统的性能和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值