Interrupt, DMA, Dual Mode

  • 0
完整內容請參考 http://www.csie.ntnu.edu.tw/~swanky/os/chap2.htm

Interrupt I/O
    1. I/O
    2. 完成時,I/O device controller發出"I/O complete" interrupt通知OS
    3. OS會暫停目前process(PA)的執行,並保存其執行狀況
    4. OS根據interrupt ID,查詢interrupt vector(table),取出對應的Interrupt Service Routine(ISR)的起始位址
    5. Jump to ISRinitial address, CPU執行ISR(routine的內容,將buffer register中的資料傳送到memory)
    6. ISR完成後,OS通知PAI/O request完成,且將PAstatewait改回ready
    7. (可能)繼續原先Process(PA)的執行
    優點:避免CPU耗費大量時間於polling I/O status上,故CPU可全力用在process之執行
    缺點:CPU仍要參與在I/O device與記憶體之間的資料傳輸過程
    Interrupt 討論
    1. monitor area內會存放interrupt vector及各種ISR
    2. Interrupt的種類:1. External interrupt(HW) : CPU以外的周邊元件所發出的
                  eg. I/O completeI/O errormachine check          2. Internal interrupt(HW) : CPU本身所引發的
                  eg. stack overflowillegal command(非法指令執行)divided by zero(除以0)...          3. Software interrupt : user program執行時,若需要OS提供服務,則發出此類中  斷通知OS執行對應的service routine
                  eg. system calltrap
    1. InterruptTrap之比較1. InterruptHardware generated interrupt2. eg. I/O device發出"I/O complete"中斷3. TrapSoftware generated interrupt
                  用途:
    1. user program需要OS提供Service時發出
    2. Catch up arithematic error
      eg. Divide-by-Zero
      ex.P3-42, Q32
    DMA(Direct Memory Access)
    Defcontroller負責I/O DeviceMemory之間的資料傳輸,其過程完全不需CPU參與,CPU就有更多時間用在process執行


Dual Mode
  1. Def系統運作的狀態主要分為兩種模式(1) Monitor mode(又稱supervisor mode, system mode)     在此mode下,主要是OSsystem processes在執行(OSsystem process執行的狀態,在此mode下,OS掌控系統的控制權)
                   (eg. ISR, systemcall, 對應的service routine)  在此mode下才有權執行特權指令(priveleged instruction)                   (2) User mode (user program可以執行的狀態)
                        在此mode之下,不能執行特權指令!否則會產生致命錯誤中斷(trap)OS會強迫process中止
  1. Dual mode的區分主要是靠Hardware支援,主要是由mode bit區分,通常 "0" monitor mode ,  "1" user mode
  1. 實施Dual mode的目的:
    對Hardware重要的resources實施protection,把可能引起危害的一些機器指令,設為priveleged instruction,如此可防止user program直接使用這些指令,避免user program執行這些指令對系統或其它user造成危害(∵user mode下無法執行特權指令)

沒有留言 :

張貼留言