- 块设备
- 字符设备
IO设备由机械部件与电子部件构成 电子部件称为设备控制器或者适配器 控制器的任务: 将串行的比特流转换为字节块, 并完成纠错工作
给控制寄存器分配一个IO端口, 所有IO端口形成IO端口空间 将IO设备寄存器映射到内存上 内存映射IO优点:
- 无需使用特殊指令读取IO设备寄存器
- 不需要特殊保护机制阻止用户进程进行IO操作
- 可以引用内存的指令也能引用控制寄存器
缺点:
- 不能使用高速缓存
加入一个中间层 从CPU-设备 变成 CPU - DMA - 设备
- 突发模式
- 飞越模式: 让设备控制器将数据直接写到主存
- 校验数据
- 总线可能忙
中断向量
-
精确中断:机器停留在一个明确状态的中断
- 程序计数器保留在一个已知的地方
- 所指向的指令之前的所有指令已执行完毕
- 所执行的指令之后的所有指令都还未执行
- 所指向的指令的执行状态是已知的
-
不精确中断
设备独立性
- 统一命名
错误处理
- 低层能处理的问题,就不要交给高层
同步与异步
缓冲
让CPU做全部工作 程序控制IO伪代码:
copy_from_user(buffer,p,count);
for(i = 0;i<count;i++){
while (*p_regs != READY){
*p_regd = p[i];
}
}
return_to_user();
- 让DMA控制数据传输,而不必打扰CPU
在响应一个特定中断的时候,内核会执行一个函数,该函数叫中断处理程序
每个链接到计算机上的IO设备都需要某些设备特定代码进行控制,称之为设备驱动程序 可重入性
-
与设备无关的IO软件的功能
- 设备驱动程序的统一接口
- 缓冲
- 错误报告
- 分配与释放专用设备
- 提供与设备无关的块大小
- 盘面(Platter):一个磁盘有多个盘面
- 磁道(Track):盘面上的圆形带状区域,一个盘面可以有多个磁道
- 扇区(Track Sector):磁道上的一个弧段,一个磁道可以有多个扇区,它是最小的物理储存单位,目前主要有 512 bytes 与 4 K 两种大小
- 磁头(Head):与盘面非常接近,能够将盘面上的磁场转换为电信号(读),或者将电信号转换为盘面的磁场(写)
- 制动手臂(Actuator arm):用于在磁道之间移动磁头
- 主轴(Spindle):使整个盘面转动
- 磁盘 RAID
- 磁盘格式化 低级格式化 分区 高级格式化
旋转时间:主轴转动盘面,使得磁头移动到适当的扇区上 寻道时间:制动手臂移动,使得磁头移动到适当的磁道上 数据传输时间
- 先来先服务算法
- 按照磁盘请求的顺序进行调度
- 公平简单,但是没有对寻道做任何优化,平均寻道时间较长
- 最短寻道优先
- 优先调度距距离磁头最近的磁道
- 不够公平,如果一个请求距离当前磁头比较远,会出现饥饿现象
- 电梯算法
- 总是保持一个方向运行,直到该方向没有请求为止,然后改变运行方向
- 稳定写
- 稳定读
- 崩溃恢复
- 一次完成模式
- 方波模式
- 维护日时间
- 防止进程超时运行
- 对CPU使用情况进行记账
- 处理alarm系统调用
- 为系统各部分提供监视定时器
- 完成信息收集
-
键盘软件
- 原始模式
- 加工模式
-
鼠标软件
$\Delta$x $\Delta$y 按钮
- 文本窗口
- X窗口系统
- 图形用户界面
- 位图
- 字体
- 触摸屏
-
硬件问题
-
操作系统问题
- 显示器
- 硬盘
- CPU
- 内存
- 无线通信
- 热量管理
- 电源管理
- 驱动程序接口
-
应用程序问题