




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、北京大學(xué)軟件與微電子學(xué)院北京大學(xué)軟件與微電子學(xué)院20092009春季春季操作系統(tǒng)高級操作系統(tǒng)高級Operating Systems Advanced Class 第第二二講講 系統(tǒng)機(jī)制系統(tǒng)機(jī)制討論討論討論討論操作系統(tǒng)設(shè)計(jì)者操作系統(tǒng)設(shè)計(jì)者考慮的硬件問題考慮的硬件問題 討論討論操作系統(tǒng)設(shè)計(jì)者操作系統(tǒng)設(shè)計(jì)者考慮的其他問題考慮的其他問題 中央處理器(中央處理器(CPUCPU) 中斷機(jī)制中斷機(jī)制 系統(tǒng)調(diào)用系統(tǒng)調(diào)用一、中央處理器(一、中央處理器(CPUCPU)專門設(shè)計(jì)了一系列基本機(jī)制:專門設(shè)計(jì)了一系列基本機(jī)制:- - 具有特權(quán)級別的處理器狀態(tài),能在不具有特權(quán)級別的處理器狀態(tài),能在不同特權(quán)級運(yùn)行的各種特權(quán)指
2、令同特權(quán)級運(yùn)行的各種特權(quán)指令- - 硬件機(jī)制使得硬件機(jī)制使得OSOS可以和普通程序隔離可以和普通程序隔離 實(shí)現(xiàn)實(shí)現(xiàn)保護(hù)和控制保護(hù)和控制1.CPU1.CPU的構(gòu)成與基本工作方式的構(gòu)成與基本工作方式 處理器由運(yùn)算器、控制器、一系列的寄存器以處理器由運(yùn)算器、控制器、一系列的寄存器以及高速緩存構(gòu)成及高速緩存構(gòu)成 運(yùn)算器實(shí)現(xiàn)指令中的算術(shù)和邏輯運(yùn)算,是計(jì)算運(yùn)算器實(shí)現(xiàn)指令中的算術(shù)和邏輯運(yùn)算,是計(jì)算機(jī)計(jì)算的核心機(jī)計(jì)算的核心 控制器負(fù)責(zé)控制程序運(yùn)行的流程,包括取指令、控制器負(fù)責(zé)控制程序運(yùn)行的流程,包括取指令、維護(hù)維護(hù)CPUCPU狀態(tài)、狀態(tài)、CPUCPU與內(nèi)存的交互等等與內(nèi)存的交互等等處理器中的寄存器處理器中的寄
3、存器 寄存器提供了一定的存儲能力寄存器提供了一定的存儲能力 速度比主存快得多速度比主存快得多 造價(jià)高,容量一般都很小造價(jià)高,容量一般都很小兩類寄存器:兩類寄存器: 用戶可見寄存器,高級語言編譯器通過算法分用戶可見寄存器,高級語言編譯器通過算法分配并使用之,以減少程序訪問內(nèi)存次數(shù)配并使用之,以減少程序訪問內(nèi)存次數(shù) 控制和狀態(tài)寄存器,用于控制處理器的操作控制和狀態(tài)寄存器,用于控制處理器的操作 由由OSOS的的特權(quán)代碼使用特權(quán)代碼使用, , 以控制其他程序的執(zhí)行以控制其他程序的執(zhí)行用戶可見寄存器用戶可見寄存器機(jī)器語言直接引用機(jī)器語言直接引用 包括包括數(shù)據(jù)寄存器數(shù)據(jù)寄存器、地址寄存器地址寄存器以及以及
4、條件碼寄存器條件碼寄存器 數(shù)據(jù)寄存器數(shù)據(jù)寄存器(data registerdata register)又稱通用寄存器又稱通用寄存器 主要用于各種算術(shù)邏輯指令和訪存指令主要用于各種算術(shù)邏輯指令和訪存指令 地址寄存器地址寄存器(address registeraddress register)用于存儲數(shù)據(jù)用于存儲數(shù)據(jù)及指令的物理地址、線性地址或者有效地址,用及指令的物理地址、線性地址或者有效地址,用于某種特定方式的尋址。如于某種特定方式的尋址。如index registerindex register、segment pointersegment pointer、stack pointerstac
5、k pointer 條件碼寄存器條件碼寄存器保存保存CPUCPU操作結(jié)果的各種標(biāo)記位操作結(jié)果的各種標(biāo)記位 如算術(shù)運(yùn)算產(chǎn)生的溢出、符號等等如算術(shù)運(yùn)算產(chǎn)生的溢出、符號等等控制和狀態(tài)寄存器控制和狀態(tài)寄存器 用于控制處理器的操作用于控制處理器的操作 大部分對于用戶是不可見的大部分對于用戶是不可見的 一部分可以在某種特權(quán)模式(由一部分可以在某種特權(quán)模式(由OSOS使用)下訪問使用)下訪問常見的控制和狀態(tài)寄存器常見的控制和狀態(tài)寄存器: : 程序計(jì)數(shù)器程序計(jì)數(shù)器(PCPC:Program CounterProgram Counter),記錄將要取出的指,記錄將要取出的指令的地址令的地址 指令寄存器指令寄存器
6、(IRIR:Instruction RegisterInstruction Register),包含最近取,包含最近取出的指令出的指令 程序狀態(tài)字程序狀態(tài)字(PSWPSW:Program Status WordProgram Status Word),記錄處理器,記錄處理器的運(yùn)行模式信息等等的運(yùn)行模式信息等等2.2.特權(quán)指令和非特權(quán)指令特權(quán)指令和非特權(quán)指令特權(quán)指令:只能由操作系統(tǒng)使用的指令特權(quán)指令:只能由操作系統(tǒng)使用的指令 使用多道程序設(shè)計(jì)技術(shù)的計(jì)算機(jī)指令系統(tǒng)必須要區(qū)使用多道程序設(shè)計(jì)技術(shù)的計(jì)算機(jī)指令系統(tǒng)必須要區(qū)分為特權(quán)指令和非特權(quán)指令分為特權(quán)指令和非特權(quán)指令 特權(quán)指令一般引起處理器狀態(tài)的切換特
7、權(quán)指令一般引起處理器狀態(tài)的切換 處理器通過特殊的機(jī)制將處理器狀態(tài)切換到操作系統(tǒng)運(yùn)行的特權(quán)狀處理器通過特殊的機(jī)制將處理器狀態(tài)切換到操作系統(tǒng)運(yùn)行的特權(quán)狀態(tài)(管態(tài))態(tài)(管態(tài)) 然后將處理權(quán)移交給操作系統(tǒng)中的一段特殊代碼,這一個(gè)過程稱為然后將處理權(quán)移交給操作系統(tǒng)中的一段特殊代碼,這一個(gè)過程稱為陷入陷入 CPUCPU如何知道當(dāng)前運(yùn)行的是操作系統(tǒng)還是一般應(yīng)用如何知道當(dāng)前運(yùn)行的是操作系統(tǒng)還是一般應(yīng)用軟件?有賴于處理器狀態(tài)的標(biāo)識軟件?有賴于處理器狀態(tài)的標(biāo)識3.3.處理器的狀態(tài)處理器的狀態(tài) 根據(jù)運(yùn)行程序?qū)Y源和機(jī)器指令的使用權(quán)限將根據(jù)運(yùn)行程序?qū)Y源和機(jī)器指令的使用權(quán)限將處理器設(shè)置為不同狀態(tài)處理器設(shè)置為不同狀態(tài)程
8、序狀態(tài)字程序狀態(tài)字PSWPSW多數(shù)系統(tǒng)將處理器工作狀態(tài)劃分為管態(tài)和目態(tài)多數(shù)系統(tǒng)將處理器工作狀態(tài)劃分為管態(tài)和目態(tài)管態(tài):管態(tài):操作系統(tǒng)管理程序運(yùn)行的狀態(tài),較高的特權(quán)操作系統(tǒng)管理程序運(yùn)行的狀態(tài),較高的特權(quán)級別,又稱為級別,又稱為特權(quán)態(tài)(特態(tài))、核心態(tài)、系統(tǒng)態(tài)特權(quán)態(tài)(特態(tài))、核心態(tài)、系統(tǒng)態(tài)目態(tài):目態(tài):用戶程序運(yùn)行時(shí)的狀態(tài),較低的特權(quán)級別,用戶程序運(yùn)行時(shí)的狀態(tài),較低的特權(quán)級別,又稱為又稱為普通態(tài)(普態(tài))、用戶態(tài)普通態(tài)(普態(tài))、用戶態(tài)具體處理器將具體處理器將CPUCPU狀態(tài)劃分為兩種、三種或四種狀態(tài)劃分為兩種、三種或四種實(shí)例:實(shí)例:x86x86系列處理器系列處理器 386386、486486、Pentiu
9、mPentium系列都支持系列都支持4 4個(gè)處理器特權(quán)級別個(gè)處理器特權(quán)級別 特權(quán)環(huán):特權(quán)環(huán):R0R0、R1R1、R2R2和和R3R3 從從R0R0到到R3R3特權(quán)能力依次降低:特權(quán)能力依次降低:R0R0相當(dāng)于雙狀態(tài)系統(tǒng)的管相當(dāng)于雙狀態(tài)系統(tǒng)的管態(tài),態(tài),R3R3相當(dāng)于目態(tài)相當(dāng)于目態(tài)四個(gè)級別運(yùn)行不同類別的程序:四個(gè)級別運(yùn)行不同類別的程序: R0R0- -運(yùn)行操作系統(tǒng)核心代碼運(yùn)行操作系統(tǒng)核心代碼 R1R1- -運(yùn)行關(guān)鍵設(shè)備驅(qū)動程序和運(yùn)行關(guān)鍵設(shè)備驅(qū)動程序和I/OI/O處理例程處理例程 R2R2- -運(yùn)行其他受保護(hù)共享代碼,如語言系統(tǒng)運(yùn)行環(huán)境運(yùn)行其他受保護(hù)共享代碼,如語言系統(tǒng)運(yùn)行環(huán)境 R3R3- -運(yùn)行各
10、種用戶程序運(yùn)行各種用戶程序 現(xiàn)有基于現(xiàn)有基于x86x86處理器的操作系統(tǒng)大都只用了處理器的操作系統(tǒng)大都只用了R0R0和和R3R3兩個(gè)特權(quán)級別兩個(gè)特權(quán)級別( (UNIXUNIX、LinuxLinux以及以及WindowsWindows系列系列) )4.4.程序狀態(tài)字程序狀態(tài)字PSW PSW (Program Status Word )(Program Status Word ) 在在PSWPSW中專門設(shè)置一位,根據(jù)運(yùn)行程序使用指令中專門設(shè)置一位,根據(jù)運(yùn)行程序使用指令的權(quán)限而設(shè)置的權(quán)限而設(shè)置CPUCPU狀態(tài)狀態(tài) CPUCPU的工作狀態(tài)碼的工作狀態(tài)碼指明管態(tài)還是目態(tài),用來指明管態(tài)還是目態(tài),用來說明當(dāng)
11、前在說明當(dāng)前在CPUCPU上執(zhí)行的是操作系統(tǒng)還是一般用上執(zhí)行的是操作系統(tǒng)還是一般用戶,從而決定其是否可以使用特權(quán)指令或擁有其戶,從而決定其是否可以使用特權(quán)指令或擁有其他的特殊權(quán)力他的特殊權(quán)力 條件碼條件碼反映指令執(zhí)行后的結(jié)果特征反映指令執(zhí)行后的結(jié)果特征 中斷屏蔽碼中斷屏蔽碼指出是否允許中斷指出是否允許中斷例例: :微處理器微處理器M68000M68000的程序狀態(tài)字的程序狀態(tài)字1514131211109 8 7 6 5 4 3 2 1 0TSI2I1I0X N Z V C條件位:條件位:C: 進(jìn)位標(biāo)志位進(jìn)位標(biāo)志位 V: 溢出標(biāo)志位溢出標(biāo)志位Z: 結(jié)果為零標(biāo)志位結(jié)果為零標(biāo)志位N: 結(jié)果為負(fù)標(biāo)志位
12、結(jié)果為負(fù)標(biāo)志位I0 I2:三位中斷屏蔽位:三位中斷屏蔽位S:CPU狀態(tài)標(biāo)志位,為狀態(tài)標(biāo)志位,為1處于管態(tài),為處于管態(tài),為0處于目態(tài)處于目態(tài)T:陷阱陷阱(Trap)中斷指示位為中斷指示位為1, 在下一條指令執(zhí)行后引起自陷中斷在下一條指令執(zhí)行后引起自陷中斷CF: 進(jìn)位標(biāo)志位進(jìn)位標(biāo)志位 ZF: 結(jié)果為零標(biāo)志位結(jié)果為零標(biāo)志位 SF: 符號標(biāo)志位符號標(biāo)志位OF: 溢出標(biāo)志位溢出標(biāo)志位標(biāo)準(zhǔn)條件位:標(biāo)準(zhǔn)條件位: TF:陷阱標(biāo)志位:陷阱標(biāo)志位IF:中斷允許(中斷屏蔽)標(biāo)志位:中斷允許(中斷屏蔽)標(biāo)志位VIF:虛擬中斷標(biāo)志位:虛擬中斷標(biāo)志位VIP:虛擬中斷待決標(biāo)志位:虛擬中斷待決標(biāo)志位IOPL:IO特權(quán)級別特權(quán)
13、級別 例例: :微處理器微處理器PentiumPentium的的FLAGSFLAGS和描述符和描述符CPUCPU狀態(tài)的轉(zhuǎn)換狀態(tài)的轉(zhuǎn)換目態(tài)目態(tài)管態(tài)管態(tài) 唯一途徑唯一途徑 是是 中斷(廣義)中斷(廣義)管態(tài)管態(tài)目態(tài)目態(tài) 設(shè)置設(shè)置PSW(PSW(修改程序狀態(tài)字修改程序狀態(tài)字) ) 可可實(shí)現(xiàn)實(shí)現(xiàn)一條特殊的指令:訪管指令一條特殊的指令:訪管指令 供用戶調(diào)用操作系統(tǒng)的功能(服務(wù))供用戶調(diào)用操作系統(tǒng)的功能(服務(wù))INT,TRAP,SYSCALL二、二、中斷技術(shù)中斷技術(shù)中斷對于操作系統(tǒng)的重要性中斷對于操作系統(tǒng)的重要性 就像機(jī)器中的驅(qū)動齒輪一樣就像機(jī)器中的驅(qū)動齒輪一樣可以認(rèn)為操作系統(tǒng)可以認(rèn)為操作系統(tǒng) 是由是由“
14、中斷驅(qū)動中斷驅(qū)動”或者或者 “ “(中斷)事件驅(qū)(中斷)事件驅(qū)動動” 及時(shí)處理設(shè)備的中斷請求及時(shí)處理設(shè)備的中斷請求 它使得它使得OSOS可以捕獲用戶程序發(fā)出的系統(tǒng)功能調(diào)用可以捕獲用戶程序發(fā)出的系統(tǒng)功能調(diào)用 防止用戶程序中破壞性的活動防止用戶程序中破壞性的活動 等等等等事件:事件:異步異步/ /同步事件同步事件1.1.中斷的概念中斷的概念 CPUCPU對系統(tǒng)發(fā)生的某個(gè)事件作出的一種反應(yīng)對系統(tǒng)發(fā)生的某個(gè)事件作出的一種反應(yīng) CPUCPU暫停正在執(zhí)行的程序,保留現(xiàn)場后暫停正在執(zhí)行的程序,保留現(xiàn)場后自動自動轉(zhuǎn)轉(zhuǎn)去去執(zhí)行相應(yīng)事件的處理程序執(zhí)行相應(yīng)事件的處理程序,處理完成后返回,處理完成后返回?cái)帱c(diǎn),繼續(xù)執(zhí)行
15、被打斷的程序斷點(diǎn),繼續(xù)執(zhí)行被打斷的程序特點(diǎn):特點(diǎn): 1) 1) 中斷是隨機(jī)發(fā)生的中斷是隨機(jī)發(fā)生的 2) 2) 中斷是可恢復(fù)的中斷是可恢復(fù)的 3) 3) 中斷是自動處理的中斷是自動處理的中斷的引入中斷的引入:為了開發(fā):為了開發(fā)CPUCPU和通道和通道( (或設(shè)備或設(shè)備) )之間的并行之間的并行操作,當(dāng)操作,當(dāng)CPUCPU啟動通道啟動通道( (或設(shè)備或設(shè)備) )進(jìn)行輸入進(jìn)行輸入/ /輸出后,通輸出后,通道道 ( (或設(shè)備或設(shè)備) )便可以獨(dú)立工作,便可以獨(dú)立工作,CPUCPU轉(zhuǎn)去處理與此次輸轉(zhuǎn)去處理與此次輸入入/ /輸出不相關(guān)的事情。當(dāng)通道輸出不相關(guān)的事情。當(dāng)通道( (或設(shè)備或設(shè)備) )完成輸入完
16、成輸入/ /輸輸出后,通過向出后,通過向CPUCPU發(fā)中斷告訴發(fā)中斷告訴CPUCPU此次輸入此次輸入/ /輸出結(jié)束,輸出結(jié)束,使使CPUCPU繼續(xù)處理輸入繼續(xù)處理輸入/ /輸出以后的事情輸出以后的事情中斷的概念中斷的概念(2/3)中斷與異常中斷與異常異常的引入異常的引入:用于表示:用于表示CPUCPU執(zhí)行指令時(shí)本身出現(xiàn)算術(shù)溢執(zhí)行指令時(shí)本身出現(xiàn)算術(shù)溢出、零做除數(shù)、取數(shù)時(shí)的奇偶錯(cuò),訪存指令越界或就出、零做除數(shù)、取數(shù)時(shí)的奇偶錯(cuò),訪存指令越界或就是執(zhí)行了一條所謂是執(zhí)行了一條所謂“異常指令異常指令”(用于實(shí)現(xiàn)系統(tǒng)調(diào)用)(用于實(shí)現(xiàn)系統(tǒng)調(diào)用)等情況,這時(shí)中斷當(dāng)前的執(zhí)行流程,轉(zhuǎn)到相應(yīng)的錯(cuò)誤等情況,這時(shí)中斷當(dāng)前
17、的執(zhí)行流程,轉(zhuǎn)到相應(yīng)的錯(cuò)誤處理程序或異常處理程序處理程序或異常處理程序中斷中斷( (外中斷外中斷) )異常異常( (內(nèi)中斷內(nèi)中斷) )例外例外I/OI/O中斷中斷時(shí)鐘中斷時(shí)鐘中斷系統(tǒng)調(diào)用系統(tǒng)調(diào)用缺頁異常缺頁異常斷點(diǎn)指令斷點(diǎn)指令其他程序性異常其他程序性異常( (如算術(shù)溢出等如算術(shù)溢出等) )中斷中斷( (狹義狹義) )與異常的區(qū)別與異常的區(qū)別: :中斷中斷: : 與正執(zhí)行指令無關(guān),可以屏蔽與正執(zhí)行指令無關(guān),可以屏蔽異常異常: : 與正執(zhí)行指令有關(guān),不可屏蔽與正執(zhí)行指令有關(guān),不可屏蔽廣義中斷廣義中斷中斷的概念(中斷的概念(3/3)硬件故障硬件故障2.2.中斷系統(tǒng)中斷系統(tǒng)中斷系統(tǒng)是現(xiàn)代計(jì)算機(jī)系統(tǒng)的核
18、心機(jī)制之一中斷系統(tǒng)是現(xiàn)代計(jì)算機(jī)系統(tǒng)的核心機(jī)制之一 硬件和軟件相互配合、相互滲透而使得計(jì)算機(jī)系硬件和軟件相互配合、相互滲透而使得計(jì)算機(jī)系統(tǒng)得以充分發(fā)揮能力統(tǒng)得以充分發(fā)揮能力中斷系統(tǒng)中斷系統(tǒng)的兩大組成部分:的兩大組成部分: 硬件中斷裝置和軟件中斷處理程序硬件中斷裝置和軟件中斷處理程序 中斷系統(tǒng)的硬件中斷裝置中斷系統(tǒng)的硬件中斷裝置- -中斷系統(tǒng)的機(jī)制部分中斷系統(tǒng)的機(jī)制部分 負(fù)責(zé)捕獲中斷源發(fā)出的中斷請求,以一定方式響負(fù)責(zé)捕獲中斷源發(fā)出的中斷請求,以一定方式響應(yīng)中斷源,然后將處理器控制權(quán)交給特定的中斷應(yīng)中斷源,然后將處理器控制權(quán)交給特定的中斷處理程序處理程序 軟件中斷處理程序軟件中斷處理程序- -中斷系
19、統(tǒng)的策略部分中斷系統(tǒng)的策略部分 負(fù)責(zé)辨別中斷類型并做出相應(yīng)的操作負(fù)責(zé)辨別中斷類型并做出相應(yīng)的操作 中斷源:引起中斷發(fā)生的事件中斷源:引起中斷發(fā)生的事件 中斷寄存器:記錄中斷中斷寄存器:記錄中斷 中斷字:中斷寄存器的內(nèi)容中斷字:中斷寄存器的內(nèi)容系統(tǒng)堆棧系統(tǒng)堆棧: : 在內(nèi)存開辟的一塊區(qū)域,用于臨時(shí)保存在內(nèi)存開辟的一塊區(qū)域,用于臨時(shí)保存現(xiàn)場現(xiàn)場中斷系統(tǒng)中的相關(guān)概念中斷系統(tǒng)中的相關(guān)概念3.中斷類型(中斷類型(1/2) 輸入輸入/ /輸出輸出(I/O)(I/O)中斷中斷:由:由I/OI/O控制器產(chǎn)生控制器產(chǎn)生 程序性中斷程序性中斷:某些條件下由指令執(zhí)行的結(jié)果產(chǎn)生:某些條件下由指令執(zhí)行的結(jié)果產(chǎn)生 ( (
20、如算術(shù)溢出如算術(shù)溢出, ,除零,缺頁中斷除零,缺頁中斷, , 地址越界,試圖地址越界,試圖執(zhí)行一條非法指令執(zhí)行一條非法指令) ) 時(shí)鐘中斷時(shí)鐘中斷:由:由CPUCPU內(nèi)部的計(jì)時(shí)器產(chǎn)生內(nèi)部的計(jì)時(shí)器產(chǎn)生 硬件故障中斷硬件故障中斷:如:如掉電或內(nèi)存奇偶錯(cuò)掉電或內(nèi)存奇偶錯(cuò)等等強(qiáng)迫性中斷強(qiáng)迫性中斷 正在運(yùn)行的程序所不期望正在運(yùn)行的程序所不期望的,由于某種硬件故障或外部的,由于某種硬件故障或外部請求引起的請求引起的William Stallings中斷類型(中斷類型(2/2)訪管指令訪管指令/ /系統(tǒng)調(diào)用引發(fā)的中斷系統(tǒng)調(diào)用引發(fā)的中斷 執(zhí)行執(zhí)行I/OI/O,創(chuàng)建進(jìn)程,分配內(nèi)存,創(chuàng)建進(jìn)程,分配內(nèi)存 信號量操作
21、,發(fā)送信號量操作,發(fā)送/ /接收消息接收消息 斷點(diǎn)調(diào)試斷點(diǎn)調(diào)試自愿性中斷自愿性中斷 用戶在程序中有意識安排的用戶在程序中有意識安排的中斷,是由于用戶在編制程序時(shí)中斷,是由于用戶在編制程序時(shí)因?yàn)橐蟛僮飨到y(tǒng)提供服務(wù),有因?yàn)橐蟛僮飨到y(tǒng)提供服務(wù),有意使用意使用“訪管訪管”指令或系統(tǒng)調(diào)用,指令或系統(tǒng)調(diào)用,使中斷發(fā)生使中斷發(fā)生例:微機(jī)中的中斷例:微機(jī)中的中斷1.1.可屏蔽中斷(可屏蔽中斷(IOIO中斷)中斷)2.2.不可屏蔽中斷(機(jī)器內(nèi)部故障、掉電中斷)不可屏蔽中斷(機(jī)器內(nèi)部故障、掉電中斷)3.3.程序錯(cuò)誤中斷(溢出、除法錯(cuò)等中斷)程序錯(cuò)誤中斷(溢出、除法錯(cuò)等中斷)4.4.軟件中斷(軟件中斷(Trap
22、Trap指令或中斷指令指令或中斷指令I(lǐng)NTINT)例:例:IBM370IBM370中的中斷中的中斷1. 1. 機(jī)器故障中斷:如電源故障,機(jī)器電路檢驗(yàn)錯(cuò)等機(jī)器故障中斷:如電源故障,機(jī)器電路檢驗(yàn)錯(cuò)等2. 2. 輸入輸出中斷:輸入輸出設(shè)備和通道數(shù)據(jù)傳輸狀態(tài))輸入輸出中斷:輸入輸出設(shè)備和通道數(shù)據(jù)傳輸狀態(tài))3. 3. 外部中斷:時(shí)鐘中斷,操作員控制臺中斷,多機(jī)系統(tǒng)中外部中斷:時(shí)鐘中斷,操作員控制臺中斷,多機(jī)系統(tǒng)中其他機(jī)器的通信要求中斷,各種外設(shè)或傳感器發(fā)來的實(shí)其他機(jī)器的通信要求中斷,各種外設(shè)或傳感器發(fā)來的實(shí)時(shí)中斷等時(shí)中斷等4. 4. 程序中斷:程序中的問題引起的中斷,如錯(cuò)誤地使用指程序中斷:程序中的問題
23、引起的中斷,如錯(cuò)誤地使用指令或數(shù)據(jù)、溢出等問題,存儲保護(hù)等令或數(shù)據(jù)、溢出等問題,存儲保護(hù)等5. 5. 訪管中斷:訪管指令或陷阱指令(訪管中斷:訪管指令或陷阱指令(TrapTrap指令)中的操作指令)中的操作數(shù)規(guī)定了要求服務(wù)的類型。每當(dāng)數(shù)規(guī)定了要求服務(wù)的類型。每當(dāng)CPUCPU執(zhí)行訪管指令或陷阱執(zhí)行訪管指令或陷阱指令時(shí),即引起中斷并調(diào)用操作系統(tǒng)相應(yīng)的功能模塊為指令時(shí),即引起中斷并調(diào)用操作系統(tǒng)相應(yīng)的功能模塊為其服務(wù)其服務(wù)廣義上講,中斷可分為四類:廣義上講,中斷可分為四類:中斷、故障、陷中斷、故障、陷阱、終止,阱、終止,其異同點(diǎn)如下:其異同點(diǎn)如下:類別類別原因原因異步異步/ /同步同步返回行為返回行為
24、中斷中斷來自來自I/OI/O設(shè)備的信號設(shè)備的信號 異步異步總是返回到下一條總是返回到下一條指令指令陷阱陷阱有意的異常有意的異常同步同步總是返回到下一條總是返回到下一條指令指令故障故障潛在可恢復(fù)的錯(cuò)誤潛在可恢復(fù)的錯(cuò)誤同步同步返回到當(dāng)前指令返回到當(dāng)前指令終止終止不可恢復(fù)的錯(cuò)誤不可恢復(fù)的錯(cuò)誤同步同步不會返回不會返回中斷優(yōu)先級設(shè)計(jì)原則:中斷優(yōu)先級設(shè)計(jì)原則:一般來說,高速設(shè)備的中一般來說,高速設(shè)備的中斷優(yōu)先級高,慢速設(shè)備的中斷優(yōu)先級低。因?yàn)楦邤鄡?yōu)先級高,慢速設(shè)備的中斷優(yōu)先級低。因?yàn)楦咚僭O(shè)備的中斷被處理機(jī)優(yōu)先響應(yīng)時(shí),可以讓處理速設(shè)備的中斷被處理機(jī)優(yōu)先響應(yīng)時(shí),可以讓處理機(jī)盡快地向它發(fā)出下一個(gè)機(jī)盡快地向它發(fā)出
25、下一個(gè)I/OI/O請求,提高高速設(shè)備請求,提高高速設(shè)備的利用率的利用率如如PDP-11PDP-11機(jī)上的機(jī)上的UNIXUNIX系統(tǒng)把中斷級別分為:系統(tǒng)把中斷級別分為:時(shí)鐘中斷時(shí)鐘中斷中斷優(yōu)先級中斷優(yōu)先級6 6級級磁盤中斷磁盤中斷中斷優(yōu)先級中斷優(yōu)先級5 5級級終端等其他外設(shè)中斷終端等其他外設(shè)中斷中斷優(yōu)先級中斷優(yōu)先級4 4級級4.4.中斷優(yōu)先級和中斷屏蔽(中斷優(yōu)先級和中斷屏蔽(1/3)處理機(jī)優(yōu)先級:處理機(jī)優(yōu)先級:指出處理機(jī)正運(yùn)行程序的中斷響指出處理機(jī)正運(yùn)行程序的中斷響應(yīng)級別。即當(dāng)處理機(jī)處于某一優(yōu)先級時(shí),只允許應(yīng)級別。即當(dāng)處理機(jī)處于某一優(yōu)先級時(shí),只允許處理機(jī)去響應(yīng)比該優(yōu)先級高的中斷處理機(jī)去響應(yīng)比該優(yōu)
26、先級高的中斷, ,而屏蔽低于或而屏蔽低于或等于該優(yōu)先級的中斷等于該優(yōu)先級的中斷 可以通過設(shè)置處理機(jī)優(yōu)先級來通知硬件:屏可以通過設(shè)置處理機(jī)優(yōu)先級來通知硬件:屏蔽優(yōu)先級小于等于處理機(jī)優(yōu)先級的中斷蔽優(yōu)先級小于等于處理機(jī)優(yōu)先級的中斷中斷屏蔽:中斷屏蔽:指禁止指禁止CPUCPU響應(yīng)中斷或禁止中斷出現(xiàn)響應(yīng)中斷或禁止中斷出現(xiàn)中斷優(yōu)先級和中斷屏蔽(中斷優(yōu)先級和中斷屏蔽(2/3)中斷屏蔽有兩種方法中斷屏蔽有兩種方法:n 硬件實(shí)現(xiàn)硬件實(shí)現(xiàn)由軟件置處理機(jī)優(yōu)先級,硬件按系由軟件置處理機(jī)優(yōu)先級,硬件按系統(tǒng)設(shè)計(jì)時(shí)的約定,屏蔽那些低優(yōu)先級中斷統(tǒng)設(shè)計(jì)時(shí)的約定,屏蔽那些低優(yōu)先級中斷n 軟件實(shí)現(xiàn)軟件實(shí)現(xiàn)由軟件按操作系統(tǒng)優(yōu)先級約定
27、由軟件按操作系統(tǒng)優(yōu)先級約定, ,設(shè)置設(shè)置屏蔽寄存器屏蔽寄存器中斷優(yōu)先級和中斷屏蔽(中斷優(yōu)先級和中斷屏蔽(3/3)5.中斷響應(yīng)(中斷響應(yīng)(1/2) CPUCPU如何響應(yīng)中斷如何響應(yīng)中斷, , 要回答兩個(gè)問題:要回答兩個(gè)問題: CPUCPU何時(shí)響應(yīng)中斷?何時(shí)響應(yīng)中斷? 處理器控制部件中設(shè)有:中斷掃描機(jī)構(gòu)處理器控制部件中設(shè)有:中斷掃描機(jī)構(gòu) 如何知道提出中斷請求的設(shè)備或中斷源?如何知道提出中斷請求的設(shè)備或中斷源?中斷響應(yīng):中斷響應(yīng): 發(fā)現(xiàn)中斷、接收中斷的過程發(fā)現(xiàn)中斷、接收中斷的過程 由中斷裝置完成由中斷裝置完成開始開始取下一條指令取下一條指令執(zhí)行指令執(zhí)行指令檢查指令檢查指令處理中斷處理中斷停止停止取周
28、期取周期執(zhí)行周期執(zhí)行周期中斷周期中斷周期不允許中斷不允許中斷允許允許中斷中斷中斷響應(yīng)(2/2)在每條指令執(zhí)行周在每條指令執(zhí)行周期的最后時(shí)刻掃描期的最后時(shí)刻掃描中斷寄存器,詢問中斷寄存器,詢問是否有中斷信號是否有中斷信號若無中斷信號,繼若無中斷信號,繼續(xù)執(zhí)行下一條指令續(xù)執(zhí)行下一條指令若有中斷,中斷硬件將若有中斷,中斷硬件將該中斷觸發(fā)器內(nèi)容按規(guī)該中斷觸發(fā)器內(nèi)容按規(guī)定編碼送入定編碼送入PSWPSW的相應(yīng)的相應(yīng)位,稱為中斷碼,通過位,稱為中斷碼,通過交換中斷向量引出中斷交換中斷向量引出中斷處理程序處理程序 中斷向量:中斷向量:一個(gè)存放中斷處理程序入口地址和程一個(gè)存放中斷處理程序入口地址和程序運(yùn)行所需處
29、理機(jī)狀態(tài)字的內(nèi)存單元序運(yùn)行所需處理機(jī)狀態(tài)字的內(nèi)存單元硬件按中斷號、異常類型的不同通過中斷向量表硬件按中斷號、異常類型的不同通過中斷向量表轉(zhuǎn)移轉(zhuǎn)移有的機(jī)器中:有的機(jī)器中: 將內(nèi)存最低位將內(nèi)存最低位128128個(gè)字保留作為中斷向量表,每個(gè)中個(gè)字保留作為中斷向量表,每個(gè)中斷向量占兩個(gè)字?jǐn)嘞蛄空純蓚€(gè)字中斷向量表中斷向量表中斷響應(yīng)示意圖中斷響應(yīng)示意圖簡單的中斷處理過程簡單的中斷處理過程6.中斷處理中斷處理(1/3)中斷處理(中斷處理(2/3)簡單的中斷處理簡單的中斷處理 - - 典型的處理過程:典型的處理過程:(1 1)設(shè)備給處理器發(fā)一個(gè)中斷信號)設(shè)備給處理器發(fā)一個(gè)中斷信號(2 2)處理器處理完當(dāng)前指令
30、后響應(yīng)中斷,延遲非常短(要求)處理器處理完當(dāng)前指令后響應(yīng)中斷,延遲非常短(要求處理器沒有關(guān)閉中斷)處理器沒有關(guān)閉中斷)(3 3)處理器處理完當(dāng)前指令后檢測到中斷,判斷出中斷來源)處理器處理完當(dāng)前指令后檢測到中斷,判斷出中斷來源并向發(fā)送中斷的設(shè)備發(fā)送了確認(rèn)中斷信號,確認(rèn)信號使得并向發(fā)送中斷的設(shè)備發(fā)送了確認(rèn)中斷信號,確認(rèn)信號使得該設(shè)備將中斷信號恢復(fù)到一般狀態(tài)該設(shè)備將中斷信號恢復(fù)到一般狀態(tài)(4 4)處理器開始為軟件處理中斷做準(zhǔn)備:)處理器開始為軟件處理中斷做準(zhǔn)備: 保存中斷點(diǎn)的程序執(zhí)行上下文環(huán)境,這通常包括程保存中斷點(diǎn)的程序執(zhí)行上下文環(huán)境,這通常包括程 序狀態(tài)序狀態(tài)字字PSWPSW,程序計(jì)數(shù)器,程序
31、計(jì)數(shù)器PCPC中的下一條指令位置,一些寄存器的中的下一條指令位置,一些寄存器的值,它們通常保存在系統(tǒng)控制棧中值,它們通常保存在系統(tǒng)控制棧中 處理器狀態(tài)被切換到管態(tài)處理器狀態(tài)被切換到管態(tài)(5 5)處理器根據(jù)中斷源查詢中斷向量表,獲得與該中斷相聯(lián))處理器根據(jù)中斷源查詢中斷向量表,獲得與該中斷相聯(lián)系的處理程序入口地址,并將系的處理程序入口地址,并將PCPC置成該地址,處理器開始置成該地址,處理器開始一個(gè)新的指令周期,控制轉(zhuǎn)移到中斷處理程序一個(gè)新的指令周期,控制轉(zhuǎn)移到中斷處理程序(6 6)中斷處理程序開始工作,包括檢查)中斷處理程序開始工作,包括檢查I/OI/O相關(guān)的狀態(tài)信息,相關(guān)的狀態(tài)信息,操縱操縱
32、I/OI/O設(shè)備或者在設(shè)備和主存之間傳送數(shù)據(jù)等等設(shè)備或者在設(shè)備和主存之間傳送數(shù)據(jù)等等(7 7)中斷處理結(jié)束時(shí),處理器檢測到中斷返回指令,被中斷)中斷處理結(jié)束時(shí),處理器檢測到中斷返回指令,被中斷程序的上下文環(huán)境從系統(tǒng)堆棧中恢復(fù)程序的上下文環(huán)境從系統(tǒng)堆棧中恢復(fù) 處理器狀態(tài)恢復(fù)成原來的狀態(tài)處理器狀態(tài)恢復(fù)成原來的狀態(tài)(8 8)PSWPSW和和PCPC恢復(fù)成中斷前的值,處理器開始一個(gè)新的指令周恢復(fù)成中斷前的值,處理器開始一個(gè)新的指令周期,中斷處理結(jié)束期,中斷處理結(jié)束中斷處理中斷處理(3/3)7.典型的中斷處理典型的中斷處理(1):I/O中斷中斷由由I/OI/O設(shè)備的控制器或者通道發(fā)出設(shè)備的控制器或者通道
33、發(fā)出兩類兩類I/OI/O中斷:中斷: I/OI/O操作正常結(jié)束操作正常結(jié)束 如果要繼續(xù)如果要繼續(xù)I/OI/O操作,需要在準(zhǔn)備好以后重新啟操作,需要在準(zhǔn)備好以后重新啟動動I/OI/O,若請求,若請求I/OI/O程序正處于等待程序正處于等待I/OI/O狀態(tài),則狀態(tài),則應(yīng)將其喚醒應(yīng)將其喚醒 I/OI/O異常異常 需要重新執(zhí)行失敗的需要重新執(zhí)行失敗的I/OI/O操作操作 重試次數(shù)有上限,次數(shù)過大,系統(tǒng)將判定硬件故重試次數(shù)有上限,次數(shù)過大,系統(tǒng)將判定硬件故障障系統(tǒng)多道能力的重要推動力量,時(shí)鐘中斷處理程序通常系統(tǒng)多道能力的重要推動力量,時(shí)鐘中斷處理程序通常做與系統(tǒng)運(yùn)轉(zhuǎn)、管理和維護(hù)相關(guān)的工作,包括:做與系統(tǒng)
34、運(yùn)轉(zhuǎn)、管理和維護(hù)相關(guān)的工作,包括: 維護(hù)軟件時(shí)鐘:系統(tǒng)有若干個(gè)軟件時(shí)鐘,控制定時(shí)任維護(hù)軟件時(shí)鐘:系統(tǒng)有若干個(gè)軟件時(shí)鐘,控制定時(shí)任務(wù)以及進(jìn)程的處理器時(shí)間配額,時(shí)鐘中斷需要維護(hù)、務(wù)以及進(jìn)程的處理器時(shí)間配額,時(shí)鐘中斷需要維護(hù)、定時(shí)更新這些軟件時(shí)鐘定時(shí)更新這些軟件時(shí)鐘 處理器時(shí)間調(diào)度:維護(hù)當(dāng)前進(jìn)程時(shí)間片軟件時(shí)鐘,并處理器時(shí)間調(diào)度:維護(hù)當(dāng)前進(jìn)程時(shí)間片軟件時(shí)鐘,并在當(dāng)前進(jìn)程時(shí)間片到時(shí)以后運(yùn)行調(diào)度程序選擇下一個(gè)在當(dāng)前進(jìn)程時(shí)間片到時(shí)以后運(yùn)行調(diào)度程序選擇下一個(gè)被調(diào)度的進(jìn)程被調(diào)度的進(jìn)程 控制系統(tǒng)定時(shí)任務(wù):通過軟件時(shí)鐘和調(diào)度程序定時(shí)激控制系統(tǒng)定時(shí)任務(wù):通過軟件時(shí)鐘和調(diào)度程序定時(shí)激活一些系統(tǒng)任務(wù),如監(jiān)測死鎖、系統(tǒng)記帳
35、、系統(tǒng)審計(jì)活一些系統(tǒng)任務(wù),如監(jiān)測死鎖、系統(tǒng)記帳、系統(tǒng)審計(jì)等等 實(shí)時(shí)處理實(shí)時(shí)處理典型的中斷處理典型的中斷處理(2):時(shí)鐘中斷:時(shí)鐘中斷典型的中斷處理典型的中斷處理(3):硬件故障中斷:硬件故障中斷 硬件故障中斷處理程序一般需要做的工作:硬件故障中斷處理程序一般需要做的工作: 保存現(xiàn)場,使用一定警告手段,提供些輔助診斷信息保存現(xiàn)場,使用一定警告手段,提供些輔助診斷信息 在高可靠系統(tǒng)中,中斷處理程序還要評估系統(tǒng)可用性,在高可靠系統(tǒng)中,中斷處理程序還要評估系統(tǒng)可用性,盡可能恢復(fù)系統(tǒng)盡可能恢復(fù)系統(tǒng) 如如Windows 2000/XPWindows 2000/XP,關(guān)鍵硬件發(fā)生故障時(shí),如顯示卡,關(guān)鍵硬件發(fā)
36、生故障時(shí),如顯示卡損壞,出現(xiàn)系統(tǒng)藍(lán)屏,系統(tǒng)實(shí)際上進(jìn)入相應(yīng)故障處理程損壞,出現(xiàn)系統(tǒng)藍(lán)屏,系統(tǒng)實(shí)際上進(jìn)入相應(yīng)故障處理程序,發(fā)現(xiàn)故障不可恢復(fù),則在屏幕上打印出發(fā)生故障時(shí)序,發(fā)現(xiàn)故障不可恢復(fù),則在屏幕上打印出發(fā)生故障時(shí)程序位置,并開始進(jìn)行內(nèi)存轉(zhuǎn)儲(將一定范圍的內(nèi)存內(nèi)程序位置,并開始進(jìn)行內(nèi)存轉(zhuǎn)儲(將一定范圍的內(nèi)存內(nèi)容寫上磁盤,是系統(tǒng)故障時(shí)的全系統(tǒng)容寫上磁盤,是系統(tǒng)故障時(shí)的全系統(tǒng)“快照快照”),備日),備日后故障診斷后故障診斷程序指令出錯(cuò)、指令越權(quán)或者指令尋址越界而引發(fā)程序指令出錯(cuò)、指令越權(quán)或者指令尋址越界而引發(fā)兩類處理方法:兩類處理方法: 只能由操作系統(tǒng)的相關(guān)擴(kuò)展功能模塊完成只能由操作系統(tǒng)的相關(guān)擴(kuò)展功能
37、模塊完成 多為程序試圖作不能做的操作引起的系統(tǒng)保護(hù)多為程序試圖作不能做的操作引起的系統(tǒng)保護(hù) 如訪問合法的、但不在內(nèi)存虛地址內(nèi),引發(fā)頁故障頁故障一如訪問合法的、但不在內(nèi)存虛地址內(nèi),引發(fā)頁故障頁故障一般會引發(fā)般會引發(fā)OSOS虛存模塊作一個(gè)頁面換入虛存模塊作一個(gè)頁面換入 可由程序自己完成,如一些算術(shù)運(yùn)算錯(cuò)誤可由程序自己完成,如一些算術(shù)運(yùn)算錯(cuò)誤 不同程序可有不同處理方法,所以很多不同程序可有不同處理方法,所以很多OSOS提供由用戶自己處提供由用戶自己處理這類中斷的理這類中斷的“綠色通道綠色通道” 系統(tǒng)調(diào)試中斷(斷點(diǎn)中斷、單步跟蹤)也可被用戶程序處理,系統(tǒng)調(diào)試中斷(斷點(diǎn)中斷、單步跟蹤)也可被用戶程序處理
38、,用以支持各種程序調(diào)試用以支持各種程序調(diào)試典型的中斷處理典型的中斷處理(4):程序性中斷:程序性中斷典型的中斷處理典型的中斷處理(5):系統(tǒng)服務(wù)請求:系統(tǒng)服務(wù)請求系統(tǒng)服務(wù)請求由處理器專用指令(訪管指令)激發(fā)系統(tǒng)服務(wù)請求由處理器專用指令(訪管指令)激發(fā) 如如x86x86處理器提供處理器提供intint指令,用來激發(fā)軟件中斷指令,用來激發(fā)軟件中斷 其他不少處理器則提供系統(tǒng)調(diào)用指令其他不少處理器則提供系統(tǒng)調(diào)用指令syscallsyscall 現(xiàn)代操作系統(tǒng)一般不提供直接使用系統(tǒng)調(diào)用指令的接現(xiàn)代操作系統(tǒng)一般不提供直接使用系統(tǒng)調(diào)用指令的接口,通常做法:提供一套方便、實(shí)用的應(yīng)用程序函數(shù)口,通常做法:提供一套
39、方便、實(shí)用的應(yīng)用程序函數(shù)庫(應(yīng)用程序設(shè)計(jì)接口庫(應(yīng)用程序設(shè)計(jì)接口APIAPI) 從應(yīng)用層面重新封裝系統(tǒng)調(diào)用從應(yīng)用層面重新封裝系統(tǒng)調(diào)用 屏蔽復(fù)雜的系統(tǒng)調(diào)用傳參問題屏蔽復(fù)雜的系統(tǒng)調(diào)用傳參問題 高級語言接口,有助于快速開發(fā)高級語言接口,有助于快速開發(fā) 有的系統(tǒng)在更高層面提供系統(tǒng)程序設(shè)計(jì)模板庫和類庫有的系統(tǒng)在更高層面提供系統(tǒng)程序設(shè)計(jì)模板庫和類庫IA32體系結(jié)構(gòu)對中斷的支持基本概念基本概念 中斷中斷由硬件信號引發(fā)的,分為可屏蔽和不可屏蔽中由硬件信號引發(fā)的,分為可屏蔽和不可屏蔽中斷斷 異常異常由指令執(zhí)行引發(fā)的,比如除零異常由指令執(zhí)行引發(fā)的,比如除零異常80 x8680 x86處理器發(fā)布了大約處理器發(fā)布了大
40、約2020種不同的異常種不同的異常對于某些異常,對于某些異常,CPUCPU會在執(zhí)行異常處理程序之前會在執(zhí)行異常處理程序之前產(chǎn)生硬件出錯(cuò)碼,并壓入內(nèi)核態(tài)堆棧產(chǎn)生硬件出錯(cuò)碼,并壓入內(nèi)核態(tài)堆棧 系統(tǒng)調(diào)用系統(tǒng)調(diào)用異常的一種,用戶態(tài)到系統(tǒng)態(tài)的唯一入口異常的一種,用戶態(tài)到系統(tǒng)態(tài)的唯一入口IA32IA32體系結(jié)構(gòu)對中斷的支持體系結(jié)構(gòu)對中斷的支持(1/6) 中斷控制器中斷控制器負(fù)責(zé)將硬件的中斷信號轉(zhuǎn)換為中斷向量,并引負(fù)責(zé)將硬件的中斷信號轉(zhuǎn)換為中斷向量,并引發(fā)發(fā)CPUCPU中斷中斷 中斷向量中斷向量MS-DOSMS-DOS:存放中斷服務(wù)程序的入口地址:存放中斷服務(wù)程序的入口地址入口地址段地址偏移入口地址段地址偏
41、移與一般的過程調(diào)用相同與一般的過程調(diào)用相同不支持不支持CPUCPU運(yùn)行狀態(tài)切換運(yùn)行狀態(tài)切換LinuxLinux:采用門:采用門(gate)(gate)數(shù)據(jù)結(jié)構(gòu)描述中斷向量數(shù)據(jù)結(jié)構(gòu)描述中斷向量IA32IA32體系結(jié)構(gòu)對中斷的支持體系結(jié)構(gòu)對中斷的支持(2/6) 中斷向量表中斷向量表/ /中斷描述符表中斷描述符表表項(xiàng)包含三種類型門描述符表項(xiàng)包含三種類型門描述符任務(wù)門任務(wù)門(Task gate)(Task gate)中斷發(fā)生時(shí),必須取代當(dāng)前進(jìn)程的那個(gè)進(jìn)程的中斷發(fā)生時(shí),必須取代當(dāng)前進(jìn)程的那個(gè)進(jìn)程的TSSTSS選擇符存放在任務(wù)門中選擇符存放在任務(wù)門中(LinuxLinux沒有使用任務(wù)沒有使用任務(wù)門)門)中
42、斷門中斷門(Interrupt gate)(Interrupt gate)包括段選擇符、中斷包括段選擇符、中斷/ /異常程序的段內(nèi)偏移量,異常程序的段內(nèi)偏移量,通過中斷門后系統(tǒng)會自動關(guān)中斷通過中斷門后系統(tǒng)會自動關(guān)中斷陷阱門陷阱門(Trap gate)(Trap gate)與中斷門類似,但通過陷阱門后系統(tǒng)不會自動關(guān)與中斷門類似,但通過陷阱門后系統(tǒng)不會自動關(guān)中斷中斷IA32IA32體系結(jié)構(gòu)對中斷的支持體系結(jié)構(gòu)對中斷的支持(3/6) 中斷服務(wù)程序入口地址:段選擇碼偏移中斷服務(wù)程序入口地址:段選擇碼偏移描述符是否有效段選段選擇符擇符偏移偏移量量偏移偏移量量IA32IA32體系結(jié)構(gòu)對中斷的支持體系結(jié)構(gòu)對
43、中斷的支持(4/6)中斷中斷/ /異常的硬件處理過程:異常的硬件處理過程:1.1.確定與中斷或異常相關(guān)聯(lián)的向量確定與中斷或異常相關(guān)聯(lián)的向量i i2.2.讀取讀取IDTRIDTR寄存器指向的中斷向量表的第寄存器指向的中斷向量表的第i i項(xiàng),項(xiàng),獲得中斷描述符獲得中斷描述符3.3.從從GDTRGDTR寄存器獲得寄存器獲得GDTGDT的基地址,讀取中斷描的基地址,讀取中斷描述符中段選擇符所標(biāo)識的段描述符,可從該描述符中段選擇符所標(biāo)識的段描述符,可從該描述符中得到中斷或異常處理程序所在的段基址述符中得到中斷或異常處理程序所在的段基址IA32IA32體系結(jié)構(gòu)對中斷的支持體系結(jié)構(gòu)對中斷的支持(5/6)4.
44、4.確信中斷是由授權(quán)的發(fā)生源發(fā)生的確信中斷是由授權(quán)的發(fā)生源發(fā)生的確保確保CPLCPL(存放在(存放在CSCS寄存器中)寄存器中) = = 段描述符段描述符DPLDPL當(dāng)前特權(quán)級不高于中斷處理程序的特權(quán)級當(dāng)前特權(quán)級不高于中斷處理程序的特權(quán)級確保確保CPL=CPL=門描述符門描述符DPLDPL避免應(yīng)用程序訪問特殊的陷阱門或中斷門避免應(yīng)用程序訪問特殊的陷阱門或中斷門5.5.檢查是否發(fā)生了特權(quán)級的變化,如果是,必檢查是否發(fā)生了特權(quán)級的變化,如果是,必須使用與新的特權(quán)級相關(guān)的棧須使用與新的特權(quán)級相關(guān)的棧( (堆棧切換堆棧切換) )6.6.硬件壓棧,保存上下文,如果異常產(chǎn)生了硬硬件壓棧,保存上下文,如果異
45、常產(chǎn)生了硬件出錯(cuò)碼,則將它保存在棧中件出錯(cuò)碼,則將它保存在棧中IA32IA32體系結(jié)構(gòu)對中斷的支持體系結(jié)構(gòu)對中斷的支持(6/6)7.7.通過中斷描述符中的段內(nèi)偏移,找到中斷通過中斷描述符中的段內(nèi)偏移,找到中斷或異常處理程序入口,執(zhí)行其第一條指令或異常處理程序入口,執(zhí)行其第一條指令三、系統(tǒng)調(diào)用三、系統(tǒng)調(diào)用系統(tǒng)調(diào)用系統(tǒng)調(diào)用:用戶在程序中調(diào)用操作系統(tǒng)提供的一些子功能:用戶在程序中調(diào)用操作系統(tǒng)提供的一些子功能 一種特殊的過程調(diào)用,由特殊的機(jī)器指令實(shí)現(xiàn)(一種特殊的過程調(diào)用,由特殊的機(jī)器指令實(shí)現(xiàn)(每種機(jī)器每種機(jī)器的機(jī)器指令集中都有一條系統(tǒng)調(diào)用指令的機(jī)器指令集中都有一條系統(tǒng)調(diào)用指令訪管指令訪管指令) 系統(tǒng)調(diào)
46、用是操作系統(tǒng)提供給編程人員的唯一接口系統(tǒng)調(diào)用是操作系統(tǒng)提供給編程人員的唯一接口 系統(tǒng)狀態(tài)從目態(tài)轉(zhuǎn)入管態(tài)系統(tǒng)狀態(tài)從目態(tài)轉(zhuǎn)入管態(tài) 系統(tǒng)調(diào)用是一個(gè)低級過程,只能由匯編語言直接訪問系統(tǒng)調(diào)用是一個(gè)低級過程,只能由匯編語言直接訪問 利用系統(tǒng)調(diào)用,動態(tài)請求和釋放系統(tǒng)資源利用系統(tǒng)調(diào)用,動態(tài)請求和釋放系統(tǒng)資源 完成與硬件相關(guān)的工作以及控制程序的執(zhí)行等完成與硬件相關(guān)的工作以及控制程序的執(zhí)行等每個(gè)操作系統(tǒng)都提供幾百種系統(tǒng)調(diào)用每個(gè)操作系統(tǒng)都提供幾百種系統(tǒng)調(diào)用1.1.系統(tǒng)調(diào)用的處理過程(系統(tǒng)調(diào)用的處理過程(1/21/2)機(jī)制的設(shè)計(jì)機(jī)制的設(shè)計(jì) 陷入陷入(TRAPTRAP)或異常處理機(jī)制或異常處理機(jī)制 系統(tǒng)中控制系統(tǒng)調(diào)用服
47、務(wù)的機(jī)制系統(tǒng)中控制系統(tǒng)調(diào)用服務(wù)的機(jī)制 陷入或異常指令(或稱訪管指令)陷入或異常指令(或稱訪管指令) 由系統(tǒng)調(diào)用引起處理機(jī)中斷的指令由系統(tǒng)調(diào)用引起處理機(jī)中斷的指令 系統(tǒng)調(diào)用的功能號和參數(shù)系統(tǒng)調(diào)用的功能號和參數(shù) 每個(gè)系統(tǒng)調(diào)用都對應(yīng)一個(gè)事先給定的功能號每個(gè)系統(tǒng)調(diào)用都對應(yīng)一個(gè)事先給定的功能號 在陷入指令中必須包括對應(yīng)的系統(tǒng)調(diào)用的功能號在陷入指令中必須包括對應(yīng)的系統(tǒng)調(diào)用的功能號 有些陷入指令中,還帶有傳給陷入處理機(jī)制和內(nèi)部處理有些陷入指令中,還帶有傳給陷入處理機(jī)制和內(nèi)部處理程序的有關(guān)參數(shù)程序的有關(guān)參數(shù) 入口地址表入口地址表 每個(gè)入口地址對應(yīng)一個(gè)系統(tǒng)調(diào)用功能子程序每個(gè)入口地址對應(yīng)一個(gè)系統(tǒng)調(diào)用功能子程序 陷
48、入處理機(jī)制把陷入指令中的功能號與入口地址表有關(guān)項(xiàng)對陷入處理機(jī)制把陷入指令中的功能號與入口地址表有關(guān)項(xiàng)對應(yīng)應(yīng), , 驅(qū)動有關(guān)子程序執(zhí)行驅(qū)動有關(guān)子程序執(zhí)行保護(hù)現(xiàn)場:保護(hù)現(xiàn)場: 進(jìn)入系統(tǒng)調(diào)用處理前,陷入處理機(jī)制還需保存處理機(jī)現(xiàn)場進(jìn)入系統(tǒng)調(diào)用處理前,陷入處理機(jī)制還需保存處理機(jī)現(xiàn)場 在系統(tǒng)調(diào)用處理結(jié)束之后,要恢復(fù)處理機(jī)現(xiàn)場,現(xiàn)場被保在系統(tǒng)調(diào)用處理結(jié)束之后,要恢復(fù)處理機(jī)現(xiàn)場,現(xiàn)場被保護(hù)在特定的內(nèi)存區(qū)或寄存器中護(hù)在特定的內(nèi)存區(qū)或寄存器中系統(tǒng)調(diào)用的處理過程(系統(tǒng)調(diào)用的處理過程(2/22/2) 系統(tǒng)系統(tǒng)調(diào)用調(diào)用 入口地址表入口地址表 (1)保存現(xiàn)場保存現(xiàn)場(2)取系統(tǒng)調(diào)取系統(tǒng)調(diào)用功能號并用功能號并尋找子程序?qū)ふ?/p>
49、子程序入口入口(3)返回返回A0A1Ai AnA0 A1AiAnSub0Sub1SubiSubn 用戶程序用戶程序 陷入處理機(jī)制陷入處理機(jī)制 系統(tǒng)子程序系統(tǒng)子程序系統(tǒng)調(diào)用的處理過程示意系統(tǒng)調(diào)用的處理過程示意參數(shù)傳遞過程問題參數(shù)傳遞過程問題怎樣實(shí)現(xiàn)用戶程序和系統(tǒng)程序之間的參數(shù)傳遞?怎樣實(shí)現(xiàn)用戶程序和系統(tǒng)程序之間的參數(shù)傳遞?常用的常用的3 3種實(shí)現(xiàn)方法:種實(shí)現(xiàn)方法: 由陷入指令自帶參數(shù)由陷入指令自帶參數(shù):陷入指令的長度有限,且:陷入指令的長度有限,且還要攜帶系統(tǒng)調(diào)用功能號,只能自帶有限的參數(shù)還要攜帶系統(tǒng)調(diào)用功能號,只能自帶有限的參數(shù) 通過通用寄存器傳遞參數(shù)通過通用寄存器傳遞參數(shù):這些寄存器是系統(tǒng)程
50、:這些寄存器是系統(tǒng)程序和用戶程序都能訪問的,由于寄存器長度較短,序和用戶程序都能訪問的,由于寄存器長度較短,傳遞的參數(shù)數(shù)量有限傳遞的參數(shù)數(shù)量有限 在內(nèi)存中開辟專用堆棧區(qū)來傳遞參數(shù)在內(nèi)存中開辟專用堆棧區(qū)來傳遞參數(shù)2.2.系統(tǒng)調(diào)用的分類系統(tǒng)調(diào)用的分類系統(tǒng)的功能可分為兩部分:系統(tǒng)的功能可分為兩部分: 系統(tǒng)自身所需要的系統(tǒng)自身所需要的 作為服務(wù)提供給用戶的作為服務(wù)提供給用戶的OSOS的系統(tǒng)調(diào)用的系統(tǒng)調(diào)用: : 進(jìn)程控制類系統(tǒng)調(diào)用進(jìn)程控制類系統(tǒng)調(diào)用 文件操作類系統(tǒng)調(diào)用文件操作類系統(tǒng)調(diào)用 進(jìn)程通信類系統(tǒng)調(diào)用進(jìn)程通信類系統(tǒng)調(diào)用 設(shè)備管理類系統(tǒng)調(diào)用設(shè)備管理類系統(tǒng)調(diào)用 信息維護(hù)類系統(tǒng)調(diào)用信息維護(hù)類系統(tǒng)調(diào)用進(jìn)程管
51、理進(jìn)程管理文件管理文件管理目錄管理目錄管理其他其他3.Win32 3.Win32 應(yīng)用程序接口應(yīng)用程序接口 在在WindowsWindows中,定義了一系列程序中,定義了一系列程序( (應(yīng)用程序接口應(yīng)用程序接口Win32 Win32 API) API) ,提供,提供OSOS服務(wù)服務(wù) 這個(gè)接口(部分)支持這個(gè)接口(部分)支持Win95 Win95 以后的以后的WindowsWindows版本版本W(wǎng)in32 Win32 APIAPI調(diào)用的種類非常多,以千計(jì)算調(diào)用的種類非常多,以千計(jì)算 在在WindowsWindows中不可能分辨出哪些是系統(tǒng)調(diào)用(被內(nèi)核執(zhí)行),中不可能分辨出哪些是系統(tǒng)調(diào)用(被內(nèi)核執(zhí)
52、行),哪些是用戶空間的庫調(diào)用哪些是用戶空間的庫調(diào)用 事實(shí)上,一個(gè)事實(shí)上,一個(gè)WindowsWindows版本中的系統(tǒng)調(diào)用也許在另一個(gè)版本中的系統(tǒng)調(diào)用也許在另一個(gè)WindowsWindows版本中會在用戶空間執(zhí)行版本中會在用戶空間執(zhí)行 由于圖形子系統(tǒng)在內(nèi)核中運(yùn)行(在某些由于圖形子系統(tǒng)在內(nèi)核中運(yùn)行(在某些WindowsWindows版本中),版本中),它們也是系統(tǒng)調(diào)用,否則是庫調(diào)用它們也是系統(tǒng)調(diào)用,否則是庫調(diào)用4.Linux4.Linux的系統(tǒng)調(diào)用實(shí)現(xiàn)的系統(tǒng)調(diào)用實(shí)現(xiàn) 基于基于x86x86體系結(jié)構(gòu)體系結(jié)構(gòu) 軟件中斷指令軟件中斷指令 int 128int 128 int $0 x80 int $0 x
53、80(PentiumII(PentiumII引入引入sysentersysenter,Linux2.6Linux2.6以后版本提供支持以后版本提供支持) ) 陷阱門描述符陷阱門描述符 不影響硬件中斷請求不影響硬件中斷請求 門描述符門描述符系統(tǒng)初始化時(shí):對系統(tǒng)初始化時(shí):對IDTIDT表中的第表中的第128128號陷阱門初始化號陷阱門初始化門描述符的門描述符的2 2、3 3兩個(gè)字節(jié):內(nèi)核代碼段選擇符兩個(gè)字節(jié):內(nèi)核代碼段選擇符 0 0、1 1、6 6、7 7四個(gè)字節(jié):偏移量(指向四個(gè)字節(jié):偏移量(指向system_call()system_call()) 類型號類型號1515(陷阱門)(陷阱門) D
54、PL DPL:3 3,與用戶級別相同,允許用戶進(jìn)程使用該門描述符,與用戶級別相同,允許用戶進(jìn)程使用該門描述符系統(tǒng)執(zhí)行系統(tǒng)執(zhí)行int $0 x80int $0 x80指令(指令(1/21/2) 由于特權(quán)級的改變,要切換內(nèi)存堆棧由于特權(quán)級的改變,要切換內(nèi)存堆棧 用戶態(tài)堆棧用戶態(tài)堆棧內(nèi)核態(tài)堆棧內(nèi)核態(tài)堆棧 CPUCPU要從任務(wù)狀態(tài)段要從任務(wù)狀態(tài)段TSSTSS中裝入新的堆棧指針中裝入新的堆棧指針(SSSSESPESP),指向內(nèi)核堆棧),指向內(nèi)核堆棧 用戶態(tài)堆棧信息(用戶態(tài)堆棧信息(SSSSESPESP)、用戶態(tài))、用戶態(tài)CS CS 、 EIPEIP、EFLAGSEFLAGS寄存器的內(nèi)容壓棧(返回用)寄存
55、器的內(nèi)容壓棧(返回用) 將將EFLAGSEFLAGS壓棧后,復(fù)位壓棧后,復(fù)位TFTF,IFIF位保持不變位保持不變系統(tǒng)執(zhí)行系統(tǒng)執(zhí)行int $0 x80int $0 x80指令(指令(2/22/2) 用用128128在在IDTIDT中找到該門描述符,從中找出段選中找到該門描述符,從中找出段選擇符裝入代碼段寄存器擇符裝入代碼段寄存器CSCS 同時(shí),將要執(zhí)行的代碼段描述符緩存在高速緩?fù)瑫r(shí),將要執(zhí)行的代碼段描述符緩存在高速緩存寄存器中存寄存器中 代碼段描述符中的基址代碼段描述符中的基址 + + 陷阱門描述符中的陷阱門描述符中的偏移量偏移量 定位定位 代碼段的入口地址代碼段的入口地址 system_ca
56、ll() system_call() 保護(hù)級檢查保護(hù)級檢查 規(guī)則:代碼只能訪問相同或較低特權(quán)級的數(shù)據(jù)規(guī)則:代碼只能訪問相同或較低特權(quán)級的數(shù)據(jù) 系統(tǒng)調(diào)用號:系統(tǒng)調(diào)用號:EAXEAX,參數(shù):,參數(shù):EBXEBX、ECXECX、EDXEDX、ESIESI、EDIEDIsystem_call()system_call()函數(shù)函數(shù)源代碼包源代碼包/Arch/x86/kernel/entry_32.S/Arch/x86/kernel/entry_32.Spushl %eaxpushl %eax #eax #eax中保存系統(tǒng)調(diào)用號中保存系統(tǒng)調(diào)用號 SAVE_ALLSAVE_ALL # #將將eses、dsd
57、s、eaxeax等等9 9個(gè)寄存器個(gè)寄存器壓棧,保存現(xiàn)場壓棧,保存現(xiàn)場GET_THREAD_INFO(%ebp)GET_THREAD_INFO(%ebp) # #獲取當(dāng)前線程信獲取當(dāng)前線程信息息testw testw $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%e$_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp)bp)jnz syscall_trace_entryjnz syscall_trace_entry # #判斷當(dāng)前線判斷當(dāng)前線程是否被調(diào)試器跟蹤,是則進(jìn)行相應(yīng)處理,程是否被調(diào)試器跟蹤,是則進(jìn)行相應(yīng)處理,使調(diào)試器能獲得系統(tǒng)調(diào)用時(shí)的信息
58、使調(diào)試器能獲得系統(tǒng)調(diào)用時(shí)的信息system_call()system_call()函數(shù)(續(xù))函數(shù)(續(xù))cmpl $(nr_syscalls), %eaxcmpl $(nr_syscalls), %eax # #判斷系統(tǒng)判斷系統(tǒng)調(diào)用號是否越界調(diào)用號是否越界jae syscall_badsysjae syscall_badsys # #越界就轉(zhuǎn)入錯(cuò)誤處越界就轉(zhuǎn)入錯(cuò)誤處理理syscall_call:syscall_call:call call * *sys_call_table(,%eax,4)sys_call_table(,%eax,4) # #在系在系統(tǒng)調(diào)用分配表統(tǒng)調(diào)用分配表(system ca
59、ll dispatch (system call dispatch table)table)中查找對應(yīng)的系統(tǒng)調(diào)用處理程序中查找對應(yīng)的系統(tǒng)調(diào)用處理程序入口地址,并轉(zhuǎn)而執(zhí)行該程序入口地址,并轉(zhuǎn)而執(zhí)行該程序系統(tǒng)調(diào)用的返回系統(tǒng)調(diào)用的返回movl %eax,PT_EAX(%esp)movl %eax,PT_EAX(%esp)# #返回值存入用戶態(tài)返回值存入用戶態(tài)eaxeax在棧中的地址在棧中的地址syscall_exit:syscall_exit:LOCKDEP_SYS_EXITLOCKDEP_SYS_EXITDISABLE_INTERRUPTS(CLBR_ANY)DISABLE_INTERRUPTS(
60、CLBR_ANY) # #關(guān)中斷關(guān)中斷TRACE_IRQS_OFFTRACE_IRQS_OFFmovl TI_flags(%ebp), %ecxmovl TI_flags(%ebp), %ecxtestw $_TIF_ALLWORK_MASK, %cxtestw $_TIF_ALLWORK_MASK, %cx # #檢查線程信息塊中檢查線程信息塊中的某些標(biāo)志位的某些標(biāo)志位jne syscall_exit_workjne syscall_exit_work # #如果有不為如果有不為0 0的則返回前還要的則返回前還要進(jìn)行相應(yīng)的處理進(jìn)行相應(yīng)的處理系統(tǒng)調(diào)用的返回(續(xù))系統(tǒng)調(diào)用的返回(續(xù))最后,執(zhí)行標(biāo)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度網(wǎng)絡(luò)安全教育與培訓(xùn)入股協(xié)議
- 社會問題與政治理論的思考試題及答案
- 2025年度飼料原料進(jìn)出口關(guān)稅減免申請合同
- 2025年度老字號店鋪轉(zhuǎn)讓定金及品牌保護(hù)合同
- 2025年度能源行業(yè)節(jié)能技術(shù)外聘專家合作協(xié)議
- 二零二五年度文化娛樂產(chǎn)業(yè)投資入股合作協(xié)議書
- 二零二五年度公司法人代持合同:涵蓋企業(yè)并購重組的全面合作協(xié)議
- 2025年度薪資調(diào)整與員工社會責(zé)任履行補(bǔ)充協(xié)議
- 2025年度高校聯(lián)合培養(yǎng)項(xiàng)目入學(xué)就讀合同
- 2025年度環(huán)保工程設(shè)計(jì)與施工聘用勞動合同
- 六年級下冊信息技術(shù) 課件-1.2無腳走天下-“啟動電機(jī)”模塊和“延時(shí)等待”模塊 清華版 (共15張PPT)
- 2022年中國通用技術(shù)集團(tuán)控股有限責(zé)任公司招聘筆試題庫及答案解析
- 間歇經(jīng)口管飼法 課件
- 導(dǎo)電膠rohs2.078中文深圳市華測檢測技術(shù)股份市浦東新區(qū)新金橋路1996號
- 9 短詩三首 生字筆順課件(共10張PPT)
- 無線射頻識別技術(shù)外文翻譯參考文獻(xiàn)
- 電力負(fù)荷曲線與用電負(fù)荷預(yù)測課件
- 鋼支撐、圍檁專項(xiàng)施工方案
- 【2021部編版語文】-四年級下冊第六單元教材解讀--PPT課件
- 壓力管道安裝許可證換證自評報(bào)告
- 起重機(jī)械定期檢驗(yàn)規(guī)則概述
評論
0/150
提交評論