UNIX系统的设备与文件管理详解
1. 设备管理
UNIX系统调用展示了其灵活性,例如程序员可通过父进程创建子进程来执行程序,无需编写加载程序或寻找内存空间的代码。
UNIX在设备处理方面具有创新性,它将每个I/O设备视为特殊类型的文件,为系统中的每个设备分配类似文件名的名称,并使用i - nodes描述符来识别和存储设备信息,这些描述符存于设备目录中。负责管理主内存与外设间数据传输的子程序称为设备驱动程序。
若计算机使用的设备未随操作系统提供,需由经验丰富的程序员编写或从可靠来源获取并安装设备驱动。设备驱动在系统配置时集成到内核,UNIX的config程序会为硬件配置自动创建conf.c文件,该文件包含控制资源的参数及bdevsw和cdevsw表,使内核能适应不同硬件配置。
1.1 设备分类
I/O系统分为块I/O系统(结构化I/O系统)和字符I/O系统(非结构化I/O系统)。每个物理设备由次要设备号、主要设备号和类别(块或字符)标识。
每个类别都有配置表,包含设备驱动程序的入口点数组,这是系统代码与设备驱动的唯一连接,方便系统程序员快速创建新驱动以适应不同配置的系统。主要设备号作为索引访问特定驱动代码,次要设备号作为参数传递给驱动以访问相同或相似的物理设备。
块I/O系统用于可按相同大小块寻址的设备,UNIX有10 - 70个I/O缓冲区,信息存于列表中。每次发出读命令时,会搜索缓冲区列表,若数据已在缓冲区则直接提供给请求进程,否则从二级存储移至缓冲区。若缓冲区不足,采用LRU策略清空一个缓冲区。
字符类设备由实现字符列表的设备驱动处理。以终端为例,它有两个输入队列(原始队
超级会员免费看
订阅专栏 解锁全文
1136

被折叠的 条评论
为什么被折叠?



