阅读背景:

操作系统概念读书笔记

来源:互联网 

1IO子系统屏蔽了不同io设备的差异。

2 IO过程图,一个IO过程也是要消耗很多的cpu时间的。



 

用户进程对已打开文件的文件描述符调用阻塞read系统调用。 内核系统调用代码检查参数的正确性。对于输入,如果数据已经在高速缓存中,那么直接返回数据给用户进程,并完成io请求。 否则就执行物理的io请求。该进程也会从运行队列转移到设备的等待队列,并调度io请求。io子系统会向设备驱动程序发起io请求。 设备驱动程序会开辟内存空间已接收数据,并调度io。最后,设备驱动程序通过写入设备控制器的寄存器来对设备控制器发起命令。 设备控制器控制设备硬件以执行数据传输。 驱动程序轮询检查状态和数据,或设置DMA将数据传到内核内存。假定DMA控制器管理传输,当传输完成后产生中断。 合适的中断处理程序通过中断向量表收到中断,保存必要数据,并向内核设备驱动程序发送通知,然后从中断返回。 设备驱动程序接收到信号,确定io请求是否已完成,确定请求状态,并向内核io子系统发送信号,通知请求已完成。 内核将数据或者返回代码传递给发送请求的进程的地址空间,将进程从等待队列移到就绪队列。 移到就绪队列后,进程不再阻塞。当调度器给进程分配cpu时,该进程就可以在系统调用后完成后续的操作


你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: