I/O软件层次

目录

一、I/O软件层次

二、I/O程序接口(用户进程接口)


一、I/O软件层次

从上往下分别是:用户层、设备独立性软件、设备驱动程序、中断处理程序、硬件

用户层软件
给用户提供接口,支持各种库函数(例如prinft函数)等

设备独立性软件(设备无关性软件)
向上层提供统一的系统调用接口,如read,write等
实现设备管理
实现差错处理
实现设备分配和回收管理
数据缓冲区管理

设备驱动程序
建立逻辑设备名->物理设备名的映射管理
通过逻辑设备表(LUT)来进行管理
逻辑设备表记录设备逻辑名、设备物理名、设备驱动程序入口地址等信息
这种管理有两种方式:
整个系统只设置一张LUT表(逻辑设备表)
每个用户设置一张LUT(逻辑设备表)

不同的设备需要不同的驱动程序
因为设备的内部实现和硬件特性不一样
这些设备的驱动程序在厂家生产时,就已经提供好了
我们可以直接下载驱动程序并使用即可

中断处理程序:进行中断处理,和硬件直接打交道

二、I/O程序接口(用户进程接口)

由于底层的I/O设备有很多类型
有块设备(磁盘)、字符设备(键盘)、网络控制设备(网卡)等
块设备每一次传输单位为数据块,支持随机访问(可寻址)
但是,字符设备一次传输单位为一个字节,且不支持随机访问,只支持顺序访问(不可寻址)
因此,为了给用户提供的调用接口就必须根据设备特性不同,设计不同的接口
于是,由此,我们有三类I/O用户接口:字符设备接口、块设备接口、网络设备接口
以及设备驱动程序接口

设备类型接口相关系统调用功能描述
字符设备接口get/putgetput读/写一个字符
块设备接口read/writereadwriteseekread/write: 读写多个字符(或数据块) seek: 修改读写指针的位置
网络设备接口socketsocketbindconnectread/write

socket: 创建套接字(IP:端口)并指定TCP/UDP

bind: 绑定端口 

connect: 连接远程主机 

read/write: 读取/写入数据

阻塞 I/O进程发出 I/O 系统调用后,进入阻塞态,等待结果(如 scanf进程在等待 I/O 操作完成时阻塞,直到操作系统返回执行结果
非阻塞 I/O进程发出 I/O 系统调用后,不阻塞,立即返回结果(如 write进程在发出 I/O 请求后立即返回,不需要等待操作完成,结果可能需要稍后获取
设备驱动程序接口操作系统为设备设计标准化的接口,所有设备制造商需遵循这一接口规范,以实现设备的统一管理


核心子系统:设备独立性软件、设备驱动程序、中断处理程序这三个属于操作系统内核层级的统称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二十5画生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值