五、I/O软件层次结构

1.用户层软件

1.用户层软件实现了与用户交互的接口,用户可以直接使用该层提供的,与I/O操作相关的库函数对设备进行操作。(printf()),还实现了SPOOLING技术

2.用户层软件将用户请求翻译成格式化的I/O请求,并通过“系统调用”请求操作系统内核的服务

2.设备独立性软件

设备独立性软件,有称设备无关性软件。与设备的硬件特性无关的功能几乎都在这一层实现。

1.向上层提供统一的调用接口(read/write)

2.实现设备的保护[原理类似与文件保护。设备被看做是一种特殊的文件,不同用户对各个文件的访问权限是不一样的,同理,对设备的访问权限也不一样。]

3.差错处理[对一些设备的错误进行处理]

4.设备的分配与回收

5.设备缓冲区的管理[可以通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异]

6.建立逻辑设备到物理设备之间的映射关系:

根据设备类型选择调用相应的驱动程序[用户或用户层软件发出I/0操作相关系统调用的系统调用时,需要指明此次要操作的I/O设备的逻辑设备名(eg:去学校打印店打印时,需要选择 打印机1/打印机2/打印机3,其实这些都是逻辑设备名)]

设备独立性软件需要通过“逻辑设备表(LUT,Logical Unit Table)”来确定逻辑设备对应的物理设备,并找到该设备对应的设备驱动程序

逻辑设备名

物理设备名

驱动程序入口地址

/dev/打印机1

3

1024

/dev/打印机2

5

2046

操作系统系统可以采用两种方式管理逻辑设备表(LUT):

第一种方式:

整个系统只设置一张LUT,这就意味着所有用户不能使用相同的逻辑设备名,因此这种方式只适用于单用户操作系统。

第二种方式:

为每个用户设置一张LUT,各个用户使用的逻辑设备名可以重复,适用于多用户操作系统。系统会在用户登录时为其建立一个用户管理进程,而LUT就存放在用户管理进程PCB

3.设备驱动程序

主要负责对硬件设备的具体控制,将上层发出的一系列命令(如read/write)转化成特定设备“能听得懂”的一系列操作。包括设置设备寄存器;检查设备状态等

注:驱动程序一般会以一个独立进程的方式存在。

4.中断处理程序

当I/0任务完成时,I/0控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行。中断处理程序的处理流程如下:

可见,I/O中断程序也会直接和硬件打交道。

5.硬件

不同的I/O设备有不同的硬件特性,具体细节只有设备的厂家才知道因此厂家需要根据设备的硬件特性设计并提供相应的驱动程序。

总结:

用户层软件

实现与用户交互的接口,向上提供方便易用的库函数

设备独立性软件

①向上层提供统一的调用接口(如 read/write 系统调用);

②设备的保护:

③差错处理;

④设备的分配与回收;数据缓冲区管理:

⑥建立逻辑设备名到物理设备名的映射关系;根据设备类型选择调用相应的驱动程序.

设备驱动程序

设置设备寄存器、检查设备状态

中断处理程序

进行中断处理

硬件

执行VO操作,有机械部件、电子部件组成

理解并记住I/O软件各个层次之间的顺序,要能够推理判断某个处理应该是在哪个层次完成的(最常考的是设备独立性软件、设备驱动程序这两层。

只需理解一个特点即可:直接涉及到硬件具体细节、且与中断无关的操作肯定是在设备驱动程序层完成的;没有涉及硬件的、对各种设备都需要进行的管理工作都是在设备独立性软件层完成的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值