1 / 18

多工與中斷機制

多工與中斷機制. 陳鍾誠 200 6 年 8 月 29 日. 從 Java 到 組合語言. int sum = 0; for (int i=0; i<10; i++) sum = sum + i;. WORD sum 0 WORD i 0 LOAD R1, sum LOAD R2, i LOOP COMP R2, 10 JGT EXIT INC R2 ADD R1, R2, R1 JMP LOOP EXIT STORE sum, R1 STORE i, R2. 機器指令 ( 整合範例 – 組譯 ). 組合語言.

brent
Télécharger la présentation

多工與中斷機制

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 多工與中斷機制 陳鍾誠 2006年8月29日

  2. 從 Java 到 組合語言 int sum = 0; for (int i=0; i<10; i++) sum = sum + i; WORD sum 0 WORD i 0 LOAD R1, sum LOAD R2, i LOOP COMP R2, 10 JGT EXIT INC R2 ADD R1, R2, R1 JMP LOOP EXIT STORE sum, R1 STORE i, R2

  3. 機器指令 (整合範例 – 組譯) 組合語言 位址 機器語言 00 00 00 04 00 08 00 0C 00 10 00 14 00 18 00 1C 00 20 00 24 00 28 00 2C 00 30 LOAD R1, sum LOAD R2, i LOOP COMP R2, TEN JGT EXIT INC R2 ADD R1, R2, R1 JMP LOOP EXIT STORE R1, sum STORE R2, i RETURN WORD sum 0 WORD i 0 WORD TEN 10 01 01 00 28 01 02 00 2C 04 02 00 30 0A 00 00 1C 1C 02 00 00 03 01 02 01 09 00 00 08 02 01 00 28 02 02 00 2C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A

  4. 從 Java 到 組合語言 System.in.read(); WORD INDEV 1 LOOP TD INDEV JEQ LOOP RD INDEV STCH DATA

  5. 從 Java 到 組合語言 byte b = (byte) System.in.read(); char c = (char) b; int n = c-'0'; for (int i=1; i<=n; i++) System.out.println(i); BYTE b 0 SHORT c 0 WORD n 0 WORD i 1 WORD INDEV 1 WORD OUTDEV RD R1, INDEV STORE R1, n LOAD R2, i LOOP COMP R2, n WD R2, OUTDEV JGT EXIT INC R2 JMP LOOP EXIT WRITE

  6. 讀取迴圈 Polling – 一直等到鍵盤輸入為止 READ => 21 R2 => 02 Keyboard => 00 02 LOOP TD INDEV JEQ LOOP READ R2, Keyboard ALU (加法器…) 暫存器 暫存器 R1 = 00000041 R1 輸出埠 R2 輸入埠 R2 = 01 0A 00 01 02 03 04 00 01 02 03 04 Control Unit (控製單元) IR =21 02 00 02 PC PC 00000041 註:41 是‘A’的 ASCII 碼

  7. 兩個程式以上…, 不管用 READ => 21 R2 => 02 Keyboard => 00 02 LOOP TD INDEV JEQ LOOP READ R2, Keyboard Busy Waiting 會一直等到有輸入值,此時其他程式無法用鍵盤 ALU (加法器…) 暫存器 暫存器 R1 = 00000041 R1 輸出埠 R2 輸入埠 R2 = 01 0A 00 01 02 03 04 00 01 02 03 04 Control Unit (控製單元) IR =21 02 00 02 PC PC 00000041

  8. 以下範例就是兩個以上的程式

  9. 目前電腦的真實情況… • 上網同時印表,此時另一個命令列正在等待輸入 • 甚至有人在這台電腦上灌了 WebServer, FTP Server, Mail Server 還要提供程式給網路芳鄰使用。

  10. 如何做到… • 不要使用 busy waiting 迴圈。 • 改成使用中斷(插斷 : Interrupt) 機制。 • 當有人敲鍵盤時,產生中斷 • 當網路有資料進來時,產生中斷

  11. 何謂中斷機制? Call READ INDEV LOOP TD INDEV JEQ LOOP READ R2, Keyboard 不會 Busy Waiting 中斷後換其他程式執行, 直到鍵盤有輸入時,系統會回到這個地方,繼續執行下一行 Busy Waiting 會一直等到有輸入值,此時其他程式無法用鍵盤 ALU (加法器…) 暫存器 暫存器 R1 = 00000041 R1 輸出埠 R2 輸入埠 R2 = 01 0A 00 01 02 03 04 00 01 02 03 04 Control Unit (控製單元) IR =21 02 00 02 PC PC 00000041

  12. 中斷機制的原理 Call READ INDEV 1. 必須靠硬體配合 2. 輸出入裝置取得資料後會產生中斷 3. 中斷造成 CPU 跳到特定的程式 (稱為中斷程式) 去執行,執行完後再將控制權交還給應用程式。 控制卡 ALU (加法器…) 暫存器 暫存器 中斷 (好了、可以來取了) R1 = 00000041 R1 R2 Memory 輸入埠 R2 = 01 0A 中斷處理程式 00 01 02 03 04 Control Unit (控製單元) IR =21 02 00 02 PC PC 00000041 應用程式

  13. 加入中斷機制後… • 電腦可以同時執行許多個程式。 • FTP 伺服器、網站 • 開很多視窗 • 一邊編寫程式一邊聽音樂…

  14. 但是… • 這一切都還沒實現,因為: • 缺少了作業系統 • 每個程式應該載入到哪裡執行呢 ? • 如果讓各個程式自行決定,程式的範圍重疊時就無法正確執行了。 • 哪個程式先執行,哪個程式後執行? • 中斷後應該交由哪個程式執行? • 每個人都要寫一個磁碟控制程式嗎? • 如果如此、你在程式設計時只會看到硬碟、磁軌、讀寫頭的位置,不會看到檔案系統 (因為、檔案不是一個裝置、硬碟才是)

  15. 作業系統的功能 • 行程管理 (Process Management) • 記憶體管理 (Main Memory Management) • 檔案管理 (File System) • 輸出入(I/O)系統管理 (IO System) • 輔助記憶體管理 (Secondary-Storage) • 安全性與保護 (Protection) • 命令解釋與執行 (Command Interpreter)

  16. 假如沒有作業系統 • 各位可以試試看,把作業系統移除後嘗試使用電腦。 • 開機完後就當了 • 你必須先寫一個啟動程式,翻成機器碼,然後存到硬碟的啟動區域 (怎麼存???) • 所以要改用光碟開機,先寫一個光碟啟動程式,然後燒到光碟當中,由光碟開機後,再把硬碟啟動程式寫到硬碟中。 • 這就是各位安裝 Windows , Linux 時所做的工作。

  17. 啟動程式的功能 • 設定所有中斷程式的位 址 (稱為中斷向量) • 載入所有預設的中斷程式 • 將作業系統主程式的資料堆疊,程式堆疊,堆積等結構配置好。 • 開始執行作業系統的主程式。

  18. 進階課程 • 計算機結構 – 電子系 • FPGA – 電子系 • 單晶片控制實習 – 電子系 • 嵌入式系統設計 (目前本校沒開,以後可能會開在電資所)

More Related