




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第二講 系統(tǒng)啟動(dòng)和接口系統(tǒng)啟動(dòng)過程中斷異常系統(tǒng)調(diào)用計(jì)算機(jī)體系結(jié)構(gòu)概述CPUI/O設(shè)備內(nèi)存 ROM RAM總線 數(shù)據(jù)總線DB(Data Bus) 地址總線AB(Address Bus) 控制總線CB(Control Bus)Intel 80 x86 CPU 工作模式實(shí)模式:8086/8088唯一工作方式20位地址總線,00000H-FFFFFH(1MB大?。?6位寄存器, 物理地址=段基址X16+偏移地址 80386以上的微處理器加啟動(dòng)時(shí),自動(dòng)進(jìn)入實(shí)模式保護(hù)模式32/64位寄存器和地址總線用硬件對(duì)每個(gè)進(jìn)程內(nèi)存空間進(jìn)行保護(hù),阻止非法訪問分段管理和分頁(yè)管理結(jié)合:邏輯地址-線性地址-物理地址虛擬808
2、6模式運(yùn)行在保護(hù)模式中的實(shí)模式,為了在32位保護(hù)模式下執(zhí)行純16位程序 關(guān)于BIOSBIOS Basic Input Output System,基本輸入輸出系統(tǒng)它是一組固化到計(jì)算機(jī)內(nèi)主板上一個(gè)ROM(CMOS)芯片上的程序,它保存著計(jì)算機(jī)最重要的基本輸入輸出的程序、開機(jī)后自檢程序和系統(tǒng)自啟動(dòng)程序?yàn)橛?jì)算機(jī)提供最底層的、最直接的硬件設(shè)置和控制。啟動(dòng)時(shí)計(jì)算機(jī)內(nèi)存和磁盤布局 基本輸入輸出的程序 系統(tǒng)設(shè)置信息 開機(jī)后自檢程序 系統(tǒng)自啟動(dòng)程序等 CS:IP = 0 xf000:fff0. (CS:代碼段寄存器;IP:指令指針寄存器PC:程序計(jì)數(shù)寄存器)系統(tǒng)處于實(shí)模式PC = 16*CS+IP20位地址空
3、間:1MB加載程序操作系統(tǒng)磁盤空閑空間空閑空間BIOS啟動(dòng)固件BIOS數(shù)據(jù)加載程序空閑空間BIOS固件空閑空間加載程序的內(nèi)存地址空間 加載程序 將操作系統(tǒng)的代碼和數(shù)據(jù)從硬盤加載到內(nèi)存中 跳轉(zhuǎn)到操作系統(tǒng)的起始地址 BIOS 將加載程序從磁盤的引導(dǎo)扇區(qū)(512字節(jié))加載到0 x7c00 . 跳轉(zhuǎn)到 CS:IP = 0000:7c00 空閑空間操作系統(tǒng)BIOS固件空閑空間加載程序BIOS數(shù)據(jù)加載程序操作系統(tǒng)磁盤BIOS系統(tǒng)調(diào)用 INT 16h: 鍵盤輸入只能在x86的實(shí)模式下訪問BIOS以中斷調(diào)用的方式 提供了基本的I/O功能 INT 10h: 字符顯示 INT 13h: 磁盤扇區(qū)讀寫 INT 15
4、h: 檢測(cè)內(nèi)存大小計(jì)算機(jī)啟動(dòng)流程加載程序引導(dǎo)扇區(qū)代碼讀取文件系統(tǒng)的加載程序 主引導(dǎo)記錄BIOS讀取主引導(dǎo)扇區(qū)代碼BIOS系統(tǒng)加電BIOS初始化硬件 活動(dòng)分區(qū)主引導(dǎo)扇區(qū)代碼讀取活動(dòng)分區(qū)的引導(dǎo)扇區(qū)代碼CPU初始化 CPU加電穩(wěn)定后從0XFFFF0讀第一條指令CS:IP = 0 xf000:fff0第一條指令是跳轉(zhuǎn)指令CPU初始狀態(tài)為16位實(shí)模式CS:IP是16位寄存器指令指針PC = 16*CS+IP最大地址空間是1MBBIOS初始化過程硬件自檢POST檢測(cè)系統(tǒng)中內(nèi)存和顯卡等關(guān)鍵部件的存在和工作狀態(tài)查找并執(zhí)行顯卡等接口卡BIOS,進(jìn)行設(shè)備初始化;執(zhí)行系統(tǒng)BIOS,進(jìn)行系統(tǒng)檢測(cè);檢測(cè)和配置系統(tǒng)中安裝
5、的即插即用設(shè)備;更新CMOS中的擴(kuò)展系統(tǒng)配置數(shù)據(jù)(ESCD)按指定啟動(dòng)順序從軟盤、硬盤或光驅(qū)啟動(dòng)主引導(dǎo)記錄(MBR)格式啟動(dòng)代碼:446字節(jié)檢查分區(qū)表正確性加載并跳轉(zhuǎn)到磁盤上的引導(dǎo)程序硬盤分區(qū)表:64字節(jié)描述分區(qū)狀態(tài)和位置每個(gè)分區(qū)描述信息占據(jù)16字節(jié)結(jié)束標(biāo)志字:2字節(jié)(55AA)主引導(dǎo)記錄的有效標(biāo)志啟動(dòng)代碼 MBR結(jié)束標(biāo)志字 0 x55 0 xAA硬盤分區(qū)表分區(qū)1分區(qū)2分區(qū)3分區(qū)4分區(qū)引導(dǎo)扇區(qū)格式跳轉(zhuǎn)指令:跳轉(zhuǎn)到啟動(dòng)代碼與平臺(tái)相關(guān)代碼JMP啟動(dòng)代碼文件卷頭結(jié)構(gòu) 0 x55 0 xAA結(jié)束標(biāo)志啟動(dòng)代碼:跳轉(zhuǎn)到加載程序文件卷頭:文件系統(tǒng)描述信息結(jié)束標(biāo)志:55AA加載程序(bootloader)加載
6、程序從文件系統(tǒng)中讀取啟動(dòng)配置信息操作系統(tǒng)內(nèi)核依據(jù)配置加載指定內(nèi)核并跳轉(zhuǎn)到內(nèi)核執(zhí)行啟動(dòng)菜單可選的操作系統(tǒng)內(nèi)核列表和加載參數(shù)系統(tǒng)啟動(dòng)規(guī)范BIOS 固化到計(jì)算機(jī)主板上的程序 包括系統(tǒng)設(shè)置、自檢程序和系統(tǒng)自啟動(dòng)程序 BIOS-MBR、BIOS-GPT、PXE 接口標(biāo)準(zhǔn)UEFI 在所有平臺(tái)上一致的操作系統(tǒng)啟動(dòng)服務(wù)操作系統(tǒng)接口n內(nèi)核接口:系統(tǒng)調(diào)用、中斷、異常n用戶接口:字符命令,圖形界面系統(tǒng)內(nèi)核背景為什么需要中斷、異常和系統(tǒng)調(diào)用在計(jì)算機(jī)運(yùn)行中,內(nèi)核是被信任的第三方只有內(nèi)核可以執(zhí)行特權(quán)指令方便應(yīng)用程序中斷和異常希望解決的問題當(dāng)外設(shè)連接計(jì)算機(jī)時(shí),會(huì)出現(xiàn)什么現(xiàn)象?當(dāng)應(yīng)用程序處理意想不到的行為時(shí),會(huì)出現(xiàn)什么現(xiàn)象?
7、系統(tǒng)調(diào)用希望解決的問題用戶應(yīng)用程序是如何得到系統(tǒng)服務(wù)?系統(tǒng)調(diào)用和功能調(diào)用的不同之處是什么??jī)?nèi)核的進(jìn)入與退出異常(代碼執(zhí)行出錯(cuò))異常服務(wù)例程中斷向量表系統(tǒng)調(diào)用表系統(tǒng)調(diào)用實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)內(nèi)核應(yīng)用程序外部設(shè)備中斷設(shè)備訪問數(shù)據(jù)流系統(tǒng)調(diào)用接口函數(shù)庫(kù)中斷、異常和系統(tǒng)調(diào)用系統(tǒng)調(diào)用(system call)應(yīng)用程序主動(dòng)向操作系統(tǒng)發(fā)出的服務(wù)請(qǐng)求異常(exception)非法指令或者其他原因?qū)е庐?dāng)前指令執(zhí)行失敗(如:內(nèi)存出錯(cuò))后的處理請(qǐng)求(硬)中斷(hardware interrupt)來自硬件設(shè)備的處理請(qǐng)求中斷、異常和系統(tǒng)調(diào)用比較源頭中斷:外設(shè)異常:應(yīng)用程序意想不到的行為系統(tǒng)調(diào)用:應(yīng)用程序請(qǐng)求操作提供 服務(wù)響應(yīng)方式
8、 中斷:異步異常:同步系統(tǒng)調(diào)用:異步或同步處理機(jī)制中斷:持續(xù),對(duì)用戶應(yīng)用程序 是透明的異常:殺死或者重新執(zhí)行意想不到的 應(yīng)用程序指令系統(tǒng)調(diào)用:等待和持續(xù)中斷處理機(jī)制依據(jù)內(nèi)部或外部事件設(shè)置中斷標(biāo)志依據(jù)中斷向量調(diào)用相應(yīng)中斷服務(wù)例程在CPU初始化時(shí)設(shè)置中斷使能標(biāo)志硬件處理中斷和異常處理機(jī)制軟件現(xiàn)場(chǎng)保存(編譯器)中斷服務(wù)處理(服務(wù)例程)清除中斷標(biāo)記(服務(wù)例程) 現(xiàn)場(chǎng)恢復(fù)(編譯器)中斷嵌套硬件中斷服務(wù)例程可被打斷不同硬件中斷源可能硬件中斷處理時(shí)出現(xiàn)硬件中斷服務(wù)例程中可以臨時(shí)禁止中斷請(qǐng)求中斷請(qǐng)求會(huì)保持到CPU做出響應(yīng)異常服務(wù)例程可被打斷異常服務(wù)例程執(zhí)行時(shí)可能出現(xiàn)硬件中斷異常服務(wù)例程可嵌套異常服務(wù)例程可能出
9、現(xiàn)缺頁(yè)系統(tǒng)調(diào)用n系統(tǒng)調(diào)用是操作系統(tǒng)提供給編程人員的唯一接口,編程人員用系統(tǒng)調(diào)用來請(qǐng)求操作系統(tǒng)提供服務(wù)n系統(tǒng)調(diào)用在源程序一級(jí)調(diào)用系統(tǒng)中已有的功能完成那些和機(jī)器硬件部分相關(guān)的工作,控制程序的執(zhí)行n系統(tǒng)調(diào)用是在核心態(tài)下執(zhí)行的處理機(jī)的執(zhí)行狀態(tài)n系統(tǒng)態(tài)管態(tài)核心態(tài):處理機(jī)有較高的特權(quán),能執(zhí)行一切指令,訪問所有寄存器和內(nèi)存區(qū)n用戶態(tài)目態(tài):處理機(jī)有較低特權(quán),只能執(zhí)行限定的占領(lǐng),訪問限定的寄存器和內(nèi)存區(qū)。一般用戶程序運(yùn)行在用戶態(tài)。用戶態(tài)系統(tǒng)調(diào)用系統(tǒng)態(tài)調(diào)用返回標(biāo)準(zhǔn)C庫(kù)的例子應(yīng)用程序調(diào)用printf() 時(shí),會(huì)觸發(fā)系統(tǒng)調(diào)用write()。#includeint main().printf(“greetings”);
10、.return 0;用戶態(tài)內(nèi)核態(tài) write()標(biāo)準(zhǔn)C庫(kù) write()系統(tǒng)調(diào)用實(shí)現(xiàn) 應(yīng)用程序系統(tǒng)調(diào)用接口write()用戶態(tài)內(nèi)核態(tài)write()write()系統(tǒng)調(diào)用實(shí)現(xiàn) returni.系統(tǒng)調(diào)用操作系統(tǒng)服務(wù)的編程接口通常由高級(jí)語言編寫(C或者C+)程序訪問通常是通過高層次的API接口而不是直接進(jìn)行系統(tǒng)調(diào)用三種最常用的應(yīng)用程序編程接口(API) Win32 API 用于 WindowsPOSIX API 用于 POSIX-based systems (包括UNIX,LINUX,Mac OS X的所有版本)Java API 用于JAVA虛擬機(jī)(JVM)系統(tǒng)調(diào)用的實(shí)現(xiàn)系統(tǒng)調(diào)用接口調(diào)用內(nèi)核態(tài)中的系
11、統(tǒng)調(diào)用功能實(shí)現(xiàn),并返回系統(tǒng)調(diào)用的狀態(tài)和結(jié)果每個(gè)系統(tǒng)調(diào)用對(duì)應(yīng)一個(gè)系統(tǒng)調(diào)用號(hào)系統(tǒng)調(diào)用接口根據(jù)系統(tǒng)調(diào)用號(hào)來維護(hù)表的索引用戶不需要知道系統(tǒng)調(diào)用的實(shí)現(xiàn)需要設(shè)置調(diào)用參數(shù)和獲取返回結(jié)果操作系統(tǒng)接口的細(xì)節(jié)大部分都隱藏在應(yīng)用編程接口后 通過運(yùn)行程序支持的庫(kù)來管理函數(shù)調(diào)用和系統(tǒng)調(diào)用的不同處系統(tǒng)調(diào)用INT和IRET指令用于系統(tǒng)調(diào)用 系統(tǒng)調(diào)用時(shí),堆棧切換和 特權(quán)級(jí)的轉(zhuǎn)換函數(shù)調(diào)用CALL和RET用于常規(guī)調(diào)用 常規(guī)調(diào)用時(shí)沒有堆棧切換系統(tǒng)調(diào)用的開銷超過函數(shù)調(diào)用開銷:引導(dǎo)機(jī)制建立內(nèi)核堆棧驗(yàn)證參數(shù)內(nèi)核態(tài)映射到用戶態(tài)的地址空間內(nèi)核態(tài)獨(dú)立地址空間 更新頁(yè)面映射權(quán)限 TLB系統(tǒng)調(diào)用的使用方法n只有用匯編語言或機(jī)器語言編程時(shí)才會(huì)直接使
12、用系統(tǒng)調(diào)用n大部分高級(jí)語言中沒有系統(tǒng)調(diào)用這個(gè)概念,他們使用在操作系統(tǒng)的系統(tǒng)調(diào)用層之上的庫(kù)函數(shù),如:write(*,*)(Fortran),printf()(C)等n有些高級(jí)語言中有系統(tǒng)調(diào)用函數(shù),其功能和系統(tǒng)調(diào)用完全等同,如:read(file,uffer,nbytes)系統(tǒng)調(diào)用使用示例 文件復(fù)制過程中的系統(tǒng)調(diào)用序列/ System call numbers#define SYS_fork 1#define SYS_exit 2#define SYS_wait 3#define SYS_pipe 4#define SYS_write 5#define SYS_read 6#define SYS_
13、close 7#define SYS_kill 8#define SYS_exec 9#define SYS_open 10#define SYS_mknod 11#define SYS_unlink 12#define SYS_fstat 13#define SYS_link 14#define SYS_mkdir 15#define SYS_chdir 16#define SYS_dup 17#define SYS_getpid 18#define SYS_sbrk 19#define SYS_sleep 20#define SYS_procmem 21源文件 目標(biāo)文件獲取輸入文件名 在屏
14、幕顯示提示 等待并接收鍵盤輸入獲取輸出文件名 在屏幕顯示提示 等待并接收鍵盤輸入打開輸入文件如果文件不存在,出錯(cuò)退出創(chuàng)建輸出文件如果文件存在,出錯(cuò)退出循環(huán) 讀取輸入文件 寫入輸出文件直到讀取結(jié)束關(guān)閉輸出文件在屏幕顯示完成信息正常退出Linux中的系統(tǒng)調(diào)用nLinux中系統(tǒng)調(diào)用對(duì)應(yīng)的處理機(jī)中斷號(hào)為128(0 x80)nLinux提供了預(yù)處理宏指令_syscallN(),N:0-5,可以將指定的系統(tǒng)調(diào)用擴(kuò)展為函數(shù),函數(shù)名和系統(tǒng)調(diào)用同名。nLinux用戶可以自己添加新的系統(tǒng)調(diào)用在Linux中添加新的系統(tǒng)調(diào)用n添加源代碼到/usr/src/Linux/kernel/sys.c中n連接新的系統(tǒng)調(diào)用n重建新
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉(cāng)庫(kù)玉米代銷合同范本
- 入股有效合同范本
- 農(nóng)村收購(gòu)廠房合同范本
- 勞動(dòng)合同范本美發(fā)
- 農(nóng)業(yè)農(nóng)具租賃合同范本
- 勞務(wù)承攬框架合同范本
- app推廣服務(wù)合同范本
- 二手車庫(kù)轉(zhuǎn)讓合同范本3篇
- 辦公電器銷售合同范本
- 動(dòng)畫演示合同范本
- 《普通生物學(xué)教案》word版
- 貴州省就業(yè)失業(yè)登記表
- 秦荻輝科技英語寫作教程練習(xí)答案(共42頁(yè))
- GB∕T 41168-2021 食品包裝用塑料與鋁箔蒸煮復(fù)合膜、袋
- 反興奮劑知識(shí)試題及答案
- 初中八年級(jí)上冊(cè)音樂課件4.2欣賞沃爾塔瓦河(14張)ppt課件
- 部編版語文一年級(jí)下冊(cè)繪本閱讀課-優(yōu)質(zhì)課件.pptx
- 新人教版九年級(jí)全一冊(cè)物理知識(shí)點(diǎn)填空題匯編
- 人教版五年級(jí)數(shù)學(xué)下冊(cè)每個(gè)單元教材分析(共九個(gè)單元)
- 辦好高水平民辦高中的哲學(xué)思考-教育文檔
- 小學(xué)生如何理解句子的含義(課堂PPT)
評(píng)論
0/150
提交評(píng)論