姓名:謝恩龍? ? ? ?學號:19020100029? ?學院:電子工程學院
轉自:https://blog.csdn.net/xiong_yao/article/details/8268141
【嵌牛導讀】linux操作系統(tǒng)的組成部分
【嵌牛鼻子】嵌入式Linux?
【嵌牛提問】linux操作系統(tǒng)的組成有哪幾部分只厘?
【嵌牛正文】
??一種說法:
一般系統(tǒng)的組成由:核心水由,shell(命令解釋器),應用程序
linux也一樣骡湖,linux的核心(2.6.9.18)雇初,shell(/bin/bash),應用程序(Xwindow)等
或是:
Linux內核主要由五個子系統(tǒng)組成:進程調度,內存管理帘腹,虛擬文件系統(tǒng)嚎研,網絡接口蝌蹂,進程間通信噩斟。
1.進程調度(SCHED):控制進程對CPU的訪問。當需要選擇下一個進程運行時孤个,由調度程序選擇最值得運行的進程剃允。可運行進程實際上是僅等待CPU資源的進程,如果某個進程在等待其它資源斥废,則該進程是不可運行進程椒楣。Linux使用了比較簡單的基于優(yōu)先級的進程調度算法選擇新的進程。
2.內存管理(MM)允許多個進程安全的共享主內存區(qū)域营袜。Linux 的內存管理支持虛擬內存撒顿,即在計算機中運行的程序,其代碼荚板,數(shù)據凤壁,堆棧的總量可以超過實際內存的大小,操作系統(tǒng)只是把當前使用的程序塊保留在內存中跪另,其余的程序塊則保留在磁盤中拧抖。必要時,操作系統(tǒng)負責在磁盤和內存間交換程序塊免绿。內存管理從邏輯上分為硬件無關部分和硬件有關部分唧席。硬件無關部分提供了進程的映射和邏輯內存的對換;硬件相關的部分為內存管理硬件提供了虛擬接口嘲驾。
3.虛擬文件系統(tǒng)(Virtual File System,VFS)隱藏了各種硬件的具體細節(jié)淌哟,為所有的設備提供了統(tǒng)一的接口,VFS提供了多達數(shù)十種不同的文件系統(tǒng)辽故。虛擬文件系統(tǒng)可以分為邏輯文件系統(tǒng)和設備驅動程序徒仓。邏輯文件系統(tǒng)指Linux所支持的文件系統(tǒng),如ext2,fat等誊垢,設備驅動程序指為每一種硬件控制器所編寫的設備驅動程序模塊掉弛。
4.網絡接口(NET)提供了對各種網絡標準的存取和各種網絡硬件的支持。網絡接口可分為網絡協(xié)議和網絡驅動程序喂走。網絡協(xié)議部分負責實現(xiàn)每一種可能的網絡傳輸協(xié)議殃饿。網絡設備驅動程序負責與硬件設備通訊,每一種可能的硬件設備都有相應的設備驅動程序芋肠。
5.進程間通訊(IPC) 支持進程間各種通信機制乎芳。
不識廬山真面目――操作系統(tǒng)的組成
操作系統(tǒng)概念對新手來說就很容易混淆。拜現(xiàn)代的許多商業(yè)操作系統(tǒng)所賜业栅,很少有用戶能不費力氣地明白說出什么是操作系統(tǒng)秒咐。很多人認為操作系統(tǒng)就是Windows,操作系統(tǒng)當然要包含字處理軟件碘裕,操作系統(tǒng)怎么可以不處理圖形? 說實話攒钳,正是由于這些廣泛存在的誤解帮孔,原本操作系統(tǒng)的定義的內涵已經越來越偏離大眾的理解了――不識廬山真面目,只緣身在此山中。所以文兢,我們在這里有必要對這個概念進行一番界定晤斩,才能展開我們自己的討論――勿于浮沙建高塔。
如果您已經比較熟悉這些情況和淵源了姆坚,可以跳過這部分澳泵,選擇其它您感興趣的文章。
操作系統(tǒng)功能變得愈來愈強大兼呵,但結構也越來越復雜兔辅。在以方便用戶 (包括開發(fā)人員和終端用戶)為宗旨的思想下,操作系統(tǒng)不斷加入新功能击喂,新服務维苔。回憶從前大家使用的DOS系統(tǒng)僅僅只需要一張軟盤(拿DOS舉例是因為比較切合國內用戶的實際情況懂昂,其實Unix是比DOS年代久遠的介时,但大家以前很少使用,大部分人都是從DOS開始計算機之旅的凌彬。當然Unix的最初版本也用不了幾張軟盤)沸柔,而如今的windows系統(tǒng)或Linux系統(tǒng)動輒就需要數(shù)張光盤,麻雀已經變成了恐龍――雖然它們都有五臟六腑铲敛。
詞匯辨析:操作系統(tǒng)
???操作系統(tǒng)一詞現(xiàn)在已經有了很多不同的內涵褐澎。操作系統(tǒng)通常被認為是整個系統(tǒng)中負責完成最基本功能和系統(tǒng)管理的部分。這些部分應該包括內核原探、設備驅動程序乱凿、啟動引導程序、命令行shell或者其他種類的用戶界面咽弦、基本的文件管理工具和系統(tǒng)工具徒蟆。這些都是必不可少的東西。
????可是型型,由于大多數(shù)最終用戶是通過商業(yè)途徑得到操作系統(tǒng)段审,他們很少會僅僅購買一個只包含以上功能的軟件包。一般的闹蒜,他們在得到操作系統(tǒng)的同時寺枉,更需要的是構架于其上的應用軟件,來完成所需的實際功能绷落。為了滿足這種需求姥闪,操作系統(tǒng)一般要和應用軟件綁定發(fā)行和出售。這樣的軟件包在Linux領域被稱作發(fā)行包砌烁,如RedHat8.0或 紅旗Linux4.0等筐喳。
????由此就引起了一些誤解催式,許多用戶理所當然地認為發(fā)行包就是操作系統(tǒng)。但是避归,從邏輯結構劃分荣月,應用軟件不應該屬于操作系統(tǒng)。
????為了符合大多數(shù)人的習慣梳毙,在本雜志范圍內哺窄,我們一般用操作系統(tǒng)這個詞指代發(fā)行包,而用內核表示操作系統(tǒng)本來的邏輯概念账锹。在不引起混淆的情況下萌业,有時也會用操作系統(tǒng)表示內核缺谴。
雖然變成了恐龍梭灿,但筋骨脈絡還是清楚的,現(xiàn)代操作系統(tǒng)的結構相對是穩(wěn)定篓足、清晰的鸟缕。操作系統(tǒng)本質上也是大型軟件包(從開發(fā)者的角度看)晶框,因此結構組織也不會與其它大型軟件迥然而異:采取了分層結構,越向上層抽象程度越高懂从,越接近用戶授段;相反越向下層,越靠近硬件番甩,抽象也相對接近硬件侵贵。而且上層軟件依靠下層軟件提供的服務,再加上本身提供附加服務為更高層服務缘薛∏嫌總體呈現(xiàn)倒金子塔形。
下面我們就簡要分析一下操作系統(tǒng)的體系結構宴胧。
增繁就簡――操作系統(tǒng)組成
形形色色的操作系統(tǒng)組成結構都不盡相同漱抓。雖然大多是為同樣的目的,但由于實現(xiàn)方法可以自由選擇恕齐,所以各個操作系統(tǒng)理所當然的存在差異乞娄,有些系統(tǒng)之間差異還相當大。
我們選取最常見的操作系統(tǒng)(UNIX)組成結構显歧,向大家展示操作系統(tǒng)的體系結構的大致框架仪或。對于各種操作系統(tǒng)之間的具體差異,大家可以跟下面講述的結構進行對比認識士骤。???
在這里范删,我們自己用一組簡單的公式來描述操作系統(tǒng)的組成要素:
操作系統(tǒng)?=?內核?+?系統(tǒng)程序
系統(tǒng)程序?=?編譯環(huán)境?+?API
編譯環(huán)境?=?編譯程序?+?連接程序?+?裝載程序
API??=?系統(tǒng)調用?+?語言庫函數(shù)(C、C++拷肌、Java等等)
AUI??=??shell +?系統(tǒng)服務例程(如x服務器等)+?應用程序(瀏覽器瓶逃,字處理束铭,編輯器等)
而整個軟件系統(tǒng)是:
軟件系統(tǒng)?=?操作系統(tǒng)?+ AUI
操作系統(tǒng)最底層的組件是內核廓块,其上層搭建了許多系統(tǒng)軟件厢绝。
系統(tǒng)程序包括三個部分,分別是:編譯環(huán)境带猴、應用程序接口和用戶接口昔汉。
編譯環(huán)境包含匯編、C?等低高級語言編譯程序拴清,連接程序和裝載程序靶病,這些程序負責將文本格式的程序語言轉變?yōu)闄C器能識別和裝載的機器代碼。
應用程序接口(API)包含內核提供的系統(tǒng)調用接口和語言庫口予,系統(tǒng)調用是為了能讓應用程序使用內核服務娄周,語言庫函數(shù)則是為了方便應用程序開發(fā),所以將一些常用的基礎功能預先編譯以供使用沪停,比如對C語言來說常用的C庫等煤辨;
用戶接口(AUI)包括我們熟悉的shell、系統(tǒng)服務程序和常用的應用程序木张。
這是一個典型的結構众辨,但不是一成不變。許多操作系統(tǒng)的發(fā)行中會有所刪減舷礼,比如應用于嵌入式設備的系統(tǒng)鹃彻,對X服務器就可能不做要求。但是像內核妻献、系統(tǒng)調用等要素是必不可少的蛛株。
下圖顯示了操作系統(tǒng)的概念結構。
系統(tǒng)軟件:系統(tǒng)軟件是相對應用軟件而言的育拨,應用軟件針對最終用戶需求編寫谨履,完成實際功能,而系統(tǒng)軟件則是為了簡化應用程序的開發(fā)而存在的至朗,比如數(shù)據庫系統(tǒng)為應用軟件提供了有效的數(shù)據傳輸屉符、存儲服務;還有編程語言的執(zhí)行環(huán)境――它由C庫實現(xiàn)――也屬于一種系統(tǒng)程序锹引,它為應用程序開發(fā)提供了諸如I/O操作例程矗钟,圖形庫,計算庫等等基礎服務嫌变《滞В可見系統(tǒng)軟件范圍覆蓋很廣,只要面向的服務群體不是最終用戶的軟件都可以劃歸到系統(tǒng)軟件中來腾啥。
原文鏈接:https://blog.csdn.net/xiong_yao/article/details/8268141