Day-17 I/O运作

I/O运作

tags: IT铁人

I/O装置

所谓的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

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时间。

Interrputed I/O

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

DMA I/O的全名为Direct Memory Access,他的做法是把I/O的处理交给另一个硬体,让他直接存取记忆体以便他直接把处理好的结果放在该放的位置。

DMA I/O的好处是可以很大幅度的提高CPU utilization。缺点是需要另外设计一个硬体处理I/O,并且DMA I/O还是会跟CPU抢Memory的使用权。

白话说明I/O种类

其实我们可以把这个假设成工作中途煮开水:

  • Polling I/O就是时不时过去看看水滚了没。
  • Interrupted I/O就是水开了之後会发出高频率的叫声,像是以前的水壶会装上一个通知水滚的尖嘴。
  • DMA I/O就是雇用了一个佣人帮忙煮开水,好了就拿过来主人的身边。
上一篇 下一篇
OS初体验 Kernel Mode


<<:  Day 14:AWS是什麽?30天从动漫/影视作品看AWS服务应用 -《云端情人》part1

>>:  Day 14 - UML x Interface — Portal

App 内的货币系统

最近我们在思考怎麽在我们的 App 里加入货币系统。 参考了前辈跟《货币未来》这本书,颇受启发 直播...

[Day8] THM Bolt

今天再来试玩一个 Try Hack Me 上面的简单题目,攻打一个 CMS (Content Man...

[Day1] 创客与物联网(Maker & IoT)

前言 本系列文章的开头,我们要先来了解一下物联网 (Internet of Things, IoT)...

友善的用户操作介面可降低人为操作问题发生率

改善软件操作介面 金融业提供给外部用户的 App 通常具备易用、防呆、多次确认的程序,但内部的商用软...

[Day30] 完赛心得

30天完赛心得 今年是第一次参赛,在八月初的时候开始查资料跟写草稿,等於提前了一个多月准备,时间上其...