操作系統課件:ch2-2-操作系統結構(Artechature)_第1頁
操作系統課件:ch2-2-操作系統結構(Artechature)_第2頁
操作系統課件:ch2-2-操作系統結構(Artechature)_第3頁
操作系統課件:ch2-2-操作系統結構(Artechature)_第4頁
操作系統課件:ch2-2-操作系統結構(Artechature)_第5頁
已閱讀5頁,還剩52頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第二章 操作系統結構(Artechature)本章教學目標主要討論操作系統對運行軟件、硬件環境的要求:操作系統運行的 硬件環境系統調用存儲系統的層次結構中斷機制特權指令和非特權指令目態、管態及其轉換內容回顧陷阱指令當編程人員給定了系統調用名和參數之后,由一個類似于硬件中斷處理的中斷處理機構完成陷入處理機構。它是在系統中為控制系統調用服務的機構。當用戶使用系統調用時,產生一條相應的指令(陷入指令,trap指令),CPU在執行到該指令時發生相應的中斷,發出有關信號給該處理機構,并啟動相應的處理程序來完成該系統調用所要求的功能。陷入指令(或稱訪管指令):由于系統調用引起處理機中斷的指令在陷入中斷發生

2、時,從用戶態系統態。這一轉換在發生訪管中斷時由硬件自動實現。如何實現陷入?操作系統結構2.1中斷機制?2.2中斷的實現原理2.3特權指令和非特權指令2.4目態、管態及其轉換中斷:CPU對系統中或系統外發生的某個事件作出的一種反應;如外部設備完成數據傳輸,實時設備出現異常等。引入中斷的目的:中斷機制是操作系統得以正常工作的最重要的手段,有人把操作系統稱為是由“中斷驅動”或者 “(中斷)事件驅動”。它可以解決:主機與外設的并行工作問題提高可靠性實現實時控制中斷是實現多道程序的必要條件中斷源:引起中斷發生的事件。中斷中斷機制中斷系統組成:硬件中斷裝置和軟件中斷處理程序硬件中斷裝置:負責捕獲中斷源發出

3、的中斷請求,以一定方式響應中斷源,然后將處理器控制權交給特定的中斷處理程序(發現問題)軟件中斷處理程序:中斷系統的策略部分。負責辨別中斷類型并做出相應的操作。(解決問題)中斷中斷系統組成程序中斷: 一般由指令執行的結果產生,例如算術溢出、除數為0,執行非法指令,非法內存訪問。時鐘中斷:由處理器內部的計時器產生,允許操作系統以一定的規律執行。I/O中斷:由I/O控制器產生,用于發信號通知一個操作的正常完成或各種錯誤條件。硬件失效中斷:掉電、存儲器奇偶錯等的故障產生。訪管中斷:每當CPU執行訪管指令或陷入指令時,即引起中斷,并調用操作系統相應的功能模塊為其服務。中斷中斷源的分類中斷中斷源的分類強迫

4、性中斷事件:強迫性中斷事件不是正在運行的程序所期待的,而是由于某種事故或外部請求信息所引起的,分為:機器故障中斷事件;程序性中斷事件;外部中斷事件;輸入輸出中斷事件;自愿性中斷事件:自愿性中斷事件是正在運行的程序所期待的事件。中斷(外中斷)異常(內中斷)例外I/O中斷時鐘中斷系統調用缺頁異常斷點指令其他程序性異常(如算術溢出等)廣義中斷中斷中斷的分類操作系統結構1.1中斷機制?1.2中斷的實現原理1.3特權指令和非特權指令1.4目態、管態及其轉換中斷的實現原理如何發現中斷信號?中斷周期如何處理各類中斷?中斷向量表如何管理不同級別的中斷? 中斷優先級如何屏蔽各類中斷?中斷屏蔽中斷技術中斷周期(如

5、何發現)處理器如何發現中斷信號? 處理器的控制部件中設一個能檢測中斷的機構,稱為中斷掃描機構。為適應存在中斷的情況,在指令周期中要增加一個中斷周期,處理器檢查是否有中斷發生:有:處理器掛起當前程序的執行,并執行一個中斷處理程序;當中斷處理程序完成后,處理器在中斷點恢復對用戶程序的執行。沒有:則取下一條執行繼續執行。中斷向量表(IDT):一個存放中斷處理程序入口地址和程序運行所需處理機狀態字的內存單元。中斷向量:每個中斷都有一個向量號,該值是中斷在IDT中的索引(本質上為邏輯地址)。每個中斷均有其相應的處理程序,中斷在使用前必須在IDT中注冊信息,以保證發生中斷時能找到相應的處理程序;發出中斷請

