1.操作系統(tǒng)管理硬件
真正操縱硬件的是操作系統(tǒng),操作系統(tǒng)可以看成是應(yīng)用程序和硬件之間的中間層。所有的應(yīng)用程序?qū)τ布牟僮鞅仨毻ㄟ^(guò)操作系統(tǒng)來(lái)完成,這樣做的目的是:首先,防止硬件被失控的應(yīng)用程序所濫用;其次,操作系統(tǒng)提供統(tǒng)一的機(jī)制來(lái)控制這些復(fù)雜的底層硬件。
操作系統(tǒng)管理硬件
為了實(shí)現(xiàn)操作系統(tǒng)對(duì)硬件的操縱,操作系統(tǒng)引入了幾個(gè)抽象的概念。 文件是對(duì)IO設(shè)備的抽象、虛擬內(nèi)存是對(duì)內(nèi)存和磁盤IO的抽象、進(jìn)程是對(duì)處理器、內(nèi)存及IO設(shè)備的抽象 。
操作系統(tǒng)的抽象機(jī)制
2.進(jìn)程的解釋
(1).以shell命令行中執(zhí)行./hello命令為例進(jìn)行說(shuō)明,最開(kāi)始的時(shí)候只有shell進(jìn)程在運(yùn)行,即shell在等待命令行的輸入。
命令輸入
(2).當(dāng)通過(guò)shell進(jìn)程加載hello進(jìn)程時(shí),shell進(jìn)程通過(guò)系統(tǒng)調(diào)用來(lái)執(zhí)行我們的請(qǐng)求。系統(tǒng)調(diào)用會(huì)將控制權(quán)從shell進(jìn)程傳遞給操作系統(tǒng),操作系統(tǒng)保存shell進(jìn)程的 上下文 。然后,創(chuàng)建一個(gè)新的hello進(jìn)程及其上下文。接著,將控制權(quán)轉(zhuǎn)交給新的hello進(jìn)程。hello進(jìn)程執(zhí)行完成后,操作系統(tǒng)會(huì)恢復(fù)shell進(jìn)程的上下文,并且將控制權(quán)交給shell進(jìn)程,之后shell進(jìn)程繼續(xù)等待下一個(gè)命令的輸入。
進(jìn)程上下文切換
上下文:操作系統(tǒng)會(huì)跟蹤進(jìn)程運(yùn)行中所需要的所有狀態(tài)信息,這種狀態(tài)(例如:當(dāng)前PC和寄存器的值、內(nèi)存中的內(nèi)容等)稱為上下文。
3.線程的解釋
現(xiàn)代操作系統(tǒng)中一個(gè)進(jìn)程由多個(gè)線程組成,每個(gè)線程都運(yùn)行在進(jìn)程的上下文中,共享代碼和數(shù)據(jù)。
線程
4.虛擬內(nèi)存
操作系統(tǒng)為每個(gè)進(jìn)程提供了一個(gè)假象,即每個(gè)進(jìn)程都在獨(dú)自占用整個(gè)內(nèi)存空間。每個(gè)進(jìn)程看到的內(nèi)存都是一樣的,稱之為虛擬地址空間。
進(jìn)程的虛擬地址空間
進(jìn)程的虛擬地址空間:從下往上,地址是增大的。
第一個(gè)區(qū)域:用來(lái)存放程序的代碼和數(shù)據(jù)的,這個(gè)區(qū)域的內(nèi)容是從可執(zhí)行目標(biāo)文件中加載而來(lái)的。對(duì)所有進(jìn)程來(lái)說(shuō),代碼都是從固定的地址開(kāi)始的;
第二個(gè)區(qū)域:堆heap,函數(shù)malloc所申請(qǐng)的地址空間就在這個(gè)堆中的,堆可以在運(yùn)行時(shí)動(dòng)態(tài)的擴(kuò)展和收縮;
第三個(gè)區(qū)域:共享庫(kù)的存放區(qū)域,這個(gè)區(qū)域存放C語(yǔ)言的標(biāo)準(zhǔn)庫(kù)和數(shù)學(xué)庫(kù)這類共享庫(kù)的代碼和數(shù)據(jù);
第四個(gè)區(qū)域:用戶棧,函數(shù)調(diào)用的本質(zhì)就是壓棧;
第五個(gè)區(qū)域:為內(nèi)核保留的區(qū)域,應(yīng)用程序的代碼不能讀寫這個(gè)區(qū)域的數(shù)據(jù),也不能直接調(diào)用內(nèi)核中定義的函數(shù),這個(gè)區(qū)域?qū)?yīng)用程序不可見(jiàn);
5.文件
Linux中一切皆文件,鍵盤、鼠標(biāo)、磁盤、顯示器,甚至網(wǎng)絡(luò)這些都可以看成是文件,系統(tǒng)中所有的輸入和輸出都可以通過(guò)讀寫文件來(lái)完成。
"一切皆文件"
-
處理器
+關(guān)注
關(guān)注
68文章
19312瀏覽量
230033 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7508瀏覽量
88070 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6838瀏覽量
123379 -
計(jì)算機(jī)系統(tǒng)
+關(guān)注
關(guān)注
0文章
286瀏覽量
24130 -
線程
+關(guān)注
關(guān)注
0文章
505瀏覽量
19700
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論