I/O方式大题
一 程序查询流程
-
程序运行
scanf代码,此时发生系统调用,操作系统等待来自键盘的字符 -
程序查询方式不断轮询查看是否有字符输入(注意:不会一直占用处理机导致系统死机,参考并发概念,仅在分配的时间片内轮询)
-
通过键盘设备经过usb向I/O接口输入字符,(此处出现数据的输入输出速率),输入的字符会被放入缓冲区(题目会告知缓冲区大小)
-
cpu应当取走缓冲区内的数据去进行处理
cpu不应当取的太慢,这是由于缓冲区的大小是有限的,如果太慢会导致还没取出的数据被新传输的数据所覆盖。
但也不该太快,所以最好是缓冲区刚满,cpu就取出缓冲区内的数据
综上可知,cpu轮询的频率(cpu定时查询的频率) = 输入输出数据的速率/缓冲区大小
-
若题目给出输入输出至少执行x条指令,那么便可以得到
传输满一次缓冲区所需要的时间 = 缓冲区大小/输入输出数据的速率 = cpu轮询频率的倒数
每秒查询次数 = 1s/传输满一次缓冲区所需要的时间
设备输入输出的时间占cpu总时间的百分比 =(CPI * x * 每秒查询次数)/ 计算机主频
注意:输入输出速率是设备和缓冲区之间的,而轮询频率是cpu和缓冲区之间的。
二 中断I/O流程
-
设备向I/O接口输入数据(此处题目一般会给出数据输入输出速率)
-
同样当数据充满缓冲区时,此时中断源向cpu发出中断请求告知cpu缓冲区已经满了,需要它来处理

本文详细介绍了三种I/O处理方式:程序查询、中断和DMA。程序查询方式中,CPU定时查询缓冲区数据;中断方式下,设备在缓冲区满时通知CPU;DMA方式则允许设备直接与内存交换数据,减少CPU干预。通过计算中断频率、DMA中断开销等,可以分析I/O对CPU时间的影响。
最低0.47元/天 解锁文章
620

被折叠的 条评论
为什么被折叠?