6、求的設備為了標識自己,向CPU發送一個該設備在IDT中表目的索引,通過此索引值找到中斷處理程序中斷技術中斷向量表 (如何處理)中斷技術中斷優先級 (如何管理)原因:由于可能有很多中斷源請求同時發生,通過中斷優先級加以判定響應哪個中斷請求。中斷優先級:表示中斷的優先程度,如:高、低優先級中斷同時到時先響應高級中斷;高級中斷可以打斷低級中斷處理程序的運行,同級中斷同時到時,則按順序響應。中斷優先級設計原則:一般來說,高速設備的中斷優先級高,慢速設備的中斷優先級低。因為高速設備的中斷被CPU優先響應時,可以讓處理機盡快地向它發出下一個I/O請求,提高高速設備的利用率 機器故障中斷 程序中斷和訪管中斷

7、外部中斷I/O中斷多級中斷的處理多級中斷系統,可以有多個中斷請求從不同設備向中斷處理機構發出請求,即中斷處理過程中又發生中斷: 1)順序處理:正在響應一個中斷時禁止響應其它中斷,對任何新中斷置之不理在任何中斷處理前使用禁止中斷指令;在處理結束后開放中斷指令;所有中斷嚴格按照發生順序處理;不考慮中斷緊急程度,無法達到較嚴格時間要求; 2)嵌套中斷處理:允許嵌套處理,即允許高優先級的中斷引發低優先級的中斷處理程序自身的中斷。 只要合適地定義中斷的優先級別。方法1的弊端大都可以克服。順序處理嵌套處理中斷屏蔽:指禁止CPU響應中斷。方法是在PSW中設置中斷屏蔽碼以屏蔽某些指定的中斷類型如果其PSW的中

8、斷禁止位置位后,則屏蔽中斷(不包括不可屏蔽的那些中斷)如果PSW中的中斷禁止位未置位:則可以接受其中斷優先級高于運行程序中斷優先級的那些中斷可屏蔽的中斷請求:主要是I/O設備的中斷, 通過建立在PSW中的中斷屏蔽位加以屏蔽,即使再有I/O中斷,處理器也不響應;不可屏蔽的中斷請求:屬于機器故障中斷,包括內存奇偶校驗錯、掉電等中斷源中斷技術中斷屏蔽中斷處理過程-開始串糖葫蘆保存現場轉中斷處理程序恢復現場中斷處理過程-1保存現場 轉中斷處理程序 恢復現場典型的處理過程:(1)設備給CPU發一個中斷信號(2)CPU處理完當前指令后響應中斷(要求CPU未關中斷),或 CPU處理完當前指令后檢測到中斷,判

9、斷出中斷來源并向發送中斷的設備發送了確認中斷信號,確認信號使得該設備將中斷信號恢復到一般狀態(3)CPU開始為軟件處理中斷做準備:保存上下文:程序狀態字PSW、程序計數器PC中的下一條指令位置,一些寄存器的值;處理器狀態被切換到管態典型的處理過程(續):(4)CPU根據中斷源查詢中斷向量表,獲得與該中斷相聯系的處理程序入口地址,并將PC置成該地址,CPU開始一個新的指令周期,控制轉移到中斷處理程序(5)中斷處理程序開始工作,包括檢查I/O相關的狀態信息,操縱I/O設備或者在設備和主存之間傳送數據等等(6)中斷處理結束時,CPU檢測到中斷返回指令,恢復上下文,包括PSW和PC被恢復成中斷前的值,

