OSD_L4_note
L4 Interrupt & I/O
寫driver要知道那個硬體的spec
會佔mem的值/不佔mem的值
- driver: 能跟IO裝置溝通的程式
- NIC: 像是網卡
- Memory某個區段是map給IO的,就寫到那個位置就其實是在做IO
- 用網路收檔案舉例,我們希望是網卡把檔案收完檢查完,再interrupt CPU
- 給processor的interrupt是PIC給的
- ==IRQ-> interrupt controller==
- mask: 蓋掉,ignore。阿就是mask
- interrupt會有priority之分,高的先做
- OS會對device driver分類
- 要去做open/read/write/close之類的動作
- device driver要做的
- 註冊(tty, usb……)
- implement API
- 寫driver要知道OS提供什麼框架還有硬體提供啥東西給你
L4 discuss
IO device 的response time.
- 裝置有快有慢,都等慢的人的話就會被block住
- 例如,現在只有GPU可以跟CPU接,mouse之類的其他的IO bus就不會直接和CPU接
X86會分memory bus和IO bus是因為上古世紀,memory很珍貴,再拿一點去給IO很浪費。arm arthitecture就不用再額外開IO bus了
以前 IO device在bus上的位置都是固定的,現在就是dynamic的,就會有一個地方記錄他們所在的位置
- 裝置裝上之後,就會去搶位置這樣
software interrupt & hardware interrupt
- Exception(software)
- 是一道指令
- 目前可以做到直接請CPU去vector table找特定的值,去執行程式(這之間沒有signal, 不像hardware interrupt)
- Hardware interrupt
- 是一個hardware訊號
- Exception(software)