0.關注博主有更多知識
操作系統(tǒng)入門知識合集
目錄
3.1操作系統(tǒng)啟動過程
3.1.1BIOS和主引導記錄MBR
思考題:
?3.1.2操作系統(tǒng)的啟動過程
思考題:
3.2用戶界面
3.2.1用戶界面概念
?思考題:
3.2.2系統(tǒng)調(diào)用
3.1操作系統(tǒng)啟動過程
3.1.1BIOS和主引導記錄MBR
計算機有兩種模式:
1.實模式:當計算機剛開機、剛上電、還沒有加載操作系統(tǒng)的時候,計算器處于實模式(實地址模式,REAL MODE),程序將會按照8086的尋址方式方法直接訪問物理地址0h-FFFFFh(1MB)的空間(我們說過沒有操作系統(tǒng)的計算機也能運行程序)。其尋址并不是直接拿到物理地址,而是需要一定的轉換,也就是說,當程序拿到某個地址,需要將其拆分為段地址:偏移地址,計算之后的結果才是物理地址。此時CPU只能支持單任務運行。
2.保護模式:又稱內(nèi)存保護模式(PROTECT MODE)。當操作系統(tǒng)被加載到內(nèi)存后,開始接管計算機之后,計算機就處于保護模式了。此時程序的尋址方式相較于實模式會變得更加復雜,在這種模式下程序基本上能夠訪問完整的內(nèi)存空間,但并不是直接訪問物理地址,而是操作系統(tǒng)通過一種特殊的手段使程序必須通過段頁式的尋址機制訪問內(nèi)存。這種特殊手段稱為虛擬內(nèi)存技術。當計算機處于保護模式下時,應用程序和操作系統(tǒng)的運行環(huán)境都被保護,且CPU支持多任務運行。
具體分析計算機的實模式:
1.實模式下,程序只能訪問1MB的空間,這1MB的空間又被分成前640K[00000 -> 9FFFF]:基本內(nèi)存;中間128K[A0000 -> BFFFF]:顯卡顯存;末尾256K[C0000 -> FFFFF]:BIOS。其中末尾256K的BIOS又分為[C0000 -> C7FFF]:顯示卡BOIS;[C8000 -> CBFFF]:IDE控制器BIOS;最后64K[F0000 -> FFFFF]:系統(tǒng)BIOS。
2.系統(tǒng)BIOS:系統(tǒng)BIOS稱為基本輸入/輸出系統(tǒng),它是一個固件(以硬件形式存在的軟件稱為固件),它位于BIOS的最后64K。其功能為系統(tǒng)啟動配置、基本設備的I/O服務、系統(tǒng)的加電自檢和啟動。
3.系統(tǒng)啟動配置:其實我們已經(jīng)跟它見過面了,它就是CMOS設置。它能夠讓用戶設置一些最基本的啟動配置,例如是從磁盤啟動操作系統(tǒng)還是從U盤啟動操作系統(tǒng)。
4.系統(tǒng)BIOS提供的基本設備的I/O服務:系統(tǒng)BIOS是一個固件,所以被加載到內(nèi)存后就變成了真正意義上的軟件。它提供I/O服務的方式是以中斷的形式存在,不同的中斷對應不同的功能。
每一種功能還有對應的子功能,例如13號中斷信號,它對應軟盤的I/O調(diào)用,具體怎么調(diào)用,就取決了子功能了。
?現(xiàn)在確定了基本I/O的工作,就需要進一步細化工作。例如13號中斷信號的2號子功能,讀扇區(qū),這時候還需要提供一些參數(shù)以便直到讀哪個扇區(qū)、讀多少扇區(qū)等等。
? 5.系統(tǒng)BIOS提供的加電自檢功能:加電自檢稱為POST,計算機剛上電的時候,CPU執(zhí)行開機之后的第一條指令跳轉到POST進行自檢。加電自檢的功能是對基本硬件進行初始化工作,例如CPU、內(nèi)存、顯卡等等,如果檢查出現(xiàn)錯誤,將會發(fā)出警報聲提醒用戶。POST加電自檢以后,會依次查找顯卡BIOS、調(diào)用顯卡BIOS;然后依次查找其他設備的BIOS;然后顯示啟動畫面,顯示一些BIOS信息、芯片組型號、主板信息等等;然后從某種介質(zhì)當中讀取操作系統(tǒng)到內(nèi)存中,最后操作系統(tǒng)接管計算機。
主引導記錄MBR:
MBR存放于主啟動扇區(qū)中,主啟動扇區(qū)位于磁盤的首個扇區(qū)(第一個磁面上的第一個磁道的第一個扇區(qū)),它的大小有512字節(jié),存放和操作系統(tǒng)有關的相關信息(Main Boot Record)。我們知道操作系統(tǒng)是放在磁盤上的,所以操作系統(tǒng)被放進內(nèi)存之前一定是由MBR做工作。但MBR并不會直接將操作系統(tǒng)寫入內(nèi)存,而是讀取分區(qū)引導記錄PBR。PBR位于操作系統(tǒng)所處的分區(qū)的首個扇區(qū),它可以作為直接引導操作系統(tǒng)加載到內(nèi)存的直接引導記錄。
由此我們可以推測出BIOS和MBR程序運行的過程大致是這樣的:首先用戶按下計算機的電源開關->CPU執(zhí)行第一條指令跳轉到POST進行開機自檢->檢查完成后,讀取CMOS設置的操作系統(tǒng)的啟動方式->CPU讀取MBR到內(nèi)存中來->MBR讀取分區(qū)表,找到分區(qū)表中的活動分區(qū)(通常是操作系統(tǒng)所在的分區(qū)),并確認其他的分區(qū)都不是活動的(加載的操作系統(tǒng)只能有一個),然后MBR讀取分區(qū)的PBR到內(nèi)存中->PBR繼續(xù)控制后面的操作系統(tǒng)的引導過程。
思考題:
1.BIOS中斷時INT xxh的形式,例如INT 13H是磁盤讀寫服務。那么INT 21H與BIOS的中斷信號的中斷機制是不是一樣的呢?
INT 21H是DOS的一個中斷信號,DOS稱為磁盤操作系統(tǒng),它是負責直接管理磁盤的軟件。而BIOS作為一個軟件(因為它被放在內(nèi)存中,BIOS是內(nèi)嵌在主板上的),它發(fā)送的中斷信號與DOS的中斷信號是有本質(zhì)區(qū)別的。DOS作為操作系統(tǒng),它的INT 21H一定是一個系統(tǒng)調(diào)用,是為上層 應用程序提供的接口;而BIOS它不是操作系統(tǒng),所以可以理解為INT 21H這個中斷是提供給BIOS使用的。
?3.1.2操作系統(tǒng)的啟動過程
操作系統(tǒng)的啟動過程的定義是從計算機加電到操作系統(tǒng)加載完成,能夠被用戶使用的這么一段過程。它分為三個階段:初始引導、核心初始化、系統(tǒng)初始化。
初始引導:
1.目的:把操作系統(tǒng)核心裝入內(nèi)存并讓操作系統(tǒng)開始接管計算機
2.過程:計算機開機->加電自檢->BIOS的啟動程序運行,加載MBR到內(nèi)存中->MBR加載PBR->加載硬盤上的操作系統(tǒng)內(nèi)核,并初始化基本參數(shù)->內(nèi)核加載到內(nèi)存之后,會繼續(xù)加載操作系統(tǒng)的剩余部分(例如微內(nèi)核結構的操作系統(tǒng),會加載核外服務器),最后完全控制計算機。
核心初始化:
1.目的:操作系統(tǒng)內(nèi)核初始化操作系統(tǒng)的核心數(shù)據(jù)
2.典型工作:初始化各種寄存器、初始化存儲系統(tǒng)和頁表、構建核心進程......
系統(tǒng)初始化:
1.目的:為用戶使用操作系統(tǒng)做好準備,使操作系統(tǒng)處于待命狀態(tài)
2.主要工作:初始化文件系統(tǒng)、初始化網(wǎng)絡系統(tǒng)、初始化控制臺、初始化圖形化界面......
Windows的啟動過程:
1.POST:加電后由BIOS啟動主機的自檢程序
2.初始引導:BIOS讀入MBR到內(nèi)存,MBR引導DOS7.0的啟動,并調(diào)入操作系統(tǒng)內(nèi)核到內(nèi)存,然后Windows接管計算機
3.核心初始化:初始化資源狀態(tài)、核心數(shù)據(jù)等
4.系統(tǒng)初始化:GUI界面生成,用戶可以隨時使用操作系統(tǒng),操作系統(tǒng)處于待命、消息接收狀態(tài)
Linux的啟動過程:
POST->MBR->KERNEL映像->KERNEL映像邊解壓邊執(zhí)行->內(nèi)核初始化->內(nèi)核開始工作,接管計算機->系統(tǒng)初始化,生成控制臺界面。
需要注意的使,Linux的內(nèi)核映像并不是一個完整的映像,而是一個壓縮文件(可能前面的某些部分是解壓后的真實代碼),這個內(nèi)核映像被加載到內(nèi)存后是邊解壓邊工作的。
思考題:
1.操作系統(tǒng)的初始化引導涉及哪些程序模塊?存放的介質(zhì)是什么?
初始化引導中的程序模塊涉及到:BIOS的啟動程序,它內(nèi)嵌在主板的BIOS芯片上;硬盤當中的MBR和PBR,存放在硬盤對應分區(qū)的首個扇區(qū)當中;操作系統(tǒng)的內(nèi)核,存放在硬盤的某個分區(qū)。
3.2用戶界面
3.2.1用戶界面概念
用戶界面的定義:操作系統(tǒng)提供給用戶控制計算機的機制,這種機制又稱用戶接口。
用戶界面分為兩類:用戶可視化操作界面(可視化界面、控制臺窗口、批處理程序);系統(tǒng)調(diào)用(通常被程序員使用)。
用戶可視化操作界面:
1.圖形用戶接口(GUI,Graphics User Interface):提供這種用戶的接口的典型操作系統(tǒng)為Windows和MAC OS,它們由窗口、圖標、菜單、按鈕、鼠標等組成。
2.鍵盤命令(COMMAND):在控制臺環(huán)境下接收鍵盤輸入的命令,這些命令分為普通命令、批處理程序、shell腳本等等。
3.普通命令:以DOS操作系統(tǒng)為例,它的典型命令就有文件管理的命令COPY、COMP、TYPE、DEL、REN,磁盤管理的命令FOMAT、CHKDSK、DISKCOPY、DISKCOMP,目錄管理的命令DIR、CD、MD、RD、TREE......以Linux操作系統(tǒng)為例,它的典型命令就有查看命名和幫助的指令man,改變工作路徑的命令cd,列出目錄信息的指令ls......以上列舉的都是操作系統(tǒng)提供的普通命令。
4.批處理程序:普通命令的集合,這些集合起來的命令按批處理,并且命令與命令之間具有一定的邏輯關系。批處理程序支持變量替換、條件、轉移、循環(huán)、注釋等基本的簡單語法,在Windows環(huán)境下,批處理程序的后綴為.BAT(.bat)。我們編寫一個最簡單的批處理程序,它直接輸出"Hello Bat"到控制臺上。
@echo off
echo Hello Bat!
pause
? 5.Shell:Shell是操作系統(tǒng)與用戶交互的界面,它表現(xiàn)為通過控制臺執(zhí)行用戶的命令,但實際上Shell本身不執(zhí)行命令,而是組織和管理命令,將命令交給操作系統(tǒng)執(zhí)行,然后執(zhí)行的結果通過Shell返回給用戶,所以我們說它是表現(xiàn)為執(zhí)行用戶的命令。
? 6.Shell的發(fā)展與分類:第一個Shell便是1970年誕生的Bsh,具有較強的腳本編程功能,隨后便是1980年出現(xiàn)的Csh,使用C語言,用戶命令交互方便;在此基礎上,又誕生出了Ksh,Ksh結合了Bsh和Csh的優(yōu)勢;最后,現(xiàn)在主流的Shell便是Bash,Bash是對Bsh的升級,并且吸收了Ksh的特性,是一個開源的Shell。
? 7.Bash的主要功能:Bash提供命令行編輯功能、命令和文件名補全功能、命令歷史功能、命令別名功能、作業(yè)控制功能、管道與重定向、將命令序列定義為功能鍵的功能、Shell腳本編程。命令行編輯功能可以操作左右方向鍵,使得光標在當前命令行中以后字符間進行任意移動;退格鍵能夠刪除命令行中光標左邊的字符;Del鍵能夠刪除當前光標處的字符......可以使用Tab鍵在命令查找路徑中查找匹配的命令,并進行命令拼寫的補全;使用Tab鍵可對文件和目錄名進行補全......可以使用上下方向鍵瀏覽已輸入的命令(歷史命令)......在Linux的Bash上,可以使用'<'操作符將命令輸入由默認的鍵盤更改(重定向)為指定的文件;操作符'>'將命令輸出由默認的顯示器更改(重定向)為指定的文件;操作符'>>'將命令輸出重定向并追加到指定文件的末尾......
8.Bash功能實例(以Linux為例):
1.將命令輸出重定向到文件:
? 2.管道:管道是一種特殊的重定向操作,其操作符為'|',用于連接左右兩個命令,將'|'左邊命令的執(zhí)行結果作為'|'右邊命令的輸入。并且在同一條命令中可以使用多個'|'連接多個命令。
?思考題:
1.比較Windows7與Linux早期版本都有哪些典型的操作界面?操作界面對普通用戶選擇操作系統(tǒng)有何影響?
Windows的GUI界面、Linux的Shell界面;對應用戶來說,肯定會選擇互動性高、方便、快捷、直觀、易操作的操作系統(tǒng);不過在不同的需求、環(huán)境下,選擇的操作系統(tǒng)也有所差別,例如在公司企業(yè)當中不適合將Windows作為第一生產(chǎn)力操作系統(tǒng),更加適合選擇Linux。
3.2.2系統(tǒng)調(diào)用
操作系統(tǒng)提供的用戶接口分為操作界面和系統(tǒng)調(diào)用,它們都是操作系統(tǒng)提供給用戶與計算機互動的接口。操作界面通常被普通用戶使用,系統(tǒng)調(diào)用通常被程序員使用。
系統(tǒng)調(diào)用的定義:
操作系統(tǒng)內(nèi)核為應用程序提供的服務/函數(shù)。例如DOS操作系統(tǒng)提供的21h(09)(21號中斷9號功能),C語言庫提供的printf函數(shù)(里面封裝了向顯示器輸出的系統(tǒng)調(diào)用)、exit函數(shù)(里面封裝了操作系統(tǒng)控制進程的函數(shù))。
?系統(tǒng)調(diào)用的特點:
1.系統(tǒng)調(diào)用一般都涉及核心資源或硬件的操作,所以系統(tǒng)調(diào)用的具體代碼屬于內(nèi)核,運行于內(nèi)核態(tài)
2.每個系統(tǒng)調(diào)用具有唯一的編號(ID)
3.調(diào)用系統(tǒng)調(diào)用會產(chǎn)生中斷,這種中斷屬于自愿中斷,因為是程序員安排中斷在這里的
系統(tǒng)調(diào)用的中斷過程:
實際上與普通中斷一樣,都是令CPU暫定當前任務的執(zhí)行,轉向執(zhí)行中斷處理程序。
調(diào)用系統(tǒng)調(diào)用后,CPU如何發(fā)生態(tài)的轉換??
1.DOS操作系統(tǒng)利用INT 21h中斷發(fā)生態(tài)的轉換。以一段匯編代碼為例:
string DB 'Hello!' ;定義要顯示的字符串
......
MOV DX, string ;DX字符串地址
MOV AH, 09h ; AH-09h號子功能
INT 21h
指令"MOV AH,09h"將中斷程序的入口地址填入AH寄存器,然后執(zhí)行"INT 21h"指令,這條指令能夠將CPU的態(tài)從用戶態(tài)修改為內(nèi)核態(tài)。
2.Linux操作系統(tǒng)利用INT 80h中斷發(fā)生態(tài)的轉換。以一段匯編代碼為例:
;輸出字符串︰Hello World !
MOV EBX, 1 ;EBX送1表示stdout
MOV ECX, MSG ;字符串的首地址送入ecx
MOV EDX, 14 ;字符串的長度送入edx
MOV EAX 4 ;指定系統(tǒng)調(diào)用的編號
INT 80h ;中斷︰輸出字串
MSG: DB "Hello World!"
指令"MOV EAX 4"將4號系統(tǒng)調(diào)用的入口地址填入EAX寄存器,然后執(zhí)行"INT 80h"指令,使得該程序陷入內(nèi)核,CPU工作在內(nèi)核態(tài)。
隱式系統(tǒng)調(diào)用:
類似于API函數(shù),通常在高級語言中使用,其中包含有"INT 80h"中斷指令,執(zhí)行相應的系統(tǒng)調(diào)用。例如C語言程序:
#include <stdio.h>
int main()
{
printf("Hello World!\n");
exit(0);
}
我們雖然看不到任何匯編指令,但熟悉C程序編譯過程的朋友一定知道在編譯階段檢查完語法之后生成匯編語句。對應的匯編語句就有"INT 80h"這條指令。
Linux系統(tǒng)調(diào)用的工作原理:文章來源:http://www.zghlxwxcb.cn/news/detail-430714.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-430714.html
到了這里,關于操作系統(tǒng)——操作系統(tǒng)用戶界面的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!