/**
* TODO 《操作系统原理》 记录(26)
* @高速缓存
* @IO子系统
* #文件和目录空间的命名管理
* #文件和目录的访问控制
* #操作控制————调制解调器不能使用SEEK
* 如果跳过则不能完成统一标准适配
* #文件系统空间分配
* #设备分配 ---
* #缓冲、高速缓存、假脱机
* #I/o调度---
* #设备状态监控、错误处理、异常处理
* #设备驱动程序的配置和初始化
* 比如文件系统的初始化
*
* --- 通过设备驱动程序提供的统一抽象接口进行通信
*
* @I/O操作转化硬件操作
* @装配表
* 路径名称的前缀和具体的设备进行映射
* 不需要重新编译内核就可以引入新的设备和新的驱动程序的内核支持
* 但是主要还是需要驱动程序和内核的适配通用标准
*
* @IO操作的具体步骤————生命周期
* 1、一个进程对已经打开的文件描述符调用阻塞read系统调用
*
* 2、内核系统调用代码检查参数是否正确
* 对于输入、如果数据已经在缓冲区则返回给进程然后完成IO调用
*
* 3、否则需要继续执行物理IO请求
* 此时该进程会从设备运行的队列中移到等待队列、开始调度IO请求
* 最后IO子系统对设备驱动程序发起请求
* 根据操作系统的不同
* 该请求可能通过子程序调用或者内核消息传递
*
* 4、调用驱动程序分配内核缓冲空间已接收数据
* 调度I/O
* 最后设备驱动程序通过写入设备控制器寄存器来对设备控制器发送指令
*
* 5、设备控制器控制设备硬件以执行数据传输
*
* 6、驱动程序可以自旋检测状态和数据、或者通过设置DMA将数据传输到内核内存
* 假定DMA控制器管理数据传输
* 当传输完成后会产生中断
*
* 7、合适的中断处理程序会通过中断向量表来收到中断
* 保存必要的数据。通知内核设备驱动程序、从中断返回。
*
* 8、设备驱动程序接收到信号
* 确定IO请求是否执行完成
* 确定请求状态
* 并通知内核子系统IO请求已经完成
*
* 9、内核将数据或返回代码传递给请求进程的地址空间
* 将进程从等待队列移动到就绪队列
*
* 10、将进程移动到运行队列使其不被阻塞
* 当调度给该进程分配CPU时
* 该进程就继续在系统调用之后继续运行
*
* --------------------------------------------------------------------
*/
《操作系统原理》 记录(26)
最新推荐文章于 2022-07-03 09:42:13 发布