Computer-System Organization


系統開機或重新開機 :

1 . Bootstrap Program :
  • Bootstrap Program 存在 ROM 或者 firmware(韌體)中

  • 他會起始系統所有現象 例如: CPU register.....

2 . Bootstrap Program 找到OS kernel,並載入 Memory
3 . Kernel 開始執行,等待事件發生

軟、硬體與OS溝通 :

  • Interrupt:

一件事件發生後,OS 會接收硬體發出來的 Interrupt

  • Cmd (command)

OS也可以下一些command 給硬體做一些動作

  • System call

OS 與 應用程式 的溝通介面 , OS接到應用軟體的system call ,會通知硬體作業些事情

  • Signal

OS用signal告訴應用程式哪些事情已經發生了

OS Operations :

A . AP2 送出 system call 給 OS 告訴 OS 他需要讀取資料

B. OS收到後傳送 CMD (1) 給硬體,較硬碟讀取資料

C. 為了不讓CPU閒著,做context switch 給 AP1,因此CPU做AP1 ,同時,硬碟做AP2

D. 硬體讀取完後,放到Buffer (2),硬體透過DMA把資料傳送到Memory裡面 (3)

E. 資料搬完後,硬碟傳送 interrupt 給 OS ,表示完成任務(4)

F. OS收到後把AP2設成ready,OS就會選擇比較重要的程式執行

Common Functions of Interrupts

Interrupt Vector Table:

  • 儲存在memory裡面,OS 初始化會產生這個table

  • 這個 table 就是一個 array of pointer ,這些pointer指向 interrupt service routine (ISR)

  • 每個陣列的 index 都是裝置號碼

  • 處理中斷時,要disable所有的interrupt,因為沒有這樣做程式會非常難寫

  • 要把CPU中斷之前的狀態完整的存下來

EX:第2號中斷....

Step 1: 用IDTER找出Interrupt Vector Table 起始點,並往下數找到2號

Step 2: 要執行2號時,電腦系統會disable所有的interrupt

Step 3: 軟體硬體合作將CPU的狀態儲存起來

Step 4: 執行 ISR,CPU 把控制權直接跳到pointer指的地方

Step 5: 執行完後控制權再給OS

Q : Interrupt Vector Table 空間有限 ,但硬體卻很多怎辦 ?

Ans : use vectored interrupt + polling

可能好幾個device共用

results matching ""

    No results matching ""