10、處理器開始一個新的指令周期,中斷處理結束中斷處理過程-2簡單的中斷處理過程操作系統結構1.1中斷機制?1.2中斷的實現原理1.3特權指令和非特權指令1.4目態、管態及其轉換特權指令:只能由操作系統程序使用的指令,如啟動I/O設備、設置時鐘、控制中斷屏蔽位、清內存、加載PSW等(能引起損害的機器指令)。非特權指令:用戶程序系統所使用的指令。為甚么要區分指令的級別?使用多道程序設計技術的計算機指令系統必須要區分為特權指令和非特權指令特權指令一般引起處理器狀態的切換,處理器通過特殊的機制將處理器狀態切換到操作系統運行的特權狀態(管態)特權指令和非特權指令操作系統結構1.1中斷機制?1.2中斷的實現原

11、理1.3特權指令和非特權指令1.4目態、管態及其轉換處理器的狀態-目態和管態原因:多道程序系統中,由于采用共享,一個程序中的錯誤有可能惡意地影響多個程序,甚至OS程序本身。 根據運行程序對資源和機器指令的使用權限將處理器設置為不同狀態一般將處理器工作狀態劃分為管態和目態 實現中,處理器將CPU狀態劃分為更細的狀態,兩種、三種或四種處理器的狀態: 目態和管態雙重操作模式:為了確保OS和所有其它程序和數據不受任何故障程序影響,CPU至少需要兩重獨立的操作模式:系統模式(特權狀態、系統態、管態):操作系統管理程序運行時的狀態,較高的特權級別。當CPU處于系統模式時,程序可以執行特權指令,訪問所有資源

12、,并可以改變處理器狀態。用戶模式(用戶態、目態、常態):用戶程序運行時的狀態,較低的特權級別。當CPU處于用戶狀態時,程序只能執行非特權指令。如MSDOS沒有雙重模式,因而錯誤用戶程序可以會清除整個操作系統,造成災難性后果。目態 管態(用戶態系統態)唯一途徑 : 通過系統調用管態目態(系統態用戶態) 途徑 :設置PSW(修改程序狀態字)CPU狀態的轉換的實現一條特殊的指令:訪管指令 供用戶調用操作系統的功能(服務)INT,TRAP,SYSCALL程序狀態字PSW (Program Status Word )問題: CPU如何知道當前運行的是操作系統還是一般應用軟件? 根據PSW中的標識進行判斷

13、。在PSW中專門設置一位,根據運行程序使用指令的權限而設置CPU狀態PSW:寄存CPU運行狀態的寄存器。在PSW中專門設置一位,根據運行程序使用指令的權限而設置,用來說明當前在CPU上執行的是操作系統還是一般用戶,從而決定其是否可以使用特權指令或擁有其它的特殊權力CF: 進位標志位 ZF: 結果為零標志位 SF: 符號標志位OF: 溢出標志位標準條件位: TF:陷阱標志位IF:中斷允許(中斷屏蔽)標志位VIF:虛擬中斷標志位VIP:虛擬中斷待決標志位IOPL:IO特權級別 例:微處理器Pentium的FLAGS和描述符處理器處于系統模式(管態)時:全部指令(包括特權指令)可以執行可使用所有資源

