版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第1章操作系統(tǒng)運行的硬件基礎(chǔ)1.1中央處理器(CPU)1.2中斷技術(shù)1.3系統(tǒng)調(diào)用1.4存儲器1.5I/O端口尋址與訪問控制1.1中央處理器(CPU)1.單處理器與多處理器系統(tǒng)一個計算機系統(tǒng)只有一個處理器,稱之為單處理器系統(tǒng)如果有多個處理器稱之為多處理器系統(tǒng)處理器由運算器、控制器、一組寄存器和高速緩存構(gòu)成。程序計數(shù)器PC指令寄存器IR處理器狀態(tài)字PSW堆棧指示器SP指令譯碼器IDI/O控制邏輯工作寄存器地址寄存器數(shù)據(jù)寄存器
ALU控制器CU1.1中央處理器(CPU)指令譯碼器ID:是控制器中的主要部件之一,分析指令操作碼,以決定執(zhí)行的操作。程序計數(shù)器PC:程序計數(shù)器是用于存放下一條指令的主存單元地址。單片機及匯編語言中常稱作PC(ProgramCounter)。程序開始執(zhí)行前,必須將它的起始地址,即程序開始執(zhí)行指令的內(nèi)存單元地址送入PCPSW:狀態(tài)寄存器,存放指令的執(zhí)行狀態(tài):CPU執(zhí)行狀態(tài)、溢出、中斷屏蔽碼等。例:32位機器的CPU寄存器2.寄存器分類兩類寄存器:用戶可見寄存器(工作寄存器):對所有程序都是可用的,包括系統(tǒng)程序和用戶程序??刂坪蜖顟B(tài)寄存器:用于控制處理器的操作,大部分對用戶不可見,由OS的特權(quán)代碼使用。1.1中央處理器(CPU)(1)用戶可見寄存器用戶程序可以訪問到的寄存器,包括數(shù)據(jù)寄存器、地址寄存器等。數(shù)據(jù)寄存器(dataregister)又稱通用寄存器,主要用于各種算術(shù)邏輯指令和訪存指令。地址寄存器(addressregister)用于存儲指令或數(shù)據(jù)的內(nèi)存地址。變址寄存器段寄存器棧指針(2)控制和狀態(tài)寄存器用于控制處理器的操作,對于用戶不可見的(用戶不可以使用)。常見的控制和狀態(tài)寄存器:程序計數(shù)器(PC:ProgramCounter),記錄將要取出的指令的地址。指令寄存器(IR:InstructionRegister),包含最近取出的指令。程序狀態(tài)字(PSW:ProgramStatusWord),記錄處理器的運行模式信息。條件碼寄存器:保存CPU操作結(jié)果的各種標記位,如算術(shù)運算產(chǎn)生的溢出、符號等等。機器指令只能通過隱式訪問來讀取該寄存器的各個位,不能顯示訪問修改。)中斷寄存器3.處理器狀態(tài)根據(jù)運行程序?qū)Y源和機器指令的使用權(quán)限,將處理器設(shè)置為不同的工作狀態(tài)。多數(shù)系統(tǒng)將處理器工作狀態(tài)劃分為內(nèi)核態(tài)和用戶態(tài):內(nèi)核態(tài):操作系統(tǒng)管理(核心)程序運行時的CPU狀態(tài),又稱為特權(quán)態(tài)、系統(tǒng)態(tài)、管態(tài)或核心態(tài)用戶態(tài):用戶程序運行時的CPU狀態(tài),又稱為普通態(tài)或目態(tài)。有些系統(tǒng)將處理器狀態(tài)劃分核心狀態(tài),管理狀態(tài)和用戶程序狀態(tài)三種。實例:x86系列CPU386、486、Pentium系列都支持4個處理器特權(quán)級別(特權(quán)環(huán):R0、R1、R2和R3)從R0到R3特權(quán)能力依次降低R0相當于雙狀態(tài)系統(tǒng)的內(nèi)核態(tài)R3相當于用戶態(tài)R1和R2則介于兩者之間,它們能夠運行的指令集合具有包含關(guān)系:各個級別有保護性檢查(地址校驗、I/O限制),并分別運行不同級別的程序:R0-運行操作系統(tǒng)核心代碼R1-運行關(guān)鍵設(shè)備驅(qū)動程序和I/O處理例程R2-運行其它受保護共享代碼,如語言系統(tǒng)運行環(huán)境R3-運行各種用戶程序現(xiàn)有基于x86處理器的操作系統(tǒng),多數(shù)UNIX、Linux以及Windows系列大都只用了R0和R3兩個特權(quán)級別實例:x86系列處理器4.特權(quán)指令和非特權(quán)指令特權(quán)指令:只能由操作系統(tǒng)內(nèi)核執(zhí)行的指令,如:I/O設(shè)備使用指令:如啟動I/O設(shè)備、測試I/O設(shè)備工作狀態(tài)、控制I/O設(shè)備動作的指令系統(tǒng)資源的分配和管理指令:包括改變系統(tǒng)工作方式,檢測用戶的訪問權(quán)限,修改主存管理的段表、頁表,清內(nèi)存和建立存儲保護指令任務(wù)的創(chuàng)建和切換指令存取特殊寄存器的指令:如存取IDTR、GDTR、LDTR、時鐘寄存器(脈沖計數(shù))等指令。非特權(quán)指令:系統(tǒng)程序和應(yīng)用程序都可以執(zhí)行的指令。在單用戶單任務(wù)的計算機系統(tǒng),可以不區(qū)分特權(quán)指令和非特權(quán)指令,一般用戶可以使用指令系統(tǒng)中的全部指令。但是,在使用多道程序設(shè)計技術(shù)的計算機系統(tǒng)必須要區(qū)分為特權(quán)指令和非特權(quán)指令(why?)內(nèi)核態(tài)和用戶態(tài)的比較處理器處于內(nèi)核態(tài)時可以執(zhí)行全部指令(包括特權(quán)指令)可使用系統(tǒng)所有資源具有改變cpu狀態(tài)的能力處理器處于用戶態(tài)時只能執(zhí)行非特權(quán)指令特權(quán)級別不同,可運行的指令集合也不同特權(quán)級別越高,可以運行的指令集合越大,高特權(quán)級別可運行指令集合包含低特權(quán)級的可運行指令。1.1中央處理器(CPU)操作系統(tǒng)內(nèi)核功能主要包括:時鐘管理:脈沖計數(shù),指令周期生成中斷機制:中斷向量表維護和中斷響應(yīng)原語:由若干條機器指令構(gòu)成,用于完成特定功能的一段程序。原語具有不可分割性,即原語在執(zhí)行過程中不允許被中斷。
由系統(tǒng)控制的數(shù)據(jù)結(jié)構(gòu)管理,如主存頁表、進程控制塊表、消息隊列、緩沖隊列等。1.1中央處理器(CPU)5.程序狀態(tài)字PSW程序狀態(tài)字(PSW):用來指示處理器執(zhí)行條件和狀態(tài)的寄存器。不同機器的PSW格式和信息不完全相同。PSW的信息一般包括:CPU工作狀態(tài)碼——指明內(nèi)核態(tài)還是用戶態(tài)。條件碼——條件碼是CPU根據(jù)運算結(jié)果由硬件設(shè)置的位(或位段),指示當前指令執(zhí)行結(jié)果的各種狀態(tài)信息,如:算術(shù)運算產(chǎn)生的正、負、零或溢出等的結(jié)果中斷屏蔽碼——指出是否允許中斷用戶態(tài)→內(nèi)核態(tài):轉(zhuǎn)換的唯一途徑是通過中斷。內(nèi)核態(tài)→用戶態(tài):通過修改PSW中的CPU工作狀態(tài)碼來實現(xiàn)。系統(tǒng)屏蔽鑰EMWP中斷碼ILCCC程序屏蔽指令地址0711153133353963例:IBM370的PSW鑰:用于存儲保護EMWP:E表示機器控制方式(同步控制、異步控制
),M表示機器校驗方式(奇偶、CRC),W表示等待狀態(tài)位,P表示處理器的工作狀態(tài)。ILC:上一次執(zhí)行指令的長度。CC:條件值。系統(tǒng)屏蔽:指出CPU是否接受特定通道的中斷(I/O設(shè)備)。程序屏蔽:指示CPU是否接受某種程序性中斷(系統(tǒng)調(diào)用)。1.2中斷技術(shù)操作系統(tǒng)是“中斷驅(qū)動”的。中斷對操作系統(tǒng)的重要性相當于機械系統(tǒng)中的驅(qū)動齒輪。中斷協(xié)調(diào)計算機系統(tǒng)對各種外部事件的響應(yīng)和處理。中斷是多任務(wù)實現(xiàn)的必要條件。什么是中斷?為什么要引入中斷?中斷是如何響應(yīng)和執(zhí)行的?為什么要引入中斷?解決主機與I/O設(shè)備并行工作的問題提高系統(tǒng)可靠性實現(xiàn)多機聯(lián)系方便應(yīng)用程序,實現(xiàn)實時控制中斷:CPU對系統(tǒng)內(nèi)外發(fā)生的異步事件的響應(yīng)過程。中斷源(中斷事件):引起中斷發(fā)生的事件。中斷處理程序:處理中斷的程序代碼,也稱中斷例程,如:鍵盤輸入除溢出錯誤的處理程序設(shè)備故障處理程序缺頁中斷處理程序等1.基本概念異步事件是指無一定時序關(guān)系隨機發(fā)生的事件。2.中斷分類(1)中斷:又稱I/O中斷或異步中斷,由來自處理器和主存之外的中斷源引起的中斷,如時鐘中斷,鍵盤中斷等來自于外部設(shè)備的中斷都屬于外中斷。外中斷是一種強迫性中斷,可屏蔽。(2)異常:也成同步中斷,應(yīng)用程序執(zhí)行過程中發(fā)生的意想不到的行為,不可屏蔽。如:非法指令或內(nèi)存出錯導(dǎo)致當前指令執(zhí)行失?。?)系統(tǒng)調(diào)用:應(yīng)用程序主動向操作系統(tǒng)發(fā)出的服務(wù)請求,是戰(zhàn)役中自愿性中斷,可同步或異步響應(yīng)。如讀文件等。3.中斷系統(tǒng)
中斷系統(tǒng)=中斷硬件+中斷軟件中斷硬件——中斷系統(tǒng)的機制部分,負責(zé)中斷掃描和響應(yīng)。在CPU初始化時設(shè)置中斷使能標志根據(jù)中斷事件設(shè)置中斷標志(獲取中斷號)訪問中斷向量表,調(diào)用相應(yīng)的中斷服務(wù)例程中斷軟件——中斷系統(tǒng)的策略部分,執(zhí)行相應(yīng)的中斷處理指令。現(xiàn)場保存中斷服務(wù)處理(中斷服務(wù)例程)清除中斷標記(中斷服務(wù)例程)現(xiàn)場恢復(fù)中斷處理過程中斷請求中斷判優(yōu)中斷響應(yīng)中斷服務(wù)中斷返回中斷硬件中斷處理程序中斷處理過程t=0t=7一一一一一一一一一一一一打印機中斷服務(wù)程序用戶程序t=40中斷響應(yīng)中斷返回(1)中斷硬件的基本功能識別中斷源:通常用一個寄存器來存儲每個中斷源的狀態(tài)信息,該寄存器的內(nèi)容稱為中斷字。斷點保護:程序計數(shù)器和PSW的內(nèi)容入棧。why?提供中斷處理程序入口地址映射表(中斷向量表)等數(shù)據(jù)結(jié)構(gòu)。非屏蔽中斷請求中斷邏輯中斷指令I(lǐng)NTn溢出中斷INT0除法錯中斷單步中斷TF=1中斷控制器8259A可屏蔽性中斷請求…INTRNMIIBM-PC中斷邏輯和中斷源示意圖(2)中斷邏輯當多個中斷源請求同時發(fā)生時,由中斷邏輯電路按中斷優(yōu)先級的高低來判定應(yīng)響應(yīng)哪個中斷請求。一次只能響應(yīng)當前優(yōu)先級最高的一個中斷。(2)中斷邏輯接受和響應(yīng)中斷源的中斷請求的方法因機器而異,在PC中:可屏蔽中斷請求INTR:來自輸入輸出設(shè)備的I/O中斷,通過對PSW中的中斷屏蔽位可以屏蔽所有的I/O中斷。不可屏蔽中斷請求:屬于機器故障中斷,包括內(nèi)存奇偶校驗錯以及掉電等中斷源產(chǎn)生的中斷。程序性中斷(如溢出、除法錯都可以引起中斷)和軟件中斷等。為了區(qū)分和不丟失中斷信號,用固定觸發(fā)器來寄存每個中斷源的中斷信號。一般規(guī)定:值為1時,表示有中斷信號,為0時表示無中斷信號。所有中斷源的觸發(fā)器組成中斷寄存器,每個觸發(fā)器對應(yīng)中斷寄存器中的一個中斷位。(3)中斷寄存器集成于CPU控制部件中,用于檢測是否有中斷發(fā)生的機構(gòu)。在每條指令執(zhí)行周期的最后時刻(中斷周期)掃描中斷寄存器,詢問是否有中斷信號。若無中斷信號,繼續(xù)執(zhí)行下一條指令;否則,中斷硬件將該中斷觸發(fā)器內(nèi)容按規(guī)定編碼送入PSW的相應(yīng)位(中斷碼)。(4)中斷掃描機構(gòu)允許中斷開始取下一條指令執(zhí)行指令停止檢查處理中斷不允許中斷中斷周期執(zhí)行周期取指周期(5)中斷響應(yīng)CPU接收到來自于不同中斷源的中斷請求后,需要及時地響應(yīng)中斷。中斷響應(yīng)是中斷硬件對中斷事件做出響應(yīng)的過程。任一時刻,CPU只能響應(yīng)一個中斷。中斷系統(tǒng)需要按照各個中斷源的優(yōu)先級,選擇具有最高優(yōu)先級的中斷進行響應(yīng),這個過程稱為中斷判優(yōu)。如何響應(yīng)當前選擇的中斷,執(zhí)行相應(yīng)的中斷服務(wù)例程?(5)中斷響應(yīng)
CPU如何響應(yīng)中斷,兩個問題:CPU何時響應(yīng)中斷?通常在CPU執(zhí)行了一條指令以后,更確切地,在指令周期最后時刻掃描中斷寄存器,接受中斷請求。如何獲知提出中斷請求的設(shè)備或中斷源?用軟件指令去查詢各設(shè)備接口,比較費時(非向量中斷)。使用“中斷向量表”(向量中斷)。非向量中斷:總是轉(zhuǎn)向中斷查詢程序的入口地址,執(zhí)行終端查詢程序,以確定被優(yōu)先批準的中斷源,然后分支進入相應(yīng)的中斷服務(wù)程序。每個中斷有一個唯一的中斷向量號(通常為中斷類型號)。中斷向量號通常按照從小到大的順序存放在中斷向量表中。中斷向量表一般存放在主存儲器的固定區(qū)域中。(6)中斷向量(6)中斷向量…向量地址…排隊器輸出
顯示器服務(wù)程序
打印機服務(wù)程序JMP400JMP300JMP200…………主存12H13H14H200300向量地址入口地址入口地址設(shè)備編碼器1000…000100100100…00010011由硬件產(chǎn)生中斷向量地址,再由中斷向量地址找到中斷服務(wù)程序的入口地址。例:8088的中斷向量表255號向量
…
32號向量31號向量
5號向量
4號向量(溢出)3號向量(斷點)2號向量(NMI)
1號向量(單步)
0號向量(除法錯)
…003FFH003FCH00080H0007CH00014H
00012H
0000CH
00008H
00004H
00000H
專用
中斷向量(5個)系統(tǒng)保留
中斷向量(27個)用戶可用
中斷向量(224個)8088系統(tǒng)的中斷向量表占用了系統(tǒng)主存最低端的1KB的空間,共存儲了256個中斷向量(7)中斷處理過程中斷源發(fā)出一個中斷信號CPU完成當前指令的執(zhí)行,掃描中斷信號CPU發(fā)送中斷應(yīng)答信號CPU將PSW、IP和CS壓入棧中(斷點)保存剩余的處理器狀態(tài)信息恢復(fù)中斷前的PSW、IP和CS開中斷處理中斷中斷服務(wù)程序的入口地址送入IP和CS硬件操作中斷處理子程序關(guān)閉中斷恢復(fù)處理器狀態(tài)信息中斷隱指令----CPU響應(yīng)中斷之后,經(jīng)過某些操作轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,這些操作是由硬件直接實現(xiàn),稱為中斷隱指令。中斷隱指令是指不在指令系統(tǒng)中的指令,其功能包括保護程序斷點、硬件關(guān)中斷、向量地址送PC(硬件向量法)或中斷識別程序入口地址送PC(軟件查詢法)。例:匯編中int指令的執(zhí)行過程CPU執(zhí)行intn指令,相當于引發(fā)一個n號中斷的中斷過程,執(zhí)行過程如下:(1)取中斷類型碼n;(2)標志寄存器入棧,IF=0,TF=0;/*IF=0CPU關(guān)閉中斷;TF單步調(diào)試標記,TF=0機器處在連續(xù)工作方式*/(3)CS、IP入棧;(4)(IP)=(n*4),(CS)=(n*4+2)。IPCS低高5.多級中斷(多重中斷)多數(shù)微型CPU支持多級中斷系統(tǒng),可以有多根中斷請求線(級)從不同設(shè)備連接到中斷邏輯電路上。具有相同特性和優(yōu)先級的設(shè)備可連到同一中斷級上,由中斷排隊器(硬件)決定當前響應(yīng)哪個中斷源。在多級中斷系統(tǒng)中,可能同時有多個中斷請求,這時CPU接受中斷優(yōu)先級最高的中斷,忽略較低優(yōu)先級的中斷。高優(yōu)先級的中斷可以打斷低優(yōu)先級的中斷。例:假設(shè)某系統(tǒng)中有兩個設(shè)備:打印機和磁盤,它們的中斷優(yōu)先級分別為2和4,若打印機的中斷請求先到達,且打印機中斷服務(wù)程序在運行過程中,來了一個磁盤中斷請求。t=0t=7t=15一一一一一一一一一一一一一一一一一一一磁盤中斷服務(wù)程序打印機中斷服務(wù)程序用戶程序t=25t=40產(chǎn)生的中斷嵌套如下圖:1.3系統(tǒng)調(diào)用1.為什么要引入系統(tǒng)調(diào)用功能?只有操作系統(tǒng)內(nèi)核執(zhí)行特權(quán)指令,訪問操作系統(tǒng)內(nèi)核數(shù)據(jù)。在多任務(wù)系統(tǒng)中,程序的運行空間分為用戶空間和內(nèi)核空間,它們在邏輯上是相互隔離的,用戶程序不能訪問內(nèi)核數(shù)據(jù),也無法訪問內(nèi)核函數(shù)。系統(tǒng)調(diào)用是操作系統(tǒng)服務(wù)的編程接口,應(yīng)用程序通過系統(tǒng)調(diào)用可以進入內(nèi)核態(tài),調(diào)用內(nèi)核函數(shù),訪問內(nèi)核數(shù)據(jù)。系統(tǒng)調(diào)用依賴于計算機硬件,一般用匯編代碼編寫,并以庫函數(shù)形式提供給應(yīng)用程序(如C語言程序)使用。所有的庫函數(shù)都是系統(tǒng)調(diào)用嗎?1.3系統(tǒng)調(diào)用2.什么是系統(tǒng)調(diào)用?系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核提供的用于實現(xiàn)各種系統(tǒng)功能的一組子程序(用戶程序?qū)Σ僮飨到y(tǒng)內(nèi)核模塊的調(diào)用):應(yīng)用程序通過系統(tǒng)調(diào)用訪問系統(tǒng)硬件和其他操作系統(tǒng)資源,如:外存文件與目錄的讀寫。各種I/O設(shè)備的使用在一個應(yīng)用程序中啟動另一個應(yīng)用程序查詢和統(tǒng)計系統(tǒng)資源使用情完成對硬件和資源的訪問控制。硬件設(shè)備的抽象(提供設(shè)備獨立性)。例:UNIX/Linux的系統(tǒng)結(jié)構(gòu)系統(tǒng)調(diào)用接口通過庫把函數(shù)調(diào)用映射成進入操作系統(tǒng)核心所需要的原語。POSIX(PortableOperatingSystemInterface))中的進程和文件管理的主要系統(tǒng)調(diào)用例2:LINUX系統(tǒng)調(diào)用簡介已經(jīng)提到的系統(tǒng)調(diào)用fork(),exec(),open(),read(),write(),close()…Linux系統(tǒng)調(diào)用有二百五十多個應(yīng)用程序及系統(tǒng)調(diào)用的層次關(guān)系應(yīng)用程序C庫(libc.a)系統(tǒng)調(diào)用 調(diào)用printf(){}write(){}printf(…);write(){}
系統(tǒng)調(diào)用與普通的函數(shù)調(diào)用很相似,但普通函數(shù)調(diào)用不能引起進程從用戶態(tài)到核心態(tài)的轉(zhuǎn)換。這個過程是如何實現(xiàn)的呢?中斷??!應(yīng)用程序?qū)Σ僮飨到y(tǒng)的間接調(diào)用過程嵌入形成…A=A+1printf(…)B=B+A……INT…A=A+1…INT…B=B+A…IN…OUT…用戶程序段源程序段目標代碼printf的操作系統(tǒng)內(nèi)核代碼庫函數(shù)printf目標代碼陷入指令系統(tǒng)調(diào)用的實現(xiàn)LINUX系統(tǒng)調(diào)用加載操作系統(tǒng)加載時與系統(tǒng)調(diào)用有關(guān)的處理(int
80h是unix/linux類操作系統(tǒng)內(nèi)核在Intel
CPU架構(gòu)上作為系統(tǒng)調(diào)用使用的中斷號
)int80h中斷處理程序地址的加載start_kernel()->trap_init()//硬件中斷向量初始函數(shù)->set_system_gate(SYSCALL_VECTOR.&system_call)//參見http://lxr.linux.no各系統(tǒng)調(diào)用處理程序的加載系統(tǒng)調(diào)用總控程序System_call在Entry.S中(arch/i386/kernel)系統(tǒng)調(diào)用表在啟動時加載(unistd.h中定義系統(tǒng)調(diào)用號)系統(tǒng)一般都配置有特定指令,使進程的執(zhí)行由用戶態(tài)轉(zhuǎn)換為核心態(tài),這種指令通常稱作陷入(trap)指令。進程通過執(zhí)行陷入指令,便可進入核心態(tài)運行系統(tǒng)調(diào)用代碼。Linux的x86平臺上的這條陷入指令是int0x80h.LINUX系統(tǒng)調(diào)用實現(xiàn)原理
||------>|SystemCalli|訪問設(shè)備|||[sys_read()]|...i=3||||system_call(i)|--------||訪問內(nèi)部函數(shù)[read()]|||...j=20|||system_call(j)|--------||[get_pid()]||||...|------->|SystemCallj|訪問內(nèi)核數(shù)據(jù)結(jié)構(gòu)||[sys_getpid()]|LINUX系統(tǒng)調(diào)用實現(xiàn)代碼1int80hin2.4.x202ENTRY(system_call)203pushl%eax #saveorig_eax,eax存放系#統(tǒng)調(diào)用序號204SAVE_ALL205GET_CURRENT(%ebx)206testb$0x02,tsk_ptrace(%ebx)#PT_TRACESYS207jnetracesys208cmpl$(NR_syscalls),%eax209jaebadsys210call*SYMBOL_NAME(sys_call_table)(,%eax,4)211movl%eax,EAX(%esp)#savethereturnvalue212ENTRY(ret_from_sys_call)#define_syscall0(type,name)\298typename(void)\299{\300long__res;\301__asm__volatile("int$0x80"\302:"=a"(__res)\303:""(__NR_##name));\304__syscall_return(type,__res);\305}_syscall0(int,fork)intfork(void){ “int80with_NR_fork”//2}LINUX系統(tǒng)調(diào)用實現(xiàn)_syscall0代碼系統(tǒng)調(diào)用與普通的函數(shù)調(diào)用過程很相似,只是被調(diào)用的代碼是操作系統(tǒng)核心代碼,需要在核心態(tài)下運行。
2.系統(tǒng)調(diào)用處理過程read(fd,buffer,nbytes)的系統(tǒng)調(diào)用過程內(nèi)核空間保存現(xiàn)場和相關(guān)參數(shù),執(zhí)行系統(tǒng)調(diào)用處理程序根據(jù)系統(tǒng)調(diào)用號和系統(tǒng)調(diào)用表,獲得系統(tǒng)調(diào)用處理程序的入口地址陷入內(nèi)核Trap把read系統(tǒng)調(diào)用號存放到寄存器中返回調(diào)用者參數(shù)fd,buffer,nbytes入棧調(diào)用read的用戶程序庫過程read用戶空間調(diào)用庫過程read系統(tǒng)調(diào)用與函數(shù)調(diào)用的不同系統(tǒng)調(diào)用和函數(shù)庫的關(guān)系系統(tǒng)調(diào)用能引起進程從用戶態(tài)到核心態(tài)的轉(zhuǎn)換,普通函數(shù)調(diào)用不能。函數(shù)庫中的函數(shù)可以不調(diào)用系統(tǒng)調(diào)用程序,也可以調(diào)用多個系統(tǒng)調(diào)用。高級編程也可以直接使用系統(tǒng)調(diào)用中斷(如,int0x80h)進入系統(tǒng)調(diào)用,而不必通過函數(shù)庫作為中介。在核心編程可以使用系統(tǒng)調(diào)用中斷進入系統(tǒng)調(diào)用,此時不能使用函數(shù)庫。3.系統(tǒng)調(diào)用表系統(tǒng)調(diào)用表記錄了所有系統(tǒng)調(diào)用處理函數(shù)的入口地址,通過系統(tǒng)調(diào)用號查看系統(tǒng)調(diào)用表就能獲得相應(yīng)的內(nèi)核函數(shù)入口地址。與中斷一樣,每個系統(tǒng)調(diào)用都擁有一個唯一的系統(tǒng)調(diào)用號。系統(tǒng)調(diào)用通常是通過特殊的硬件指令和中斷來實現(xiàn)的。操作系統(tǒng)通常用一個或少數(shù)幾個中斷號來映射系統(tǒng)中所有的系統(tǒng)調(diào)用。如Linux系統(tǒng)使用0x80號中斷作為所有系統(tǒng)調(diào)用的入口;i386的Windows系統(tǒng)使用0x2E號中斷作為大多數(shù)系統(tǒng)調(diào)用的入口。ENTRY(sys_call_table).longSYMBOL_NAME(sys_ni_syscall).longSYMBOL_NAME(sys_exit).longSYMBOL_NAME(sys_fork).longSYMBOL_NAME(sys_read).longSYMBOL_NAME(sys_write)......Linux的系統(tǒng)調(diào)用表4.應(yīng)用程序使用操作系統(tǒng)的方式三種:系統(tǒng)調(diào)用中斷獨立程序(不以任何方式使用操作系統(tǒng),包括啟動和結(jié)束。)存儲器層次主存儲器與MMU高速緩存磁盤存儲器1.4存儲器系統(tǒng)寄存器高速緩存主存磁盤光盤磁帶板上存儲器板外存儲器1.存儲器層次容量速度,價格2.主存儲器與MMU(1)主存儲器主存是主板上的一種存儲部件,是CPU可以直接訪問的唯一的大容量存儲區(qū)域。CPU訪問的指令和數(shù)據(jù)必須存放在的主存中。字節(jié)是主存的最小編址單位,主存由一個存儲字的陣列組成,每個字由一個唯一的地址。為簡化主存的分配和管理,現(xiàn)代計算機系統(tǒng)通常把主存儲器分成若干個存儲塊,并以存儲塊作為主存分配單位。(2)存儲訪問的局部性原理存儲器訪問局部性是引入多層次存儲器系統(tǒng)的重要基礎(chǔ),表現(xiàn)為時間局部性和空間局部性。程序執(zhí)行時,通常會有循環(huán)和子程序調(diào)用,一旦進入這樣的程序段,就會重復(fù)存取相同的指令集合。數(shù)據(jù)存取也有局部性。如訪問一個較大規(guī)模的數(shù)組,在較短的時間內(nèi),數(shù)據(jù)的讀取穩(wěn)定地保持在存儲器的一個局部區(qū)域內(nèi)。2.主存儲器與MMU(3)存儲保護為使多個程序同時運行時在主存空間上互不侵犯,需要對主存中的信息加以嚴格保護。常用的存儲保護方式有兩種:地址寄存器(界限寄存器)存儲鍵2.主存儲器與MMU(1)界地址寄存器(界限寄存器)界地址寄存器是廣泛使用的一種存儲保護技術(shù)。通過在CPU中設(shè)置一對界限寄存器:下限寄存器和上限寄存器,來存放用戶作業(yè)在主存中的下限地址和上限地址。每當CPU要訪問主存,硬件自動將被當前訪問地址與界限寄存器的內(nèi)容進行比較,以判斷是否越界,如果未越界,則按此地址訪問主存,否則將產(chǎn)生越界中斷——越界中斷(存儲保護中斷)。也可將界地址寄存器中的一個寄存器作為基址寄存器,另一寄存器作為限長寄存器(指示存儲區(qū)長度)。界地址寄存器存儲保護技術(shù)(2)存儲鍵每個存儲塊分配一個由二進位組成的存儲保護鍵。作業(yè)被允許進入主存時,OS分為它分配一個唯一的存儲鍵號。分配給作業(yè)存儲塊的存儲鍵與作業(yè)的存儲鍵號相同。運行一個作業(yè)時,OS將當前作業(yè)的存儲鍵號存入PSW的存儲鍵(“鑰匙”)域中。當CPU訪問主存時,將該主存塊的存儲鍵與PSW中的“鑰匙”進行比較,如果匹配,則允許訪問,否則,拒絕并報警。(3)MMUMMU(MemoryManagementUnit,主存管理單元)是CPU中用來管理虛擬存儲器、物理存儲器的控制線路,負責(zé)將虛擬地址映射為物理地址的硬件部件。由CPU位數(shù)決定的地址范圍稱為虛擬地址空間。大多數(shù)時候計算機系統(tǒng)的物理地址空間只是虛擬地址空間的一個子集。如,256M的32bitx86的機器,其虛擬地址空間是0~0xFFFFFFFF,而物理地址空間是0x000000000~0x0FFFFFFF。在使用了虛擬存儲器的計算機系統(tǒng)中,虛擬地址不是被直接送到主存地址線上,而是送到MMU,由MMU將虛擬地址映射為物理地址。2.
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 46900-2025系統(tǒng)與軟件工程低代碼開發(fā)平臺通用技術(shù)要求
- 壓縮機及配件公司安全管理責(zé)任制度
- 不等式多項式題目及答案
- 高考題目往年真題及答案
- 養(yǎng)老院安全管理制度
- 辦公室公務(wù)接待與禮儀制度
- 金螳螂工地現(xiàn)場制度
- 床旁交接護理的評估方法
- 未來農(nóng)業(yè)科技對糧食安全的影響研究
- 前端開發(fā)流程及框架選擇指南
- 新疆環(huán)保行業(yè)前景分析報告
- 2025~2026學(xué)年福建省泉州五中七年級上學(xué)期期中測試英語試卷
- 聯(lián)合辦公合同范本
- 2025年生物多樣性保護與生態(tài)修復(fù)項目可行性研究報告
- 2025年黑龍江省檢察院公益訴訟業(yè)務(wù)競賽測試題及答案解析
- 等離子切割技術(shù)應(yīng)用要點
- 一氧化碳中毒救治課件
- 廣東事業(yè)單位歷年考試真題及答案
- 《會計信息化工作規(guī)范》解讀(楊楊)
- 工程機械設(shè)備租賃服務(wù)方案投標文件(技術(shù)方案)
- 37000DWT-近海散貨船-船舶建造檢驗項目表
評論
0/150
提交評論