版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Linux操作系統(tǒng)分析與實踐
第二講:計算機系統(tǒng)硬件基礎(chǔ)
《Linux標作系就合新寫實踐》錦程毫世小姐
讓京大考
二零零,?耳未等
*致謝:感謝Intel對本課程項目的賽助
S"Q孝
本講主要內(nèi)袞
中央處理器(CPU)
存儲系統(tǒng)
中斷機制
I/O系統(tǒng)
時鐘以及時鐘隊列
Linux啟動過程
SMP及多核技術(shù)
繆北Q、芽
操作系統(tǒng)的硬件環(huán)境
討論操作系統(tǒng)對運行硬件環(huán)境的要求
討論操作系統(tǒng)設(shè)計者考慮的硬件問題
?中央處理器(CPU)
?存儲系統(tǒng)
?中斷機制
?I/O系統(tǒng)
?時鐘以及時鐘隊列
圖此Q孚
一、概述
任何系統(tǒng)軟件都是硬件功能的延伸
操作系統(tǒng)直接依賴于硬件條件
OS的硬件環(huán)境以較分散的形式同各種管理
相結(jié)合
實現(xiàn)操作系統(tǒng)時必須理解的
計算機基本結(jié)構(gòu)
操作系統(tǒng)管理的重要資源
計算機系統(tǒng)的組成
..計..篝機系統(tǒng)JI
硬件系統(tǒng)I軟件系統(tǒng)I
、
t系
中央處理器(CPU)
專門設(shè)計了一系列基本機制:
-具有特權(quán)級別的處理器狀態(tài),能在不同
特權(quán)級運行的各種特權(quán)指令
-硬件機制使得OS可以和普通程序隔離
實現(xiàn)保護和控制
圖此Q孚
處理器由運算器、控制器、一系列的寄
存器以及高速緩存構(gòu)成
?運算器實現(xiàn)指令中的算術(shù)和邏輯運算,是
計算機計算的核心
?控制器負責控制程序運行的流程,包括取
指令、維護CPU狀態(tài)、CPU與內(nèi)存的交互等
等圖此Q孚
?寄存器是指令在CPU內(nèi)部作處理的過程中暫存數(shù)據(jù)、
地址以及指令信息的存儲設(shè)備
在計算機的存儲系統(tǒng)中它具有最快的訪問速度
-高速緩存處于CPU和物理內(nèi)存之間
一般由控制器中的內(nèi)存管理單元(MMU:Memory
ManagementUnit)管理
訪問速度快于內(nèi)存,低于寄存器
利用程序局部性原理使得高速指令處理和低速內(nèi)存
訪問得以匹配,從而提高CPU的效率榛比/j,改
處理器中的寄存器
?寄存器提供了一定的存儲能力
?速度比主存快得多
?造價高,容量一般都很小
兩類寄存器:
?用戶可見寄存器,高級語言編譯器通過算法分
配并使用之,以減少程序訪問主存次數(shù)
?控制和狀態(tài)寄存器,用于控制處理器的操作
由OS的特權(quán)代碼使用,以控制其他程序的執(zhí)行
用戶可見寄存器
?機器語言直接引用
?包括數(shù)據(jù)寄存器、地址寄存器以及條件碼寄存器
?數(shù)據(jù)寄存器(dataregister)又稱通用寄存器
主要用于各種算術(shù)邏輯指令和訪存指令
?地址寄存器(addressregister)用于存儲數(shù)據(jù)及
指令的物理地址、線性地址或者有效地址,用于
某種特定方式的尋址。如indexregister
segmentpointer、stackpointer
?條件碼寄存器保存CPU操作結(jié)果的各種標記位
如算松算產(chǎn)生的溢出、符號等為
JbQ、孽
控制和狀杰寄存器
?用于控制處理器的操作
?大部分對于用戶是不可見的
?一部分可以在某種特權(quán)模式(由OS使用)下訪問
常見的控制和狀態(tài)寄存器:
?程序計數(shù)器(PC:ProgramCounter),記錄將要取出的
指令的地址
?指令寄存器(IR:InstructionRegister),包含最近取出的
指令
?程序狀態(tài)字(PSW:ProgramStatusWord),記錄處理器
的運行模式信息等等
1.2.特權(quán)指令和非特權(quán)指令
特權(quán)指令:只能由操作系統(tǒng)使用的指令
?使用多道程序設(shè)計技術(shù)的計算機指令系統(tǒng)必須要區(qū)
分為特權(quán)指令和非特權(quán)指令
?處理器通過特殊的機制將處理器狀態(tài)切換到操作系
統(tǒng)運行的特權(quán)狀態(tài)(管態(tài))
?CPU如何知道當前運行的是操作系統(tǒng)還是一般應用
軟件?有賴于處理器狀態(tài)的標識
V爹北林學
1.3.處理器的狀態(tài)
根據(jù)運行程序?qū)Y源和機器指令的使用權(quán)限將處理器設(shè)
置為不同狀態(tài)
多數(shù)系統(tǒng)將處理器工作狀態(tài)劃分為管態(tài)和目態(tài)
管態(tài):操作系統(tǒng)管理程序運行的狀態(tài),較高的特權(quán)級別,
又稱為鼻權(quán)態(tài)(特態(tài))、核心態(tài)、系統(tǒng)態(tài)
目態(tài):用戶程序運行時的狀態(tài),較低的特權(quán)級別,又稱
為普通態(tài)(普態(tài))、用戶態(tài)
有些系統(tǒng)將處理器狀態(tài)劃分核心狀態(tài)、管理狀態(tài)和用
戶程序狀態(tài)(目標狀態(tài))三種
圖此Q培
實例:x86系列處理器(1)
?386、486、Pentium系列都支持4個處理器特權(quán)
級別(特權(quán)環(huán):RO、RI、R2*R3)
?從R0到R3特權(quán)能力依次降低
?R0相當于雙狀態(tài)系統(tǒng)的管態(tài)
?R3相當于目態(tài)
?R1和R2則介于兩者之間,它們能夠運行的指
令集合具有包含關(guān)系:
【R03/RI2IR22IR3
圖此Q孚
實例:x86系列處理器(2)
各個級別有保護性檢查(地址校驗、I/O限制)
特權(quán)級別之間的轉(zhuǎn)換方式不盡相同
四個級別運行不同類別的程序:
?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系歹4大都只用了R0和R3兩個特權(quán)級別
14程序狀態(tài)字PSW
(ProgramStatusWord)
在PSW中專門設(shè)置一位,根據(jù)運行程序使用指令
的權(quán)限而設(shè)置CPU狀態(tài)
?CPU的工作狀態(tài)碼——指明管態(tài)還是目態(tài),用來
說明當前在CPU上執(zhí)行的是操作系統(tǒng)還是一般用
戶,從而決定其是否可以使用特權(quán)指令或擁有其
他的特殊權(quán)力
?條件碼一反映指令執(zhí)行后的結(jié)果特征
?中斷屏蔽碼——指出是否允許中斷
圖此Q孚
例:微處理器M68000的程序狀態(tài)享
1111119876543210
543210
IT聊I岫S唧唧唧唧口I"I。唧唧唧螂X|N|Z1
條件位:
C:進位標志位V:溢出標志位
Z:結(jié)果為零標志位N:結(jié)果為負標志位
10-12:三位中斷屏蔽位
S:CPU狀態(tài)標志位,為1處于管態(tài),為0處于目態(tài)
T:陷阱(Trap)中斷指示位為1,
在下一條指令執(zhí)行后引起自陷中斷
械處理器Pentium的程序狀忠孝
31222120191817161514131211109876543210
VV
IAVRN100D1TSZApc
11A0U041
DCMFTPLFFFFFFFFF
PF
CF:進位標志位標準條件位:
ZF:結(jié)果為零標志位TF:陷阱標志位
SF:符號標志位IF:中斷允許(中斷屏蔽)標志位
OF:溢出標志位VIF:虛擬中斷標志位
VIP:虛擬中斷待決標志位
IOPL:IO特權(quán)級別
圖此Q孚
CPU狀忠的轉(zhuǎn)換
目態(tài)f管態(tài)
唯一途徑是中斷
管態(tài)f目態(tài)
設(shè)置PSW(修改程序狀態(tài)字)可實現(xiàn)
二,存儲系統(tǒng)
支持OS運行硬件環(huán)境的一個重要方面:
?作業(yè)必須把它的程序和數(shù)據(jù)存放在內(nèi)存中才能運行
?多道程系統(tǒng)中,若干個程序和相關(guān)的數(shù)據(jù)要放入內(nèi)存
操作系統(tǒng)要管理、保護程序和數(shù)據(jù),使它們不至于受
到破壞
?操作系統(tǒng)本身也要存放在內(nèi)存中并運行
圖此Q孚
2.L存儲器的類型
半導體存儲器實現(xiàn)內(nèi)存
?存儲器芯片的內(nèi)部組織結(jié)構(gòu)
?靜態(tài)存儲器(SRAM)
?異步動態(tài)隨機存儲器(DRAM)
?同步動態(tài)隨機存儲器(SDRAM)
>雙倍數(shù)據(jù)速率SDRAM(DDRSDRAM)(開放標準)
ARambus公司的SDRAM
存儲器的類型
只讀型存儲器
?ROM(Read-OnlyMemory):只能從其中讀取數(shù)據(jù),但不
能隨意用普通方法寫入數(shù)據(jù)(寫入數(shù)據(jù)只能用特殊方法)
-在微機中,一些常駐內(nèi)存的模塊以微程序形式固化在
ROM中,如:PCBIOS和CBASIC解釋程序被固化于ROM
?PROM:可編程只讀存儲器,使用特殊PROM寫入器寫入數(shù)
據(jù)
?EPROM:電可擦寫可編程只讀存儲器,用特殊的紫外線光
照射此芯片,以“擦去”信息,恢復原來狀態(tài),再使用特殊
EPROM寫入器寫入數(shù)據(jù)
?閃存(flashmemory)片
2.2.存儲器的層次結(jié)構(gòu)
存儲系統(tǒng)設(shè)計三個問題:
容量、速度和成本
?容量:需求無止境
?速度:能匹配處理器的速度
?成本問題:成本和其他部件相比應在合適范圍之內(nèi)
容量、速度和成本
?三個目標不可能同時達到最優(yōu),要作權(quán)衡
?存取速度快,每比特價格高
?容量大,每比特價格越低,同時存取速度也越慢
解決方案:采用層次化的存儲體系結(jié)構(gòu)
?當沿著層次下降時
?每比特的價格將下降,容量將增大
?速度將變慢,處理器的訪問頻率也將下降
卷此Q厚
層次彳七的存儲體系結(jié)構(gòu)
TypicalaccesstimeTypicalcapacity
1nsecRegisters<1KB
2nsecCache1MB
10nsecMainmemory64-512MB
10msecMagneticdisk5-50GB
100secMagnetictape20-100GB
存儲訪問局部性原理
提高存儲系統(tǒng)效能關(guān)鍵點:程序存儲訪問局部性原理
?程序執(zhí)行時,有很多的循環(huán)和子程序調(diào)用,一旦進入
這樣的程序段,就會重復存取相同的指令集合
?對數(shù)據(jù)存取也有局部性,在較短的時間內(nèi),穩(wěn)定地保
持在一個存儲器的局部區(qū)域
處理器主要和存儲器的局部打交道
在經(jīng)過一段時間以后,使用的代碼和數(shù)據(jù)集合會改變
23、存儲分塊
?存儲最小單位:,,二進位”,包含信息為o或1
?最小編址單位:字節(jié),一個字節(jié)包含八個二進位
主流個人電腦
-主存:128MB?512MB之間
-輔助存儲器:在20GB?70GB
工作站、服務(wù)器
-主存:512MB?4GB之間
-硬盤容量:數(shù)百GB
為簡化分配和管理,存儲器分成塊,稱一個物理頁(Page)
?塊的大小:512B、IK.4K、8K
2.4.存儲保護設(shè)施
對主存中的信息加以嚴格的保護,使操作系統(tǒng)及其
他程序不被破壞,是其正確運行的基本條件之一
多用戶,多任務(wù)操作系統(tǒng):
os給每個運行進程分配一個存儲區(qū)域
問題:
?多個程序同時在同一臺機器上運行,怎樣才能互不
侵犯?
?如何處理重定位?
保護的硬件支持
解決方案依賴于配有特殊硬件的CPU
硬件可提供如下功能:
?界地址寄存器(界限寄存器)
?存儲鍵
?地址轉(zhuǎn)換機制
圖此Q孚
界地址寄存器(界喔寄存器)
?界地址寄存器被廣泛使用的一種存儲保護技術(shù)
?機制比較簡單,易于實現(xiàn)
實現(xiàn)方法:
?在CPU中設(shè)置一對下限寄存器和上限寄存器
存放用戶作業(yè)在主存中的下限和上限地址
?也可將一個寄存器作為基址寄存器,另一寄存器作為
限長寄存器(指示存儲區(qū)長度)
?每當CPU要訪問主存,硬件自動將被訪問的主存地址與
界限寄存器的內(nèi)容進行比較,以判斷是否越界
?如果未越界,則按此地址訪問主存,否則將產(chǎn)生程序
中斷——越界中斷(存儲保護中斷)
Registers
when
program2
isrunning
Registers
y-Limit-2
when
program1User-2data
isrunningy—Base-2
Limit-?^
Base-2、User-1data
?一‘Lirnii-1
Limit-1Userprogram
Odoc-1.y—Base-1
Operating
System
界地址寄存器(b)
存儲保護技術(shù)鎏業(yè)Q、芽
存儲鍵
?每個存儲塊有一個由二進位組成的存儲保護鍵
?一用戶作業(yè)被允許進入主存,OS分給它一個唯
一的存儲鍵號
?并將分配給該作業(yè)各存儲塊存儲鍵也置成同樣
鍵號
?當OS挑選該作業(yè)運行時,OS將它的存儲鍵號放
入程序狀態(tài)字PSW存儲鍵(“鑰匙”)域中
?每當CPU訪問主存時,都將該主存塊的存儲鍵
與PSW中的“鑰匙”進行比較
?如果相匹配,則允許訪問,否則,拒絕并報警
地址轉(zhuǎn)換機制
同時有多個程序在內(nèi)存
程序在內(nèi)存的位置不是固定的而是隨機
的
用戶程序A用戶程序B
總線
物理地址
MMU:內(nèi)存管理單元
舞北Q、步
地址轉(zhuǎn)換機制
?虛擬地址(邏輯地址)
處理器生成的指令或數(shù)據(jù)的二進制地
址
?這些地址用硬件和軟件結(jié)合的方法轉(zhuǎn)換
成物理地址
?MMU:內(nèi)存管理單元,一種特殊硬件,
完成轉(zhuǎn)換工作
圖此Q孚
三、中新技術(shù)
中斷對于操作系統(tǒng)的重要性
就像機器中的驅(qū)動齒輪一樣
所以有人把操作系統(tǒng)稱為是由
“中斷驅(qū)動”或者“(中斷)事件驅(qū)動”
?它使得OS可以捕獲用戶程序發(fā)出的系統(tǒng)功能調(diào)用
-及時處理設(shè)備的中斷請求
?防止用戶程序中破壞性的活動等等
卷此2手
3.L中新的概念
?CPU對系統(tǒng)發(fā)生的某個事件作出的一種反應
?CPU暫停正在執(zhí)行的程序,保留現(xiàn)場后轉(zhuǎn)
去執(zhí)行相應事件的處理程序,處理完成后返回
斷點,繼續(xù)執(zhí)行被打斷的程序
特點:
引入中斷的目的
?解決主機與外設(shè)的并1)中斷隨機的
行工作問題2)中斷是可恢復的
?實現(xiàn)實時控制3)中斷是自動處理的
中斷的概念
指系統(tǒng)發(fā)生某個異步/同步事件后,處
理機暫停正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行處理該事件程
序的過程
為了開發(fā)CPU和通道(或設(shè)備)之間的
并行操作,當CPU啟動通道(或設(shè)備)進行輸入/輸
出后,通道便(或設(shè)備)可以獨立工作了,CPU也可
以轉(zhuǎn)去做與此次輸入/輸出不相關(guān)的事情,那么通
道(或設(shè)備)輸入/輸出完成后,還必須告訴CPU繼
續(xù)輸入/輸出以后的事情,通道(或設(shè)備)通過向
CPU發(fā)中斷告訴CPU此次輸入/輸出結(jié)%Ja
中斷的概念
用于表示CPU執(zhí)行指令時本身出現(xiàn)算術(shù)
溢Mill出、零做除數(shù)、取數(shù)時的奇偶錯,訪存指令越
界或就是執(zhí)行了一條所謂“異常指令”(用于實
現(xiàn)系統(tǒng)調(diào)用)等情況,這時中斷當前的執(zhí)行流程,
轉(zhuǎn)到相應的錯誤處理程序或異常處理程序
最早中斷和異常并沒有區(qū)分,都把它們叫
做中斷。隨著它們的發(fā)生原因和處理方式的差別
愈發(fā)明顯,才有了以后的中斷和異常
中斷的概念
“I/O中斷
「中斷(外中斷)乂
時鐘中斷
廣義中斷「系統(tǒng)調(diào)用
缺頁異常
異常(內(nèi)中斷)《斷點指令
例外其他程序性異常
〔(如算術(shù)溢出等)
中斷(狹義)與異常的區(qū)別:
中斷:與正執(zhí)行指令無關(guān),可以屏蔽
異常:與正執(zhí)行指令有關(guān),不可屏蔽
圖此Q孚
3.2,中斷?統(tǒng)
中斷系統(tǒng)是現(xiàn)代計算機系統(tǒng)的核心機制之一
硬件和軟件相互配合、相互滲透而使得計算機系統(tǒng)得以
充分發(fā)揮能力的計算模式
中斷系統(tǒng)的兩大組成部分:硬件中斷裝置和軟件中斷處
理程序
■中斷系統(tǒng)的硬件中斷裝置-中斷系統(tǒng)的機制部分
負責捕獲中斷源發(fā)出的中斷請求,以一定方式響應
中斷源,然后將處理器控制權(quán)交給特定的中斷處理程
?軟件中斷處理程序-中斷系統(tǒng)的策略部分
負責辨別中斷類型并做出相應的操作
參2孝
集畛、中新優(yōu)先級和中斷屏蔽
中斷優(yōu)先級設(shè)計原則:一般來說,高速設(shè)備的中
斷優(yōu)先級高,慢速設(shè)備的中斷優(yōu)先級低。因為高
速設(shè)備的中斷被處理機優(yōu)先響應時,可以讓處理
機盡快地向它發(fā)出下一個I/O請求,提高高速設(shè)備
的利用率
圖此Q孚
沖新優(yōu)先級和中新屏蔽
處理機優(yōu)先級:指出處理機正運行程序的中斷響
應級別。即當處理機處于某一優(yōu)先級時,只允許
處理機去響應比該優(yōu)先級高的中斷,而屏蔽低于或
等于該優(yōu)先級的中斷。可以通過置處理機優(yōu)先級
來通知硬件:屏蔽優(yōu)先級小于等于處理機優(yōu)先級
的中斷
中斷屏蔽:指禁止處理機響應中斷或禁止中斷出
現(xiàn)
參北2步
中新優(yōu)先級和中斷“蔽
中斷屏蔽有兩種方法:
硬件實現(xiàn)——由軟件置處理機優(yōu)先級,硬件按系
統(tǒng)設(shè)計時的約定,屏蔽那些低優(yōu)先級中斷
軟件實現(xiàn)一一由軟件按操作系統(tǒng)優(yōu)先級約定,設(shè)置
屏蔽寄存器
3.4.中新類型
強迫性中斷
正在運行的程序所不期望的,由于某種硬件故
障或外部請求引起的
自愿性中斷
用戶在程序中有意識安排的中斷,是由于用戶
在編制程序時因為要求操作系統(tǒng)提供服務(wù),有
意使用“訪管”指令或系統(tǒng)調(diào)用,使中斷發(fā)生
中新類型
強迫性中斷
■輸入/輸出(I/O)中斷:主要來自外部設(shè)備通
道
?程序性中斷:運行程序中本身的中斷
(如溢出,缺頁中斷,缺段中斷,地址越界)
?時鐘中斷
?控制臺中斷
?硬件故障
中新類型
自愿性中斷
?執(zhí)行I/O,創(chuàng)建進程,分配內(nèi)存
?信號量操作,發(fā)送/接收消息
微機中的中新
1.可屏蔽中斷(10中斷)
2.不可屏蔽中斷(機器內(nèi)部故障、掉電中斷)
3.程序錯誤中斷(溢出、除法錯等中斷)
4.軟件中斷(Trap指令或中斷指令I(lǐng)NT)
圖此Q孚
IBM370中的中新
i.機器故障中斷:如電源故障,機器電路檢驗錯等
2.輸入輸出中斷:輸入輸出設(shè)備和通道數(shù)據(jù)傳輸狀態(tài))
3.外部中斷:時鐘中斷,操作員控制臺中斷,多機系統(tǒng)
中其他機器的通信要求中斷,各種外設(shè)或傳感器發(fā)來
的實時中斷等
4.程序中斷:程序中的問題引起的中斷,如錯誤地使用
指令或數(shù)據(jù)、溢出等問題,存儲保護等
5.訪管中斷:訪管指令或陷阱指令(Trap指令)中的操
作數(shù)規(guī)定了要求服務(wù)的類型。每當CPU執(zhí)行訪管指令或
陷阱指令時,即引起中斷并調(diào)用操作系統(tǒng)相應的功能
模塊為其服務(wù)
二繆共林手
3.5.中斷響應
CPU如何響應中斷,兩個問題:
?CPU何時響應中斷?
通常在CPU執(zhí)行了一條指令以后,更確切
地,在指令周期最后時刻接受中斷請求,
或此時掃描中斷寄存器
?如何知道提出中斷請求的設(shè)備或中斷源?
因為只有知道中斷源或中斷設(shè)備,才能
調(diào)用相應的中斷處理程序
圖此Q孚
FThR中新響應
處理器如何發(fā)現(xiàn)中斷信號?
處理器的控制部件中設(shè)一個能檢測中斷的機構(gòu)
稱為中斷掃描機構(gòu)
?在每條指令執(zhí)行周期的最后時刻掃描中斷寄存器,
詢問是否有中斷信號
?若無中斷信號,繼續(xù)執(zhí)行下一條指令
?若有中斷,中斷硬件將該中斷觸發(fā)器內(nèi)容按規(guī)定編
碼送入PSW的相應位,稱為中斷碼
?通過交換中斷向量引出中斷處理程序
中斷向量:一個存放中斷處理程序入口地址和程
序運行所需處理機狀態(tài)字的內(nèi)存單元
硬件按中斷號、異常類型的不同通過中斷向量表
轉(zhuǎn)移
中新向量表
在有的機器中:
將主存最低位128個字保留作為中斷向量表,每
個中斷向量占兩個字
中斷請求的設(shè)備接口為了標識自己,向處理器發(fā)
送一個該設(shè)備在中斷向量表中表目的地址指針
圖此Q孚
中斷響應
典型的中新處理CU:I/O中新
由I/o設(shè)備的控制器或者通道發(fā)出
兩類I/O中斷:
?I/O操作正常結(jié)束
如果要繼續(xù)I/O操作,需要在準備好以后重新啟動I/O,
若請求I/O程序正處于等待I/O狀態(tài),則應將其喚醒
?I/O異常
需要重新執(zhí)行失敗的I/0操作
重試次數(shù)有上限,次數(shù)過大,系統(tǒng)將判定硬件故障
典型的中斷處理(2):時鐘中新
系統(tǒng)多道能力的重要推動力量,時鐘中斷處理程序通常
做與系統(tǒng)運轉(zhuǎn)、管理和維護相關(guān)的工作,包括:
?維護軟件時鐘:系統(tǒng)有若干個軟件時鐘,控制定時任
務(wù)以及進程的處理器時間配額,時鐘中斷需要維護、
定時更新這些軟件時鐘
?處理器時間調(diào)度:維護當前進程時間片軟件時鐘,并
在當前進程時間片到時以后運行調(diào)度程序選擇下一個
被調(diào)度的進程
?控制系統(tǒng)定時任務(wù):通過軟件時鐘和調(diào)度程序定時激
活一些系統(tǒng)任務(wù),如監(jiān)測死鎖、系統(tǒng)記帳、系統(tǒng)審計
等
?實時處理”,與
嚷蟹的中斷處理C3J:硬件故障中新
硬件故障中斷處理程序一般需要做的工作:
■保存現(xiàn)場,使用一定警告手段,提供些輔助診斷信息
?在高可靠系統(tǒng)中,中斷處理程序還要評估系統(tǒng)可用性,盡可能
恢復系統(tǒng)
如Windows2000/XP,關(guān)鍵硬件發(fā)生故障時,如顯示卡損壞,出
現(xiàn)系統(tǒng)藍屏,系統(tǒng)實際上進入相應故障處理程序,發(fā)現(xiàn)故障不
可恢復,則在屏幕上打印出發(fā)生故障時程序位置,并開始進行
內(nèi)存轉(zhuǎn)儲(將一定范圍的內(nèi)存內(nèi)容寫上磁盤,是系統(tǒng)故障時的
全系統(tǒng)“快照”),備日后故障診斷
參2孝
其建的中新處理(4):程序性中斷
程序指令出錯、指令越權(quán)或者指令尋址越界而引發(fā)
兩類處理方法:
?只能由操作系統(tǒng)的相關(guān)擴展功能模塊完成
多為程序試圖作不能做的操作引起的系統(tǒng)保護
如訪問合法的、但不在內(nèi)存虛地址內(nèi),引發(fā)頁故障頁故障一
般會引發(fā)os虛存模塊作一個頁面換入
?可由程序自己完成,如一些算術(shù)運算錯誤
不同程序可有不同處理方法,所以很多OS提供由用戶自己
處理這類中斷的“綠色通道”
系統(tǒng)調(diào)試中斷(斷點中斷、單步跟蹤)也可被用戶程序處理,
用以支持各種程序調(diào)試的
典型的中新處理(5):余統(tǒng)服務(wù)請求(自愿性中斷)
系統(tǒng)服務(wù)請求由處理器專用指令(訪管指令)激發(fā)
?如x86處理器提供int指令,用來激發(fā)軟件中斷
?其他不少處理器則提供系統(tǒng)調(diào)用指令syscall
執(zhí)行專用指令的結(jié)果是系統(tǒng)被切換到管態(tài),并且轉(zhuǎn)
移到一段專門OS程序處開始執(zhí)行
■指令格式通常是指令名加請求服務(wù)識別號(中斷號)
?OS利用處理器提供的這種接口建立系統(tǒng)服務(wù)體系
?處理器一般不負責定義系統(tǒng)調(diào)用所傳遞的參數(shù)格式
參此林早
>r室的中斷處理(6):系統(tǒng)服務(wù)請求實例
?DOS:21h號中斷的系統(tǒng)服務(wù)功能以及參數(shù)列表
現(xiàn)代操作系統(tǒng)一般不提供直接使用系統(tǒng)調(diào)用指令的接口,通
常做法:提供一套方便、實用的應用程序函數(shù)庫(應用程序
設(shè)計接口API)
-從應用層面重新封裝系統(tǒng)調(diào)用
-屏蔽復雜的系統(tǒng)調(diào)用傳參問題
-高級語言接口,有助于快速開發(fā)
有的系統(tǒng)在更高層面提供系統(tǒng)程序設(shè)計模板庫和類庫
如Windows2000/XP提供封裝系統(tǒng)用Win32API和高層編程機
制MFC以及ATL
Linux提供封裝系統(tǒng)調(diào)用、符合POSIX標準A9和C運行庫
保存進程狀態(tài)的其
余信息
進程中斷
中斷系統(tǒng)軟件完成的工作
恢復進程狀態(tài)信息
從系統(tǒng)堆?;謴驮?/p>
PSW和PC圖此Q孚
四,I/O技術(shù)
I/O控制使用下面幾種技術(shù):
?程序控制
?中斷驅(qū)動
?直接存儲器存取(DMA)
?通道
鎏共2芽
4.E程序控制I/O技術(shù)
由處理器提供I/O相關(guān)指令來實現(xiàn)
?I/O處理單元處理請求并設(shè)置I/O狀態(tài)寄存器相關(guān)位
?不中斷處理器,也不給處理器警告信息
?處理器定期輪詢I/O單元的狀態(tài),直到處理完畢
I/O軟件包含直接操縱I/O的指令
?控制指令:用于激活外設(shè),并告訴它做什么
?狀態(tài)指令:用于測試I/O控制中的各種狀態(tài)和條件
?數(shù)據(jù)傳送指令:用于在設(shè)備和主存之間來回傳送數(shù)據(jù)
主要缺陷:處理器必須關(guān)注I/O處理單元的狀態(tài),因而耗費大
量時間輪詢信息,嚴重地降低了系統(tǒng)性能
參2孝
42中斷驅(qū)動I/O技術(shù)
為了解決程序控制I/O方法的主要問題
應該讓處理器從輪詢?nèi)蝿?wù)中解放出來
使I/O操作和指令執(zhí)行并行起來
具體作法:
當I/O處理單元準備好與設(shè)備交互的時候
通過物理信號通知處理器,即中斷處理器
4.3.DMA技術(shù)(1)
中斷的引入大大地提高了處理器處理I/O的效率
當處理器和I/O間傳送數(shù)據(jù)時,效率仍舊不高
解決方法:
直接存儲器訪問(DMA:DirectMemoryAccess)
?通過系統(tǒng)總線中一獨立控制單元DMA控
制器
?自動控制成塊數(shù)據(jù)在內(nèi)存和I/O單元間的傳送
?大大提高處理I/O的效能
DMA技術(shù)(2)
當處理器需要讀寫一整塊數(shù)據(jù)時
給DMA控制單元發(fā)送一條命令
包含:是否請求一次讀或?qū)?,I/O設(shè)備的編址,開始
讀或?qū)懙闹鞔婢幹?,需要傳送的?shù)據(jù)長度等信息
?處理器發(fā)送完命令后就可處理其他事情
?DMA控制器將自動管理數(shù)據(jù)的傳送
?當這個過程完成后,它會給處理器發(fā)一個中斷
處理器只在開始傳送和傳送結(jié)束時關(guān)注一下就可
DMA技術(shù)(3)
?處理器和DMA傳送不完全并行
?有時會有總線競爭的情況發(fā)生
處理器用總線時可能稍作等待
不會引起中斷
不引起程序上下文的保存
?通常過程只有一個總線周期
?在DMA傳送時,處理器訪問總線速度會變慢
?對于大量數(shù)據(jù)I/O傳送,DMA技術(shù)是很有價值
■鎏此Q手
4.4.通道
獨立于中央處理器,專門負責數(shù)據(jù)I/O傳輸?shù)?/p>
-它對外設(shè)實現(xiàn)統(tǒng)一管理
-代替CPU對I/O操作進行控制
-使CPU和外設(shè)可以并行工作
通道又稱為I/O處理機
引入通道的目的:
?為了使CPU從I/O事務(wù)中解脫出來
?同時為了提高CPU與設(shè)備、設(shè)備與設(shè)備之間的并行
度參什林厚
五、時鐘
時鐘為計算機完成以下必不可少的工作:
?在多道程序運行環(huán)境中,為系統(tǒng)發(fā)現(xiàn)陷入死循環(huán)(編程錯誤)
的作業(yè),防止機時的浪費
?在分時系統(tǒng)中,間隔時鐘實現(xiàn)作業(yè)間按時間片輪轉(zhuǎn)
?在實時系統(tǒng)中,按要求的間隔輸出正確時間信號給實時的控
制設(shè)備(如A/D、D/A轉(zhuǎn)換設(shè)備)
?定時喚醒要求延遲執(zhí)行的各外部事件(如定時為各進程計算
優(yōu)先數(shù),銀行中定時運行某類結(jié)賬程序等)
?記錄用戶使用設(shè)備時間和記錄某外部事件發(fā)生時間
?記錄用戶和系統(tǒng)所需要的絕對時間,即年、月、日
?時鐘是操作系統(tǒng)運行的必不可少的硬件設(shè)施
?時鐘,實際上都是硬件時鐘寄存器,按時鐘電路所產(chǎn)生的脈
沖數(shù)對時鐘寄存器進行加1或減1的工作
?絕對時鐘:記錄當時時間(年、月、日、時、分、秒)
一般來說,絕對時鐘準確,當停機時,絕對時鐘值仍然自動
修改
?間隔時鐘(相對時鐘):通過時鐘寄存器實現(xiàn)
置上時間間隔初值,每經(jīng)過一個單位時間,時鐘值減1,直
到該值為負時,則觸發(fā)時鐘中斷,并進行相應中斷處理
爹共2手
晶體^震^蕩
-陰
每個脈沖使計數(shù)器減1
用來裝入計
TEEEEEEEEED數(shù)器初值
等北Q、浮
破件時鐘:
某個寄存器來模擬
(根據(jù)脈沖頻率定時加1,減1)
用作相對時鐘,用內(nèi)存單元來模擬時鐘
?CPU保護:防止進程得到CPU后不放棄控制權(quán)
?解決:分配給每個進程一段時間(時間片)
時間片到,發(fā)時鐘中斷,控制權(quán)交給操作系統(tǒng)
圖此Q孚
六、系統(tǒng)調(diào)用
系統(tǒng)調(diào)用:用戶在程序中調(diào)用操作系統(tǒng)所提供的一些子功能
?這是特殊的過程調(diào)用,由特殊的機器指令實現(xiàn)(每種機器
的機器指令集中都有一條系統(tǒng)調(diào)用指令一訪管指令)
■這條指令將系統(tǒng)轉(zhuǎn)入管態(tài)
?系統(tǒng)調(diào)用是一個低級過程,只能由匯編語言直接訪問
?系統(tǒng)調(diào)用是操作系統(tǒng)提供給編程人員的唯一接口
■利用系統(tǒng)調(diào)用,動態(tài)請求和釋放系統(tǒng)資源
完成與硬件相關(guān)的工作以及控制程序的執(zhí)行等
每個操作系統(tǒng)都提供幾百種系統(tǒng)調(diào)用
A=A+l
printf(...)
B=B+A
(1)源程序段
繆北Q、芽
a素嶷詞用簡介(續(xù)1)
A=A+1
?、c?
/:、
?嵌入后?/
INT>>〈INT/
該系統(tǒng)調(diào)
?1用的操作
?系統(tǒng)內(nèi)部
OUT實現(xiàn)代碼
(2)printf目標代碼⑶程序段編譯產(chǎn)生的(4)操作系統(tǒng)
可執(zhí)行代碼
謫用簡介(續(xù)2)
?凡是與硬件相關(guān)、與應用無關(guān)的工作,都通過
操作系統(tǒng)程序來完成
用戶程序
函數(shù)
操作系統(tǒng)
圖此Q孚
以I/O設(shè)備的硬件接口為例:
一般由四種寄存器(地址,數(shù)據(jù),狀態(tài),控制)或其
子集組成
任一程序中若要使用I/O設(shè)備來輸出數(shù)據(jù)或接受輸入
必須通過對這四種寄存器讀寫的I/O機器指令進行
V爹北林學
6.2.系統(tǒng)調(diào)用的處理過程
?需要有一個類似于硬件中斷處理的處理機構(gòu)
當用戶使用系統(tǒng)調(diào)用時,產(chǎn)生一條相應的指令
處理機在執(zhí)行到該指令時發(fā)生相應的中斷,并
發(fā)出有關(guān)的信號給該處理機構(gòu)
該處理機構(gòu)在收到了處理機發(fā)來的信號后,啟
動相關(guān)的處理程序去完成該系統(tǒng)調(diào)用所要求的
功能
圖此Q孚
系統(tǒng)調(diào)用的處理過程(續(xù)1)
?在系統(tǒng)中為控制系統(tǒng)調(diào)用服務(wù)的機構(gòu)稱為陷入
(TRAP)或異常處理機構(gòu)
?相對應,把由于系統(tǒng)調(diào)用引起處理機中斷的指令
稱為陷入或異常指令(或稱訪管指令)
?在操作系統(tǒng)中,每個系統(tǒng)調(diào)用都對應一個事先給
定的功能號,例如0、1、2、3等,稱為系統(tǒng)調(diào)用
功能號
(在陷入指令中必須包括對應系統(tǒng)調(diào)用的功能號
有些陷入指令中,還帶有傳給陷入處理機構(gòu)和內(nèi)
部處理程序的有關(guān)參數(shù))圖此Q孚
系統(tǒng)調(diào)用的處理過程r續(xù)2)
?必須為實現(xiàn)系統(tǒng)調(diào)用功能的子程序編造人口地址表
?每個入口地址與相應的系統(tǒng)調(diào)用執(zhí)行程序名對應
?陷入處理程序把陷入指令包含功能號與人口地址表有關(guān)項
對應,驅(qū)動有關(guān)子程序執(zhí)行
?在系統(tǒng)調(diào)用處理結(jié)束之后,用戶程序需利用系統(tǒng)調(diào)用返回
結(jié)果繼續(xù)執(zhí)行
保護現(xiàn)場:
?進入系統(tǒng)調(diào)用處理前,陷入處理機構(gòu)還需保存處理機現(xiàn)場
?在系統(tǒng)調(diào)用處理結(jié)束之后,要恢復處理機現(xiàn)場,現(xiàn)場被保
護在特定的內(nèi)存區(qū)或寄存器中鏟安、、,
/拄林孝
用戶程序陷入處理機構(gòu)系統(tǒng)子程序
系統(tǒng)調(diào)用的處理過程
參數(shù)傳遹過程問題
怎樣實現(xiàn)用戶程序和系統(tǒng)程序間的參數(shù)傳遞?
常用的3種實現(xiàn)方法:
?由陷入指令自帶參數(shù):陷入指令的長度有限的,且還
要攜帶系統(tǒng)調(diào)用功能號,只能自帶有限的參數(shù)
?通過有關(guān)通用寄存器來傳遞參數(shù):這些寄存器應是系
統(tǒng)程序和用戶程序都能訪問,由于寄存器長度較短,
從法傳遞較多的參數(shù)
?大多在內(nèi)存中開辟專用堆棧區(qū)來傳遞參數(shù)
―小學
6.4.系統(tǒng)調(diào)用的分類
系統(tǒng)功能可分為兩部分
?系統(tǒng)自身所需要的
?作為服務(wù)提供給用戶的
os的系統(tǒng)調(diào)用:
?進程控制類系統(tǒng)調(diào)用
?文件操作類系統(tǒng)調(diào)用
?進程通信類系統(tǒng)調(diào)用
?設(shè)備管理類系統(tǒng)調(diào)用
?信息維護類系統(tǒng)調(diào)用
圖此Q孚
進程管理
調(diào)用說明
pid=fork))創(chuàng)建與父進程相同的子進程
等待一子進程終止
pid=wairpidfpid,&statioc9options)
s=execvefname,argv,environp)復制一進程的核心映像
Exit(status)中止進程執(zhí)行并返回status
繆北Q、芽
文件管理
調(diào)用說明
fd=open(file,how,...)打開一個文件供讀、寫或兩者
s=close(fd)關(guān)閉一個文件
n=read(fd,buffer,nbytes)把數(shù)據(jù)從一個文件讀到緩沖區(qū)中
n=write(fd,buffer,nbytes)把數(shù)據(jù)從緩沖區(qū)寫到一個文件中
position=iseek(fd,offset,where)移動文件指針
s=stat(name,&buf)取得文件的狀態(tài)信息
1錄管理
調(diào)用說明
s=mkdir(name,mode)創(chuàng)建一個新目錄
s=rmdir(name)刪去一個空目錄
s=Iink(name1,name2)創(chuàng)建一個新表項,name2,指向
namel
s=unlink(name)刪去一個目錄項
s=mount(special,name,flag)安X個文件系統(tǒng)
s=unmount(special)卸載一個文件系統(tǒng)
裔共Q、步
其他
調(diào)用說明
s=chdir(dirname)改變工作目錄
s=chmod(name,mode)修改一個文件的保護位
s=kill(pid,signal)發(fā)送一信號給一個進程
seconds=time(&seconds)自1970年1月1日起的時間
系統(tǒng)調(diào)用方式(INT)與程序中一般的調(diào)
用方式的相同點:
?改變指令流程
?重復執(zhí)行和公用
?改變指令流程后需要返回原處
系統(tǒng)調(diào)用方式(INT)與程序中一般的調(diào)用方式
的不同點:
系統(tǒng)調(diào)用與一般過程調(diào)用比校(續(xù)1)
?運行在不同的系統(tǒng)狀態(tài)
-一般過程調(diào)用,其調(diào)用程序和被調(diào)用程序都運行在相同狀
態(tài):核心態(tài)或用戶態(tài)
-系統(tǒng)調(diào)用:調(diào)用程序在用戶態(tài),被調(diào)用程序在系統(tǒng)態(tài)
狀態(tài)的轉(zhuǎn)換
?一般的過程調(diào)用不涉及系統(tǒng)狀態(tài)的轉(zhuǎn)換,可直接由調(diào)用過程
轉(zhuǎn)向被調(diào)用過程
?運行系統(tǒng)調(diào)用時,調(diào)用和被調(diào)用過程在不同系統(tǒng)狀態(tài),不允
許由調(diào)用過程直接轉(zhuǎn)向被調(diào)用過程
通過軟中斷機制先由用戶態(tài)轉(zhuǎn)換為核心態(tài)
在OS核心分析后,轉(zhuǎn)向相應的系統(tǒng)調(diào)用處理子程序
系統(tǒng)調(diào)用與一般過程調(diào)用比較(續(xù)2)
?返回問題
-一般過程調(diào)用在被調(diào)用過程執(zhí)行完后,返回
調(diào)用過程
-搶占式調(diào)度的系統(tǒng)中,被調(diào)用過程執(zhí)行完后,
系統(tǒng)將對所有要求運行的進程進行優(yōu)先級分析。
如果調(diào)用進程仍有最高優(yōu)先級,則返回到調(diào)用
進程執(zhí)行
否則,引起重新調(diào)度,讓優(yōu)先級最高的進程
優(yōu)先執(zhí)行。此時,系統(tǒng)把調(diào)用進程放入就緒隊
列
系統(tǒng)調(diào)用與一般過程調(diào)用比較(續(xù)3)
■進入方式不同
利用int或trap指令進行系統(tǒng)調(diào)用;利用call
或jmp指令進入普通的過程調(diào)用
?CALL指令的內(nèi)部實現(xiàn)過程
-返回地址壓棧(即該CALL指令所在的地址)
-將該CALL指令中所含的地址(即被調(diào)用代碼所
足地址)送入PC
?RET指令的內(nèi)部實現(xiàn)過程
-從棧頂彈出返回地址送入程序計數(shù)器PC
養(yǎng)笳謫用與一般過程調(diào)用比校(續(xù)4)
?系統(tǒng)調(diào)用是動態(tài)調(diào)用,而CALL調(diào)用
方式是靜態(tài)調(diào)用
a.同一程序中不包含被調(diào)用代碼
系統(tǒng)調(diào)用是動態(tài)調(diào)用,程序中不包含被調(diào)
用代碼,好處:
(1)用戶程序長度縮短
(2)當OS升級時,調(diào)用方不必改變
圖此Q孚
系統(tǒng)調(diào)用與一般過程調(diào)用比校(續(xù)5)
b.系統(tǒng)調(diào)用方式的調(diào)用地址和返回地址都是不固定
的
系統(tǒng)調(diào)用指令中不包含調(diào)用地址,只包含功能號
是按功能號(在可執(zhí)行目標程序中)調(diào)用的
在操作系統(tǒng)內(nèi)部
由系統(tǒng)調(diào)用處理程序通過系統(tǒng)調(diào)用分支表
(OS的一個數(shù)據(jù)結(jié)構(gòu))
將功能號轉(zhuǎn)換為相應的指令地址
系統(tǒng)調(diào)用與一般過程調(diào)用比較(續(xù)6)
顯示
打印
讀文件
用戶程序os
系統(tǒng)調(diào)用與一般過程調(diào)用比校(續(xù)7)
系統(tǒng)調(diào)用返回指令中不包括返回地址,通過棧保
存而彈出返回危癥
系統(tǒng)調(diào)用返回地址不固定,因為用戶程序在不同
的地方調(diào)用os
CALL調(diào)用方式是靜態(tài)調(diào)用,被調(diào)用代碼與調(diào)用
代碼在同一程序之內(nèi)。CALL調(diào)用方式,其調(diào)用
地址是固定的,包含在調(diào)用語句中;返回地址
是不固定的(同一子程序可能被不同處多次調(diào)
用),在程序執(zhí)行過程中通過棧的實現(xiàn)來保存
和彈出返回地址
澇此Q冬
系統(tǒng)調(diào)用與一般過程調(diào)用比校(續(xù)8)
c.安全接口
INT指令和IRET指令的執(zhí)行過程中
要處理程序狀態(tài)字PSW
INT指令中要保存用戶程序的老PSW
并根據(jù)中斷向量表設(shè)置新PSW
IRET指令中要在返回用戶程序前恢復用戶程序
的老PSW
圖此Q孚
系統(tǒng)覆用與一般過程調(diào)用比較(續(xù)9)
安全接口(續(xù)1)
目的:目態(tài)、管態(tài)的管理
系統(tǒng)態(tài)與用戶態(tài)的轉(zhuǎn)換
由系統(tǒng)在INT指令與IRET指令內(nèi)部自動完
成
沒有用一條單獨的專門指令
七、Linux系統(tǒng)啟動過程
針對linux系統(tǒng)的單x86cpu的版本
鎏北Q、步
說在If面的話…
?引導涉及到系統(tǒng)各個部分的數(shù)據(jù)結(jié)構(gòu),
因此,只有隨著課程的深入,才會徹底
弄清楚引導程序中的初始化工作
?不同OS的引導程序可能會不同,但是仍
有一些普遍的原理可以遵循
前面的部分側(cè)重代碼,目的是為了說清
楚一些基本概念,啟動核心部分側(cè)重原
理,增強大家的感性認識
圖此Q孚
余統(tǒng)初始化所包括的內(nèi)袞
?基礎(chǔ)知識
-系統(tǒng)引導
?通過lilo進行引導
?實模式下的系統(tǒng)初始化
?保護模式下的系統(tǒng)初始化
?啟動核心
,Init進程
7.1基礎(chǔ)知識
?Linux源代碼中的C語言代碼
?Linux源代碼中的匯編語言代碼:兩種
?完全的匯編代碼,以.S作為文件名后綴
?嵌入在C程序中的匯編代碼。
C語言代瑪
?Linux主體是用GNU的c語言編寫
?從C++中吸收了“inline”和“const”
?支持"屬性描述符”(attribute)
?增加了新的基本數(shù)據(jù)類型“l(fā)onglongint”
用于支蔣64位cpu
圖此Q孚
匯編語音代瑪
?與一般的386匯編語言采用intel定義不同,
它采用的是AT&T定義的格式。主要差
別如下:
?Intel中多使用大寫字母,而這里大多使用小寫字
母
?寄存器名前面要加“%”作為前綴,
?指令的源操作數(shù)與目標操作數(shù)的順序與intel的正
好相反。AT&T格式中,源在前,目標在后
.
匯編語言代瑪
?訪問內(nèi)存的指令的操作數(shù)大?。磳挾龋┯刹僮?/p>
碼名稱的最后一個字母決定,用作操作碼后綴的
字母有b(8位),w(16位),1(32位),e.g
movb
?直接操作數(shù)要加“$”作為前綴,intel中不用
?基本格式
-asm(“匯編語句”
:輸出寄存器
:輸入寄存器
:會被修改的寄存器);
?輸出和輸入寄存器統(tǒng)一按順序編號,起始是%0
卷共Q、早
基礎(chǔ)知識
?Linux的啟動是指從系統(tǒng)加電到控制臺顯
示登錄提示為止的運行階段:
-主要相關(guān)的代碼是在arch/i386/boot中:
?bootsect.S,這是linux引導扇區(qū)的源代碼
?setup.S這是輔助程序的一部分
?video.S這是輔助程序的另夕|?部分,用于引導
過程中的屏幕顯示
基礎(chǔ)知識
-另外,子目錄compressed中還有兩個源代碼
文祥head.S,misc.co用于內(nèi)核映象的解壓
縮。也屬于輔助程序一部分。
-經(jīng)過■譯,匯編和連接后就形成三個部分:
引導扇區(qū)的映象bootsetc,輔助程序setup和
內(nèi)核映象本身。
-大小不超過508KB的內(nèi)核引導映象稱為小映
象zlmage;否則稱為大內(nèi)核bzlmage
圖此Q孚
7.2系統(tǒng)引導
?加電開機后,intelcpu在實模式下工作,
只能使用低端的640kb(即0XA0000以下)
的內(nèi)存空間(why?)
?由ROMBIOS或由ilo將啟動盤的第一扇
區(qū)(引導扇區(qū))的內(nèi)容裝入起始地址為
0x7c00的內(nèi)存空間,然后跳轉(zhuǎn)到0x7c00
開始執(zhí)行引導扇區(qū)的代碼
?該引導扇區(qū)內(nèi)的代碼就是bootsetS匯編
后生成的二進制代碼
圖此Q孚
系統(tǒng)引導
該段代碼(bootsetS)將自身轉(zhuǎn)移到
0x90000處,然后跳轉(zhuǎn)到那里繼續(xù)執(zhí)行,
并通過bios提供的“int0x13”調(diào)用從磁盤
上讀入setup和內(nèi)核的映象,然后跳轉(zhuǎn)到
setup的代向中,為執(zhí)行而核映象做準備
?對部分代碼的解釋如下所示:
圖此Q孚
蠡電M引導-bootsect.S中的部分代
嗎
movw$BOOTSEG,%ax
movw%ax,%ds#%ds=BOOTSEG,將ds段寄存器設(shè)為0x7c00
movw$INITSEG,%ax
movw%ax,%es#%ax=%es=INITSEG,將es段寄存器設(shè)為0x9000
movw$256,%cx#移動計數(shù)值=256
subw%si,%si#源地址ds:si=0x07c0:0x0000
subw%di,%di#目標地es:di=0x9000:0x0000
eld#清方向標志位
rep#重復執(zhí)行直到cx=0
movsw#移動1個字
Ijmp$INITSEG,$go#間接跳轉(zhuǎn),INITSEG指出跳轉(zhuǎn)到的段地址
go:movw$0x4000-12,%di#0x4000isanarbitraryvalue>=
#lengthofbootsect+lengthof
#setup+roomforstack;
#12isdiskparmsize.
movw%ax,%ds#將ds,ss都置成移動后代碼所在的段處0x9000
movw%ax,%ss
movw%di,%sp#設(shè)置堆棧putstackatINITSEG:0x4000-12.
與限號I導-bootsect.S中部分代瑪?shù)慕?/p>
痔
這段代碼將啟動扇區(qū)代碼由0x7C00移至
0x90000處。Linux將地址為0x90000的代
碼段稱為INITSEG。然后跳轉(zhuǎn)到go標志,
準備一塊堆棧,棧底位于
$INITSEG:0x4000-12
系統(tǒng)引導一bootsect.S中部分代瑪
loadsetup:
xorb%ah,%ah#ah=0x02讀磁盤扇區(qū)到內(nèi)存;21=需讀出的扇區(qū)數(shù),…
xorb%dl,%dl
int$0x13
xorw%dx,%dx
movb$0x02,%cl
movw$0x0200,%bx
movb$0x02,%ah
movbsetup_sects,%al
int$0x13
jncokloadsetup
pushw%ax
callprintnl
movw%sp,%bp
callprinthex
popw%ax
jmploadsetup
okloadsetup:
與限號[導-bootsect.S中部分代瑪?shù)慕?/p>
釋
■該段代碼利用BIOS中提供的讀磁盤調(diào)用
“int0x13”從磁盤將setup.S裝入到9000:
0200(linux中稱之為SETUPPSEG段),
即緊跟在bootsect.S之后,共四個扇區(qū)
?如果載入失敗,則不斷嘗試循環(huán)。除非
某次嘗試成功,否則只有等待系統(tǒng)重啟
7.3通過lilo來進行引導
?Lilo(linuxloader)也存儲在啟動扇區(qū)
中,用以讓用戶選擇上電后使用何種操
作系統(tǒng)
?Lilo在系統(tǒng)安裝階段建立關(guān)于核心代碼占
用硬盤數(shù)據(jù)塊的位置的對照表。啟動時
lilo將利用這張表引導BIOS裝入指定的操
作系統(tǒng)
通過lilo來進行引導
?Lilo將用戶在啟動時輸入的命令和參數(shù)存
儲在empty_zero_page(0x5000)的后半頁,
供arch/i386/kernel/setup.c文柞的
setup_arch()函數(shù)使用
?Lilo完成任務(wù)后,跳轉(zhuǎn)至setup.S程序,
轉(zhuǎn)入實模式下的系統(tǒng)初始化
圖此Q孚
7.4賣模式下的系統(tǒng)初始化
?setup.S連同內(nèi)核映象由bootsect.S裝入。
setup.S從BIOS獲取計算機系統(tǒng)的參數(shù),
放到內(nèi)存參數(shù)區(qū),仍在實模式下運行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 混凝土工程質(zhì)量管理方案
- 二零二五年度綠色地產(chǎn)房地產(chǎn)工程招標合同3篇
- 2024年渤海船舶職業(yè)學院高職單招語文歷年參考題庫含答案解析
- 寶貝學常見詞
- 授權(quán)函完整版本
- 二零二五年能源管理服務(wù)簡易借款合同3篇
- 二零二五年新型電子產(chǎn)品動產(chǎn)交易合同2篇
- 2024年河南物流職業(yè)學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2024年阜陽市第二人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年阜康準東石油醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 五年級數(shù)學(小數(shù)四則混合運算)計算題專項練習及答案匯編
- 彈性力學仿真軟件:SolidWorks Simulation:疲勞分析與壽命預測技術(shù)教程
- 獵聘-2024高校畢業(yè)生就業(yè)數(shù)據(jù)報告
- 2024年公務(wù)員考試必背常識大全
- 勞工與人權(quán)管理核心制度
- 北師大版數(shù)學五年級上冊第三單元《倍數(shù)與因數(shù)》大單元整體教學設(shè)計
- 中藥灌腸方法
- 醫(yī)美整形美容醫(yī)院眼部抗衰品牌課件
- 大學暑假假期社會實踐心得體會3篇
- 科普產(chǎn)業(yè)發(fā)展現(xiàn)狀調(diào)查報告
- 2024湖南湘電集團有限公司招聘筆試參考題庫附帶答案詳解
評論
0/150
提交評論