14、并具有改變處理器狀態的能力處理器處于用戶模式(目態)時:只有非特權指令能執行特權級別越高,可以運行指令集合越大高特權級別對應的可運行指令集合包含低特權級的實例:x86系列處理器(1/2)386、486、Pentium系列都支持4個處理器特權級別(特權環:R0、R1、R2和R3)從R0到R3特權能力依次降低R0相當于雙狀態系統的管態R3相當于目態R1和R2則介于兩者之間,它們能夠運行的指令集合具有包含關系:各個級別有保護性檢查(地址校驗、I/O限制)特權級別之間的轉換方式相似四個級別運行不同類別的程序:R0-運行操作系統核心代碼R1-運行關鍵設備驅動程序和I/O處理例程R2-運行其他受保護共享代

15、碼,如語言系統運行環境R3-運行各種用戶程序 現有基于x86處理器的操作系統,多數UNIX、Linux以及Windows系列大都只用了R0和R3兩個特權級別實例:x86系列處理器(2/2)Linux中斷代碼分析-供感興趣的同學中斷向量表在哪里?如何保護現場?如何轉到中斷處理程序?如何返回中斷?注意:部分內容來自網絡!(見附錄)總結中斷的概念中斷的實現原理作業對所有同學:P.63 習題2.3,2.11p.32 習題1.10,1.12對OS感興趣的同學:下載linux0.11代碼,用Source Insight 閱讀在參考書輔助的情況下,閱讀OS啟動過程的代碼,注意中斷的調用過程打開電源了中斷向量

16、表在哪里BIOS 完成的主要任務:1.檢查RAM,鍵盤,顯示器,軟硬磁盤;2. 還沒有任何軟件,只能是硬件決定起點!看看x86 PC開機時,CS=0 xFFFF; IP=0 x0000 x86 PC剛開機時CPU處于實模式尋址0 xFFFF0(ROM BIOS映射區)中斷向量表BIOS數據區中斷服務程序0 x00000 0 x0FFFE實模式的尋址CS:IP(CS左移4位+IP)38linux中斷處理不管引起中斷的設備是什么,所有的中斷處理程序都執行四個相同的基本操作1,在內核態堆棧保存IRQ的值和寄存器的內容2,為正在給IRQ線服務的PIC發送一個應答,這將允許PIC進一步發出中斷3,執行共

17、享這個IRQ的所有設備的中斷服務例程4,跳到ret_from_intr()的地址xlanchen2006.6.14Embedded Operating Systems39Linux中的設備中斷IRQ號與I/O設備之間的對應關系是在初始化每個設備驅動程序時建立的xlanchen2006.6.14Embedded Operating Systems40中斷處理系統初始化時,調用init_IRQ()函數用新的中斷門替換臨時中斷門來更新IDT這段代碼在interrupt數組中找到用于建立中斷門的中斷處理程序地址。xlanchen2006.6.14Embedded Operating Systems41

18、linux中斷處理過程在調用do_IRQ之前,要為中斷處理程序保存寄存器在interrupt數組中定義的中斷處理程序中每個入口地址轉換成匯編碼是如下的一些指令IRQn_interrupt:pushl $n-256jmp common_interrupt這里對所有的中斷處理程序都執行相同的代碼common_interrupt:SAVE_ALLcall do_IRQjmp $ret_from_intrxlanchen2006.6.14Embedded Operating Systems42ssespeflagcseip$n-256esdseaxebpediesiedxecxebx返回地址Point

19、er硬件自動保存SAVE_ALLesp進程描述符do_IRQ執行時內核態的堆棧do_IRQ()的函數聲明從do_IRQ返回后要執行的指令地址ret_from_intrxlanchen2006.6.14Embedded Operating Systemsxlanchen2006.6.14Embedded Operating Systems43中斷處理do_IRQ()函數的等價代碼:int irq=regs.orig_eax & 0 xff;/1irq_descirq.handler-ack(irq);/2handle_IRQ_event(irq,®s,irq_descirq.action)

