江小南

V1

2023/05/14阅读:18主题:萌绿

【操作系统】输入输出应用程序接口和驱动程序接口、IO核心子系统、假脱机技术

1. 输入/输出应用程序接口&设备驱动程序接口

1. 输入/输出应用程序接口

2. 阻塞/非阻塞I/O

阻塞I/O:应用程序发出I/0系统调用,进程需转为阻塞态等待。

eg:字符设备接口——从键盘读一个字符get。

非阻塞I/O:应用程序发出I/0系统调用,系统调用可迅速返回,进程无需阻塞等待。

eg: 块设备接口——往磁盘写数据write。

3. 设备驱动程序接口

若各公司开发的设备驱动程序接口不统一,则操作系统很难调用设备驱动程序。

操作系统规定好设备驱动程序的接口标准,各厂商必须按要求开发设备驱动程序。

2. I/O核心子系统

我们需要重点理解和掌握的功能是: 1/O调度、设备保护、假脱机技术( SPOOLing技术)、设备分配与回收、缓冲区管理(即缓冲与高速缓存)。

1. 假脱机技术

注:假脱机技术(SPOOLing技术)需要请求“磁盘设备”的设备独立性软件的服务,因此一般来说假脱机技术是在用户层软件实现的。

2. I/O调度

I/O调度:用某种算法确定一个好的顺序来处理各个I/O请求

如:磁盘调度(先来先服务算法、最短寻道优先算法、SCAN算法、C-SCAN算法、LOOK算法、C-LOOK算法)。当多个磁盘I/O请求到来时,用某种调度算法确定满足I/O请求的顺序。

同理,打印机等设备也可以用先来先服务算法、优先级算法、短作业优先等算法来确定I/O调度顺序。

3. 设备保护

操作系统需要实现文件保护功能,不同的用户对各个文件有不同的访问权限(如:只读、读和写等)。

在UNIX系统中,设备被看做是一种特殊的文件,每个设备也会有对应的FCB。当用户请求访问某个设备时,系统根据FCB中记录的信息来判断该用户是否有相应的访问权限,以此实现“设备保护”的功能。

3. 假脱机技术

1. 什么是脱机技术

2. 假脱机技术——输入井和输出井

假脱机技术”,又称“SPOOLing技术”是用软件的方式模拟脱机技术。

3. 输入进程和输出进程

要实现SPOOLing技术,必须要有多道程序技术的支持。系统会建立“输入进程”和“输出进程”。

4. 输入/输出缓冲区

5. 共享打印机原理

独占式设备——只允许各个进程串行使用的设备。一段时间内只能满足一个进程的请求。

共享设备——允许多个进程“同时”使用的设备(宏观上同时使用,微观上可能是交替使用)。可以同时满足多个进程的使用请求。

当多个用户进程提出输出打印的请求时,系统会答应它们的请求,但是并不是真正把打印机分配给他们,而是由假脱机管理进程为每个进程做两件事:

  1. )在磁盘输出井中为进程申请一个空闲缓冲区(也就是说,这个缓冲区是在磁盘上的),并将要打印的数据送入其中;
  2. 为用户进程申请一张空白的打印请求表,并将用户的打印请求填入表中(其实就是用来说明用户的打印数据存放位置等信息的),再将该表挂到假脱机文件队列上。

当打印机空闲时,输出进程会从文件队列的队头取出一张打印请求表,并根据表中的要求将要打印的数据从输出井传送到输出缓冲区,再输出到打印机进行打印。用这种方式可依次处理完全部的打印任务。

虽然系统中只有一个台打印机,但每个进程提出打印请求时,系统都会为在输出井中为其分配一个存储区(相当于分配了一个逻辑设备),使每个用户进程都觉得自己在独占一台打印机,从而实现对打印机的共享。

SPOOLing技术可以把一台物理设备虚拟成逻辑上的多台设备,可将独占式设备改造成共享设备

4. 小结

分类:

后端

标签:

操作系统

作者介绍

江小南
V1