2啟動、中斷、異常和系統調用

3.1BIOS

計算機體系結構概述

cpu加電執行的第一條指令是在內存中,內存分成RAM隨機訪問存儲,還有一個ROM只讀存儲,rom中還有一些原來寫入的一些內容,這些內容系統初始化代碼就從那里開始執行

啟動時計算機內存和磁盤布局

加載程序的內存地址空間

加載程序讀操作系統,再把相應的控制權轉到讀進來的操作系統內核代碼上,操作系統就可以開始運行的

BIOS系統調用 (提供功能)

■BIOS以中斷調用的方式 提供了基本的I/O功能

INT 10h:字符顯示

INT 13h:磁盤扇區讀寫

INT 15h:檢測內存大小

INT 16h:鍵盤輸入

■只能在x86的實模式下訪問(限制)

3.2系統啟動流程

主引導記錄著從哪個文件系統里去讀加載程序,有了主引導記錄之后,然后就進到當前哪個分區里面,分區里面又有一個分區的引導扇區,這個活動分區的引導扇區再來加載之前那個加載程序(BootLoader)

CPU初始化

CPU初始化之后,根據代碼段段寄存器和當前指令指針寄存器這兩個的內容,算出來它的第一條指令在內存當中的什么地方

■CPU加電穩定后從0XFFFF0讀第一條指令

CS:IP = 0xf000:fff0

第一條指令是跳轉指令

■CPU初始狀態為16位實模式

CS:IP是16位寄存器

指令指針PC = 16*CS+IP

最大地址空間是1MB(因為是20為的地址)

BIOS初始化過程

■硬件自檢POST

■檢測系統中內存和顯卡等關鍵部件的存在和工作狀態

■查找并執行顯卡等接口卡BIOS,進行設備初始化;(設備自身有初始化程序)

■執行系統BIOS,進行系統檢測;

檢測和配置系統中安裝的即插即用設備;

■更新CMOS中的擴展系統配置數據ESCD(配置表,每次加電都會更新插入和拔出的卡)

■按指定啟動順序從軟盤、硬盤或光驅啟動(設置啟動順序來讀進第一塊扇區)

主引導記錄MBR格式

■啟動代碼:(只有)446字節(因為分區的信息也要存在512字節中)

檢查分區表正確性

加載并跳轉到磁盤上的引導程序

■硬盤分區表:64字節

描述分區狀態和位置

每個分區描述信息占據16字節

■結束標志字:2字節(55AA)

主引導記錄的有效標志

分區引導扇區格式

■跳轉指令:跳轉到啟動代碼(cpu不一樣,指令也是不一樣的)

與平臺相關代碼

■文件卷頭:文件系統描述信息

■啟動代碼:跳轉到加載程序(存在硬盤上可以改動)

■結束標志:55AA

加載程序(bootloader)

配置文件,不同系統這個文件格式是不一樣的,依據這個選擇你啟動的這種參數,比如說我是在正常啟動,還是說我是在安全模式啟動,還是說我是在一個調試狀態下啟動我的系統,那這些區別都會讀出來之后,它導致我在加載內核的時候的一些內核會不一樣,或者說我加載的時候的參數會不一樣,依據配置去加載內核

系統啟動規范

■BIOS

固化到計算機主板上的程序

包括系統設置、自檢程序和系統自啟動程序

BIOS-MBR、BIOS-GPT、PXE(GPT,全局唯一標識分區表,可以描述更多分區(四個以上))

■UEFI(統一可擴展固件接口)

接口標準

在所有平臺上一致的操作系統啟動服務

擴展:可信流

3.3中斷、異常和系統調用比較

背景

■為什么需要中斷、異常和系統調用

在計算機運行中,內核是被信任的第三方

只有內核可以執行特權指令

方便應用程序

■中斷和異常希望解決的問題(用于解決意外的情況)

當外設連接計算機時,會出現什么現象?

當應用程序處理意想不到的行為時,會出現什么現象?

■系統調用希望解決的問題

用戶應用程序是如何得到系統服務?

系統調用和功能調用的不同之處是什么?

內核的進入與退出

中斷、異常和系統調用

■系統調用(system call)

應用程序主動向操作系統發出的服務請求

■異常(exception)

非法指令或者其他原因導致當前指令執行失敗(如:內存出錯)后的處理請求

■中斷(hardware interrupt)

來自硬件設備的處理請求

中斷可以滿足應用程序,外部設備或者程序執行異常的服務請求

中斷、異常和系統調用比較

■源頭

中斷:外設

異常:應用程序意想不到的行為(可能內部也可能外部)

系統調用:應用程序請求操作提供響應方式服務

■響應方式

中斷:異步

異常:同步

系統調用:異步或同步

■處理機制

中斷:持續,對用戶應用程序是透明的

異常:殺死或者重新執行意想不到的應用程序指令

系統調用:等待和持續

中斷處理機制

硬件處理

■在CPU初始化時設置中斷使能標志

依據內部或外部事件設置中斷標志

依據中斷向量調用相應中斷

服務例程

中斷和異常處理機制

軟件

現場保存(編譯器)

中斷服務處理(服務例程)

清除中斷標記(服務例程)

現場恢復(編譯器)

中斷嵌套

■硬件中斷服務例程可被打斷

不同硬件中斷源可能硬件中斷處理時出現

硬件中斷服務例程中需要臨時禁止中斷請求

中斷請求會保持到CPU做出響應

■異常服務例程可被打斷

異常服務例程執行時可能出現硬件中斷

■異常服務例程可嵌套(異常中還可以出現異常)

異常服務例程可能出現缺頁

3.4系統調用

■操作系統服務的編程接口

■通常由高級語言編寫(C或者C++)

■程序訪問通常是通過高層次的API接口而不是直接進行系統調用

■三種最常用的應用程序編程接口(API)

Win32 API用于Windows

POSIX API用于POSIX-based systems (包括UNIX,LINUX,Mac OS X的所有版本)

Java API用于JAVA虛擬機(JVM)

系統調用的實現

■每個系統調用對應一個系統調用號

·系統調用接口根據系統調用號來維護表的索引

■系統調用接口調用內核態中的系統調用功能實現,并返回系統調用的狀態和結果

■用戶不需要知道系統調用的實現

·需要設置調用參數和獲取返回結果

·操作系統接口的細節大部分都隱藏在應用編程接口后

通過運行程序支持的庫來管理

函數調用和系統調用的不同處

系統調用與函數調用的堆棧不一樣,系統調用可以用特權操作

■系統調用

·INT和IRET指令用于系統調用

■系統調用時,堆棧切換和特權級的轉換

■函數調用

·CALL和RET用于常規調用

常規調用時沒有堆棧切換

中斷、異常和系統調用的開銷

■超過函數調用

■開銷:

·引導機制

·建立內核堆棧

·驗證參數(參數的有效性合法性是需要做驗證的)

·內核態映射到用戶態的地址空間

更新頁面映射權限

·內核態獨立地址空間(TLB)

系統調用示例

000pt;" ? 2???

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容