20、;/3irq_descirq.handler-end(irq);/4處理下半部分/51句將$n-255轉換成n,取得對應的中斷向量2句應答PIC的中斷,并禁用這條IRQ線。(為串行處理同類型中斷)3句調用handle_IRQ_event()執行中斷服務例程4句通知PIC重新激活這條IRQ線,允許處理同類型中斷Whose Assembler?leaeax,ecx+ecx*2subesp,8cmpdword ptr ebp-8,0moveax,dword ptr eax*4+100hleal(%ecx,%ecx,2),%eaxsubl$8,%espcmpl$0,-8(%ebp)movl$0 x10

21、0(,%eax,4),%eaxIntel/Microsoft FormatGAS/Gnu FormatIntel/Microsoft Differs from GASOperands listed in opposite ordermov Dest, Src movl Src, DestConstants not preceded by $, Denote hex with h at end100h$0 x100Operand size indicated by operands rather than operator suffixsubsublAddressing format shows

22、 effective address computationeax*4+100h$0 x100(,%eax,4)AT&T Syntax vs. Intel SyntaxOperator size specificationbbyte(8-bit)wword(16-bit)llong(32-bit)qquadruple word(64-bit)SampleIntel : mov bx, axAT&T:movb %al, %bl / byte move movw %ax, %bx / word move movl %eax, %ebx / long word moveSimple Addressi

23、ng ModesNormal(R)MemRegRRegister R specifies memory addressmovl (%ecx),%eaxDisplacement D(R)MemRegR+DRegister R specifies start of memory regionConstant displacement D specifies offset movl 8(%ebp),%edxIndexed Addressing Modes Most General Form D(Rb,Ri,S)MemRegRb+S*RegRi+ DD: Constant “displacement”

24、 1, 2, or 4 bytesRb: Base register: Any of 8 integer registersRi:Index register: Any, except for %espS: Scale: 1, 2, 4, or 8Special Cases(Rb,Ri) MemRegRb+RegRiD(Rb,Ri) MemRegRb+RegRi+D(Rb,Ri,S) MemRegRb+S*RegRiGcc Inline Assembly 內嵌匯編What is Inline Assembly?Low level code written in assembly to be e

25、mbedded in a high level language The benefitsIts handy, speedy and very much useful in system programming Basic Inline Assembly Basic format:asm (statements); asm (nop); /*do nothing of course*/asm (“sti); /*stop interrupts*/_asm_ instead of asm_asm_ (pushl %eaxnt movl $0, %eaxnt popl %eax);Extended

26、 inline assembly Basic Format_asm_ ( statementnt statementnt statement : output_list : input_list : clobbered_list /內容會被修改的寄存器 ); Extended inline assemblyCommon constraint“0”, “1”, “9”: %0, %1, %9 general purpose registersq,r: dynamic allocate register q: eax, ebx, ecx, edxr: eax, ebx, ecx, edx, esi

27、, edia, b, c, d, S, D: eax, ebx, ecx ,edx, esi, edi respectivelyA: eax and edx combined into a 64-bit integer (use long longs) Extended inline assembly_asm_ _volatile_Prevent compiler from modifying the order of your inline assembly code when doing optimization mechanism. Closer Look at Extended ASM

28、Instruction StringSeries of assembly commandsSeparated by “;” or “n”Use “%” where normally would use “%”asm(“Instruction String : Output List : Input List : Clobbers List);void access_counter (unsigned *hi, unsigned *lo) /* Get cycle counter */ asm(rdtsc; movl %edx,%0; movl %eax,%1 : =r (*hi), =r (*

29、lo) : /* No input */ : %edx, %eax);Closer Look at Extended ASMOutput List:Expressions indicating destinations for values %0, %1, , %jEnclosed in parenthesesMust be lvalueTag =r indicates that symbolic value (%0, etc.), should be replaced by registerasm(“Instruction String : Output List : Input List : Clobbers List);void access_counter (unsigned *hi, unsigned *lo) /* Get cycle counter */ asm(rdtsc; movl %edx,%0; movl %eax,%1 : =r (*hi), =r (*lo) : /* No input */ : %edx, %eax);Closer Look at Extended ASMInput L

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論