IT铁人
所谓的I/O装置,就是input/output的装置,负责输出跟输入资料,比如说键盘跟萤幕,或是网路等等的装置,有时候我们需要通知这些装置做事,就有几个方法可以实行,分别是polling I/O, Interrupted I/O以及DMA,前两者的前面六个步骤都相同,依序是下列六步:
No. | Action |
---|---|
1 | User process发出I/O request给OS |
2 | OS收到请求,可能暂停此process执行,并执行相对应的system calls。 |
3 | kernel的I/O-subsystem会pass此请求给Device driver。 |
4 | Device driver依此请求设定对应的I/O commands参数给Device Controller。 |
5 | Device Controller启动,监督I/O-Device之I/O运作进行。 |
6 | 在此时,OS可能将CPU切给另外一个process执行。 |
後面依序介绍三种I/O处理方式,三种的差别在於I/O动作结束之後怎麽告知OS,让自己取得I/O结果。
Polling I/O称为询问式I/O,CPU在执行其他Process的过程时要不断去pollling Device Controller确认I/O动作是否完成。
通常实作的方式会使用几个bit,负责表示I/O动作完成或是出现错误,CPU每次只要检查这几个bit就好,处理完成後再把这些bit重设。
Polling I/O因为需要花大量的时间去polling Device Controller上,花在process execution的时间就相对被压缩,所以适合用在Device执行很快的情况,如此一来才不会有一堆需要询问的Device占用CPU时间。
Interrupted I/O的做法是在I/O动作完成後,发出一个I/O Completed的Interrupt通知OS,CPU再花时间来寻找是哪个I/O完成并且处理之。
Interrupt的好处是不用一直花时间polling,能够提升CPU utilization。不过要是I/O Device的处理方式很快,则会一直被interrupt,所以适合用在I/O Device有一定处理时间的装置。
DMA I/O的全名为Direct Memory Access,他的做法是把I/O的处理交给另一个硬体,让他直接存取记忆体以便他直接把处理好的结果放在该放的位置。
DMA I/O的好处是可以很大幅度的提高CPU utilization。缺点是需要另外设计一个硬体处理I/O,并且DMA I/O还是会跟CPU抢Memory的使用权。
其实我们可以把这个假设成工作中途煮开水:
上一篇 | 下一篇 |
---|---|
OS初体验 | Kernel Mode |
<<: Day 14:AWS是什麽?30天从动漫/影视作品看AWS服务应用 -《云端情人》part1
>>: Day 14 - UML x Interface — Portal
最近我们在思考怎麽在我们的 App 里加入货币系统。 参考了前辈跟《货币未来》这本书,颇受启发 直播...
今天再来试玩一个 Try Hack Me 上面的简单题目,攻打一个 CMS (Content Man...
前言 本系列文章的开头,我们要先来了解一下物联网 (Internet of Things, IoT)...
改善软件操作介面 金融业提供给外部用户的 App 通常具备易用、防呆、多次确认的程序,但内部的商用软...
30天完赛心得 今年是第一次参赛,在八月初的时候开始查资料跟写草稿,等於提前了一个多月准备,时间上其...