姓名:劉姝戀? ? ? 學(xué)號(hào):19020100402? ?學(xué)院:電子工程學(xué)院
轉(zhuǎn)自:https://blog.csdn.net/xiong_yao/article/details/8268141
【嵌牛導(dǎo)讀】linux操作系統(tǒng)的組成部分
【嵌牛鼻子】嵌入式Linux?
【嵌牛提問(wèn)】linux操作系統(tǒng)的組成有哪幾部分辆床?
【嵌牛正文】
??一種說(shuō)法:
一般系統(tǒng)的組成由:核心,shell(命令解釋器)桅狠,應(yīng)用程序
linux也一樣佛吓,linux的核心(2.6.9.18),shell(/bin/bash),應(yīng)用程序(Xwindow)等
或是:
Linux內(nèi)核主要由五個(gè)子系統(tǒng)組成:進(jìn)程調(diào)度垂攘,內(nèi)存管理,虛擬文件系統(tǒng)淤刃,網(wǎng)絡(luò)接口晒他,進(jìn)程間通信。
1.進(jìn)程調(diào)度(SCHED):控制進(jìn)程對(duì)CPU的訪問(wèn)逸贾。當(dāng)需要選擇下一個(gè)進(jìn)程運(yùn)行時(shí)陨仅,由調(diào)度程序選擇最值得運(yùn)行的進(jìn)程津滞。可運(yùn)行進(jìn)程實(shí)際上是僅等待CPU資源的進(jìn)程灼伤,如果某個(gè)進(jìn)程在等待其它資源触徐,則該進(jìn)程是不可運(yùn)行進(jìn)程。Linux使用了比較簡(jiǎn)單的基于優(yōu)先級(jí)的進(jìn)程調(diào)度算法選擇新的進(jìn)程狐赡。
2.內(nèi)存管理(MM)允許多個(gè)進(jìn)程安全的共享主內(nèi)存區(qū)域撞鹉。Linux 的內(nèi)存管理支持虛擬內(nèi)存,即在計(jì)算機(jī)中運(yùn)行的程序颖侄,其代碼鸟雏,數(shù)據(jù),堆棧的總量可以超過(guò)實(shí)際內(nèi)存的大小览祖,操作系統(tǒng)只是把當(dāng)前使用的程序塊保留在內(nèi)存中孝鹊,其余的程序塊則保留在磁盤中。必要時(shí)展蒂,操作系統(tǒng)負(fù)責(zé)在磁盤和內(nèi)存間交換程序塊又活。內(nèi)存管理從邏輯上分為硬件無(wú)關(guān)部分和硬件有關(guān)部分。硬件無(wú)關(guān)部分提供了進(jìn)程的映射和邏輯內(nèi)存的對(duì)換锰悼;硬件相關(guān)的部分為內(nèi)存管理硬件提供了虛擬接口柳骄。
3.虛擬文件系統(tǒng)(Virtual File System,VFS)隱藏了各種硬件的具體細(xì)節(jié),為所有的設(shè)備提供了統(tǒng)一的接口松捉,VFS提供了多達(dá)數(shù)十種不同的文件系統(tǒng)夹界。虛擬文件系統(tǒng)可以分為邏輯文件系統(tǒng)和設(shè)備驅(qū)動(dòng)程序。邏輯文件系統(tǒng)指Linux所支持的文件系統(tǒng)隘世,如ext2,fat等可柿,設(shè)備驅(qū)動(dòng)程序指為每一種硬件控制器所編寫的設(shè)備驅(qū)動(dòng)程序模塊。
4.網(wǎng)絡(luò)接口(NET)提供了對(duì)各種網(wǎng)絡(luò)標(biāo)準(zhǔn)的存取和各種網(wǎng)絡(luò)硬件的支持丙者。網(wǎng)絡(luò)接口可分為網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)驅(qū)動(dòng)程序复斥。網(wǎng)絡(luò)協(xié)議部分負(fù)責(zé)實(shí)現(xiàn)每一種可能的網(wǎng)絡(luò)傳輸協(xié)議。網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)與硬件設(shè)備通訊械媒,每一種可能的硬件設(shè)備都有相應(yīng)的設(shè)備驅(qū)動(dòng)程序目锭。
5.進(jìn)程間通訊(IPC) 支持進(jìn)程間各種通信機(jī)制。
不識(shí)廬山真面目――操作系統(tǒng)的組成
操作系統(tǒng)概念對(duì)新手來(lái)說(shuō)就很容易混淆纷捞。拜現(xiàn)代的許多商業(yè)操作系統(tǒng)所賜痢虹,很少有用戶能不費(fèi)力氣地明白說(shuō)出什么是操作系統(tǒng)。很多人認(rèn)為操作系統(tǒng)就是Windows主儡,操作系統(tǒng)當(dāng)然要包含字處理軟件奖唯,操作系統(tǒng)怎么可以不處理圖形? 說(shuō)實(shí)話糜值,正是由于這些廣泛存在的誤解丰捷,原本操作系統(tǒng)的定義的內(nèi)涵已經(jīng)越來(lái)越偏離大眾的理解了――不識(shí)廬山真面目坯墨,只緣身在此山中。所以病往,我們?cè)谶@里有必要對(duì)這個(gè)概念進(jìn)行一番界定捣染,才能展開(kāi)我們自己的討論――勿于浮沙建高塔。
如果您已經(jīng)比較熟悉這些情況和淵源了停巷,可以跳過(guò)這部分耍攘,選擇其它您感興趣的文章。
操作系統(tǒng)功能變得愈來(lái)愈強(qiáng)大叠穆,但結(jié)構(gòu)也越來(lái)越復(fù)雜少漆。在以方便用戶 (包括開(kāi)發(fā)人員和終端用戶)為宗旨的思想下,操作系統(tǒng)不斷加入新功能硼被,新服務(wù)示损。回憶從前大家使用的DOS系統(tǒng)僅僅只需要一張軟盤(拿DOS舉例是因?yàn)楸容^切合國(guó)內(nèi)用戶的實(shí)際情況嚷硫,其實(shí)Unix是比DOS年代久遠(yuǎn)的检访,但大家以前很少使用,大部分人都是從DOS開(kāi)始計(jì)算機(jī)之旅的仔掸。當(dāng)然Unix的最初版本也用不了幾張軟盤)脆贵,而如今的windows系統(tǒng)或Linux系統(tǒng)動(dòng)輒就需要數(shù)張光盤,麻雀已經(jīng)變成了恐龍――雖然它們都有五臟六腑起暮。
詞匯辨析:操作系統(tǒng)
???操作系統(tǒng)一詞現(xiàn)在已經(jīng)有了很多不同的內(nèi)涵卖氨。操作系統(tǒng)通常被認(rèn)為是整個(gè)系統(tǒng)中負(fù)責(zé)完成最基本功能和系統(tǒng)管理的部分。這些部分應(yīng)該包括內(nèi)核负懦、設(shè)備驅(qū)動(dòng)程序筒捺、啟動(dòng)引導(dǎo)程序、命令行shell或者其他種類的用戶界面纸厉、基本的文件管理工具和系統(tǒng)工具系吭。這些都是必不可少的東西。
????可是颗品,由于大多數(shù)最終用戶是通過(guò)商業(yè)途徑得到操作系統(tǒng)肯尺,他們很少會(huì)僅僅購(gòu)買一個(gè)只包含以上功能的軟件包。一般的躯枢,他們?cè)诘玫讲僮飨到y(tǒng)的同時(shí)则吟,更需要的是構(gòu)架于其上的應(yīng)用軟件,來(lái)完成所需的實(shí)際功能锄蹂。為了滿足這種需求逾滥,操作系統(tǒng)一般要和應(yīng)用軟件綁定發(fā)行和出售。這樣的軟件包在Linux領(lǐng)域被稱作發(fā)行包,如RedHat8.0或 紅旗Linux4.0等寨昙。
????由此就引起了一些誤解,許多用戶理所當(dāng)然地認(rèn)為發(fā)行包就是操作系統(tǒng)掀亩。但是舔哪,從邏輯結(jié)構(gòu)劃分,應(yīng)用軟件不應(yīng)該屬于操作系統(tǒng)槽棍。
????為了符合大多數(shù)人的習(xí)慣捉蚤,在本雜志范圍內(nèi),我們一般用操作系統(tǒng)這個(gè)詞指代發(fā)行包炼七,而用內(nèi)核表示操作系統(tǒng)本來(lái)的邏輯概念缆巧。在不引起混淆的情況下,有時(shí)也會(huì)用操作系統(tǒng)表示內(nèi)核豌拙。
雖然變成了恐龍陕悬,但筋骨脈絡(luò)還是清楚的,現(xiàn)代操作系統(tǒng)的結(jié)構(gòu)相對(duì)是穩(wěn)定按傅、清晰的捉超。操作系統(tǒng)本質(zhì)上也是大型軟件包(從開(kāi)發(fā)者的角度看),因此結(jié)構(gòu)組織也不會(huì)與其它大型軟件迥然而異:采取了分層結(jié)構(gòu)唯绍,越向上層抽象程度越高拼岳,越接近用戶;相反越向下層况芒,越靠近硬件惜纸,抽象也相對(duì)接近硬件。而且上層軟件依靠下層軟件提供的服務(wù)绝骚,再加上本身提供附加服務(wù)為更高層服務(wù)耐版。總體呈現(xiàn)倒金子塔形皮壁。
下面我們就簡(jiǎn)要分析一下操作系統(tǒng)的體系結(jié)構(gòu)椭更。
增繁就簡(jiǎn)――操作系統(tǒng)組成
形形色色的操作系統(tǒng)組成結(jié)構(gòu)都不盡相同。雖然大多是為同樣的目的蛾魄,但由于實(shí)現(xiàn)方法可以自由選擇虑瀑,所以各個(gè)操作系統(tǒng)理所當(dāng)然的存在差異,有些系統(tǒng)之間差異還相當(dāng)大滴须。
我們選取最常見(jiàn)的操作系統(tǒng)(UNIX)組成結(jié)構(gòu)舌狗,向大家展示操作系統(tǒng)的體系結(jié)構(gòu)的大致框架。對(duì)于各種操作系統(tǒng)之間的具體差異扔水,大家可以跟下面講述的結(jié)構(gòu)進(jìn)行對(duì)比認(rèn)識(shí)痛侍。???
在這里,我們自己用一組簡(jiǎn)單的公式來(lái)描述操作系統(tǒng)的組成要素:
操作系統(tǒng)?=?內(nèi)核?+?系統(tǒng)程序
系統(tǒng)程序?=?編譯環(huán)境?+?API
編譯環(huán)境?=?編譯程序?+?連接程序?+?裝載程序
API??=?系統(tǒng)調(diào)用?+?語(yǔ)言庫(kù)函數(shù)(C、C++主届、Java等等)
AUI??=??shell +?系統(tǒng)服務(wù)例程(如x服務(wù)器等)+?應(yīng)用程序(瀏覽器赵哲,字處理,編輯器等)
而整個(gè)軟件系統(tǒng)是:
軟件系統(tǒng)?=?操作系統(tǒng)?+ AUI
操作系統(tǒng)最底層的組件是內(nèi)核君丁,其上層搭建了許多系統(tǒng)軟件枫夺。
系統(tǒng)程序包括三個(gè)部分,分別是:編譯環(huán)境绘闷、應(yīng)用程序接口和用戶接口橡庞。
編譯環(huán)境包含匯編、C?等低高級(jí)語(yǔ)言編譯程序印蔗,連接程序和裝載程序扒最,這些程序負(fù)責(zé)將文本格式的程序語(yǔ)言轉(zhuǎn)變?yōu)闄C(jī)器能識(shí)別和裝載的機(jī)器代碼。
應(yīng)用程序接口(API)包含內(nèi)核提供的系統(tǒng)調(diào)用接口和語(yǔ)言庫(kù)华嘹,系統(tǒng)調(diào)用是為了能讓應(yīng)用程序使用內(nèi)核服務(wù)吧趣,語(yǔ)言庫(kù)函數(shù)則是為了方便應(yīng)用程序開(kāi)發(fā),所以將一些常用的基礎(chǔ)功能預(yù)先編譯以供使用除呵,比如對(duì)C語(yǔ)言來(lái)說(shuō)常用的C庫(kù)等再菊;
用戶接口(AUI)包括我們熟悉的shell、系統(tǒng)服務(wù)程序和常用的應(yīng)用程序颜曾。
這是一個(gè)典型的結(jié)構(gòu)纠拔,但不是一成不變。許多操作系統(tǒng)的發(fā)行中會(huì)有所刪減泛豪,比如應(yīng)用于嵌入式設(shè)備的系統(tǒng)稠诲,對(duì)X服務(wù)器就可能不做要求。但是像內(nèi)核诡曙、系統(tǒng)調(diào)用等要素是必不可少的臀叙。
下圖顯示了操作系統(tǒng)的概念結(jié)構(gòu)。
系統(tǒng)軟件:系統(tǒng)軟件是相對(duì)應(yīng)用軟件而言的价卤,應(yīng)用軟件針對(duì)最終用戶需求編寫劝萤,完成實(shí)際功能,而系統(tǒng)軟件則是為了簡(jiǎn)化應(yīng)用程序的開(kāi)發(fā)而存在的慎璧,比如數(shù)據(jù)庫(kù)系統(tǒng)為應(yīng)用軟件提供了有效的數(shù)據(jù)傳輸床嫌、存儲(chǔ)服務(wù);還有編程語(yǔ)言的執(zhí)行環(huán)境――它由C庫(kù)實(shí)現(xiàn)――也屬于一種系統(tǒng)程序胸私,它為應(yīng)用程序開(kāi)發(fā)提供了諸如I/O操作例程厌处,圖形庫(kù),計(jì)算庫(kù)等等基礎(chǔ)服務(wù)岁疼±妫可見(jiàn)系統(tǒng)軟件范圍覆蓋很廣,只要面向的服務(wù)群體不是最終用戶的軟件都可以劃歸到系統(tǒng)軟件中來(lái)。
原文鏈接:https://blog.csdn.net/xiong_yao/article/details/8268141
作者:xxxxx_
鏈接:http://www.reibang.com/p/d2c07c34f488
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有瑰排。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)贯要,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。