操作系统文件视图之设备驱动简述
OS文件视图之设备驱动
一、IO与显示器
终端设备输出:显示器;终端设备的输入:键盘
外设工作:CPU通过CPU-内存总线,然后经过总线控制器,发出命令,再经PCI总线,最后到外设自己的控制器(即网卡,显卡等)接受指令,写入自己的缓存进行处理计算,待外设控制器处理完毕后,向CPU发出中断,表示自己处理完毕,CPU再读数据到内存。对于操作系统来说就是,CPU向控制器中的寄存器读写数据;控制器完成真正的工作,并向CPU发中断信号,还有中断处理程序。

外设驱动(三件事):CPU发送给外设控制器的必要指令(核心);外设控制器处理完后,需要发CPU中断信号,中断处理程序;文件视图,使得写寄存器更简单(第三步最麻烦)
向设备控制器的寄存器写命令:需要查寄存器地址、内容格式和语义,OS需要给用户提供一个简单视图--文件视图
OS为用户提供统一的接口;根据设备文件找到控制器的地址、内容格式等
比如printf的过程:

二、键盘
终端设备的输入:键盘
按键就会中断,键盘输入的流程
-
中断初始化开始,21号中断在OS初始化时设置为键盘中断
-
处理扫描码key_table,do_self
-
从key_map取出ASCII码,缓冲队列
-
对字符进行处理,可显示字符回显处理
三、 生磁盘的使用
磁盘作为外设的一部分,工作流程与其他外设基本一致,只是控制器有专门的磁盘控制器
-
CPU向磁盘控制器中的寄存器读写数据
-
磁盘控制器完成真正的工作,并向CPU发中断信号
磁盘常识:
-
磁盘访问单位:扇区
-
扇区大小:512字节
-
扇区的大小:传输时间和碎片浪费的折衷
磁盘的IO过程:控制器-》寻道-》旋转-》传输;只需往控制器中写柱面、磁头、扇区、缓存位置,控制器就可以执行,找到指定文件;上层用户发盘块号,相邻盘块可以快速读出;
磁盘访问时间 = 写入控制器时间 + 寻道时间(最核心) + 旋转时间 + 传输时间
OS用空间换时间,每次多读入一些扇区,使得读写速度增加
多进程访问磁盘请求时,需要调度算法,使得寻道时间越少越好
调度算法:
-
-
SSTF:短寻道优先,磁道最少,缺点:饥饿问题
-
SCAN(实际采用):SSTF+中途不回折:每个请求都有处理机会,电梯算法,直接移动到另一端:两端请求都能很快处理
生磁盘的使用整理:
-
进程”得到盘块号“(文件系统的内容:通过文件得到盘块号),算出扇区号
-
用扇区号make_req(实际中还有个缓冲内存,会提高使用速度),用电梯算法add_request
-
进程sleep_on
-
磁盘中断处理
-
do_hd_request算出cyl,head,sector
-
hd_out调用outp(...)完成端口写


浙公网安备 33010602011771号