五、设备管理


前言

  • 设备管理的主要任务是管理系统中的所有外部设备。
  • UNIX系统把设备分为两类:
    (1)块设备。用于存储信息,它对信息的存取是以信息块为单位进行的,如通常的磁盘、磁带等。
    (2)字符设备。用于输入/输出程序和数据,它对信息的存取是以字符为单位进行的,如通常的终端设备、打印机等。

一、字符设备缓冲区管理

  • 为了缓和CPU和I/0设备速度不匹配的矛盾、并提高CPU和I/O设备操作的并行程度,在现代OS中,都设置了缓冲管理功能。
  • 在UNIX系统中,分别为字符设备和块设备设置了缓冲池。
    字符缓冲区的大小是以字节为单位
    块缓冲则是以盘块大小为单位
  • 系统同时为每一种缓冲池提供了一组相应的操作,以便从缓冲池中获取或释放缓冲区

二、内核与驱动程序接口

  • 在UNIX系统中,每类设备都有一个驱动程序。例如
    磁盘驱动程序用来控制所有的磁盘
    终端驱动程序用来控制所有的终端
    1.设备开关表及作用
  • 任何一个驱动程序都包括用于执行不同操作的多个函数,如打开、关闭、读或写等。
  • 为了能方便地找到各函数的入口地址,使系统控制能方便地转向各函数,系统为每类设备提供了一个设备开关,其中含有各函数的入口地址。
  • 由多种类型的设备开关构成一张设备开关表,表中的每一行是一类设备驱动程序的各函数的入口地址;表的每一列是执行相同操作的不同(设备类型)函数。
    磁盘驱动程序
    1.打开磁盘驱动器的过程gdopen
  • 在UNIX系统中,设备被看作是一种特殊类型的文件,因而在使用该文件之前,也须先将它打开。
  • gdopen用于打开磁盘驱动器,输入参数是设备号,无输出参数。进入该过程后,首先检查系统中是否有由输入参数dev所指定类型的磁盘驱动器,若有,再检查它是否已被打开,如果尚未打开,便将此驱动器打开。若系统中无指定类型的磁盘驱动器,则置相应的出错信息后返回。
  • 打开时,将该磁盘控制器表中的标志b_flag设置为B_ONCE;再调用gdtimer过程启动对应的控制器和设备短期时钟闹钟,以控制磁盘驱动器的执行时间。
    磁盘读、写程序
    1) 读方式
    一般读方式:只把盘块中的信息读入缓冲区,由bread过程完成。(需数据者进程被阻塞)
    提前读方式:提前读功能由breada过程完成。当一个进程要顺序地读一个文件所在的各个盘块时,会预见到所要读的下一个盘块,因而在读出指定盘块(作为当前块)的同时,可要求提前将下一个盘块(提前块)中的信息读入缓冲区。这样,当以后需要该盘块的数据时,由于它已在内存, 故而可缩短读这块数据的时间,从而改善了系统性能。
    2) 写方式
    一般写/同步写
    异步写
    延迟写
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值