操作系统与操作系统内核
一、前言
? ? 最近看了一篇將Unix和Linux歷史的帖子,雖然有點(diǎn)水,但是還是放個(gè)鏈接吧花了一天時(shí)間,終于把unix、linux、ios、android區(qū)別大致聯(lián)系搞清楚,好像很復(fù)雜的,這個(gè)帖子寫(xiě)的比較口水話,但是對(duì)于了解Unix與Linux的發(fā)展與歷史還是蠻有幫助的,看了這篇帖子之后,盡管知道了Unix與Linux從無(wú)到有的過(guò)程,但是發(fā)現(xiàn)自己對(duì)操作系統(tǒng)這個(gè)東西的認(rèn)識(shí)更加模糊了,因?yàn)榍捌诖笾伦x過(guò)《深入理解計(jì)算機(jī)系統(tǒng)》和《操作系統(tǒng)》兩本書(shū),了解過(guò)一些操作系統(tǒng)的內(nèi)容,但由于是非科班出身,有很多本質(zhì)的概念并不理解,所以這里就回顧了上面兩本書(shū)中的一些內(nèi)容,再加上網(wǎng)上的一些資料,對(duì)操作系統(tǒng)和操作系統(tǒng)內(nèi)核這兩個(gè)概念進(jìn)行了整理。
二、操作系統(tǒng)理解
? ?一句話理解操作系統(tǒng):操作系統(tǒng)就是為用戶(使用計(jì)算機(jī)的人)提供服務(wù),使用戶能在計(jì)算機(jī)上使用各種應(yīng)用程序(QQ、瀏覽器)來(lái)操作計(jì)算機(jī)資源(如QQ需要使用顯示器資源、用瀏覽器下載資料需要硬盤(pán)資源,同時(shí)所有這些應(yīng)用程序都需要使用CPU這個(gè)最主要的資源)。
? ? 可以從兩方面理解上面這句話,一方面從操作系統(tǒng)本身來(lái)理解。其實(shí)說(shuō)起操作系統(tǒng)這個(gè)概念,作為非科班出身的我們大多都是比較模糊的,同時(shí)感覺(jué)跟這個(gè)東西就很近,因?yàn)樵诿颗_(tái)計(jì)算機(jī)中都有一個(gè)操作系統(tǒng),你運(yùn)行的任何應(yīng)用軟件都離不開(kāi)操作系統(tǒng),為什么離不開(kāi)操作系統(tǒng)呢?其實(shí)說(shuō)白了,一臺(tái)計(jì)算機(jī)就是一組資源,你運(yùn)行在計(jì)算機(jī)上的應(yīng)用程序本質(zhì)上是離不開(kāi)計(jì)算機(jī)的各種資源(如處理器、內(nèi)存、I/O設(shè)備等),只是為了方便,人們就構(gòu)造了操作系統(tǒng)這種東西,因?yàn)槊恳慌_(tái)計(jì)算機(jī)的各種資源都來(lái)自不同的廠家,它們有不同的標(biāo)準(zhǔn),有不同的差別,所以你針對(duì)某一類的I/O設(shè)備開(kāi)發(fā)的應(yīng)用程序就不能在另一臺(tái)裝有不同I/O設(shè)備的計(jì)算機(jī)上運(yùn)行,而操作系統(tǒng)就完美的消除了這種差別與無(wú)法擴(kuò)展的缺點(diǎn),所以從邏輯上來(lái)說(shuō),操作系統(tǒng)位于應(yīng)用程序與計(jì)算機(jī)資源的中間層
? ? 同時(shí),作為中間層,必須要干好中間層的工作,所以總的來(lái)說(shuō),操作系統(tǒng)有兩個(gè)基本功能:
? ? ? ? (1)防止硬件被失控的應(yīng)用程序?yàn)E用;
? ? ? ? (2)向應(yīng)用程序提供簡(jiǎn)單一致的機(jī)制來(lái)控制復(fù)雜而又通常大相徑庭的低級(jí)硬件設(shè)備
? ?另一方面,從計(jì)算機(jī)CPU(處理器)來(lái)看,操作系統(tǒng)實(shí)際上不過(guò)是一組計(jì)算機(jī)程序(可以理解成很多個(gè)應(yīng)用程序的集合,而這些應(yīng)用程序基本都是與硬件打交道的),與其他計(jì)算機(jī)程序類似(不管是你自己寫(xiě)的HelloWord小程序還是像QQ這樣的應(yīng)用程序,以及大型的服務(wù)器程序),它們都給處理器提供指令,然后處理器就執(zhí)行這些指令,完成這些程序的功能,最大的區(qū)別在于操作系統(tǒng)和其他程序的意圖不同:操作系統(tǒng)程序通過(guò)控制處理器使用其他計(jì)算機(jī)資源,并控制其他程序的執(zhí)行時(shí)機(jī),這促使處理器完成系統(tǒng)任務(wù)的調(diào)度。但是(剛剛也說(shuō)明了,操作系統(tǒng)除了和其他程序的意圖不同,其他都一樣,所以)處理器為了做任何一件這樣的事情(指的是執(zhí)行另一個(gè)程序),都必須停止執(zhí)行操作系統(tǒng)程序,轉(zhuǎn)而去執(zhí)行其他程序(這其實(shí)是進(jìn)程切換),因?yàn)榧热徊僮飨到y(tǒng)也是一個(gè)程序(進(jìn)程),而任何處理器同時(shí)只能處理一個(gè)進(jìn)程,所以操作系統(tǒng)同樣和其他程序(進(jìn)程)一樣需要調(diào)度,只是操作系統(tǒng)是處于主動(dòng)調(diào)度的位置,而其他程序是被動(dòng)的由操作系統(tǒng)的控制來(lái)實(shí)現(xiàn)調(diào)度。
三、操作系統(tǒng)內(nèi)核
? ? 關(guān)于操作系統(tǒng)和操作系統(tǒng)內(nèi)核這兩個(gè)概念,很多人嘗試去區(qū)分與解釋,但是發(fā)現(xiàn)很難得解釋的完全(包括我自己,這里只是把我自己的理解整理出來(lái),有什么不對(duì)的地方,希望大家批評(píng)指正,共同進(jìn)步)。
? ? 查看了一些網(wǎng)上和CS系列書(shū)籍中的關(guān)于操作系統(tǒng)內(nèi)核的概念解釋,總結(jié)之后,我的理解是:
? ? ? ? (1)操作系統(tǒng)包括操作系統(tǒng)內(nèi)核(這是必然的),也就是說(shuō)內(nèi)核程序是操作系統(tǒng)所包含的一組計(jì)算機(jī)程序中的一個(gè)子集,所以內(nèi)核程序也是一組計(jì)算機(jī)程序,而這些內(nèi)核程序是操作系統(tǒng)中最常使用基本模塊,直接與硬件打交道,主要由用于管理存儲(chǔ)器、文件、外設(shè)和系統(tǒng)資源的那些部分組成。
? ? ? ? (2)內(nèi)核程序一直占據(jù)內(nèi)存中的一段內(nèi)存,這樣處理器可以隨時(shí)調(diào)用這些內(nèi)核程序;
? ? ? ? (3)而操作系統(tǒng)除了內(nèi)核程序外,還有包括其他一些基本組件,如文本編輯器、編譯器、用來(lái)與用戶進(jìn)行交互的程序等
? ? 對(duì)于第(2)點(diǎn),可以引入《深入理解計(jì)算機(jī)系統(tǒng)》這本書(shū)中關(guān)于“虛擬存儲(chǔ)器”(P12)解釋的一幅圖來(lái)說(shuō)明,如下:
上圖中,關(guān)于進(jìn)程的虛擬地址空間的說(shuō)明中,最上面的子區(qū)域“內(nèi)核虛擬存儲(chǔ)器”就是用來(lái)存儲(chǔ)內(nèi)核程序和數(shù)據(jù)的,這個(gè)地址空間是一個(gè)固定的結(jié)構(gòu),所以對(duì)于每一個(gè)應(yīng)用程序(進(jìn)程)來(lái)說(shuō),都具有同樣結(jié)構(gòu)的虛擬地址空間,這就可以保證每個(gè)進(jìn)程都能調(diào)用操作系統(tǒng)內(nèi)核程序來(lái)完成自己的功能。
? ? 下面再用一幅圖說(shuō)明操作系統(tǒng)內(nèi)核是操作系統(tǒng)的一組子程
上圖中,操作系統(tǒng)的內(nèi)核包圍硬件,同時(shí),其外層是系統(tǒng)調(diào)用接口,這就是操作系統(tǒng)中除內(nèi)核以外的其他組件。
? ? 下面整理兩個(gè)網(wǎng)友關(guān)于操作系統(tǒng)與操作系統(tǒng)內(nèi)核的解釋,個(gè)人覺(jué)得解釋的還是比較好的:
? ? ? ? (1)內(nèi)核,是操作系統(tǒng)的基礎(chǔ)模塊,用于管理系統(tǒng)資源。例如提供對(duì)軟件層面的抽象(例如對(duì)進(jìn)程、文件系統(tǒng)、同步、內(nèi)存、網(wǎng)絡(luò)協(xié)議等對(duì)象的操作和權(quán)限控制),和對(duì)硬件訪問(wèn)的抽象(例如磁盤(pán),顯示,網(wǎng)絡(luò)接口卡(NIC));操作系統(tǒng),在內(nèi)核的基礎(chǔ)上有延伸,包括了提供基礎(chǔ)服務(wù)的系統(tǒng)組件。
? ? ? ? (2)內(nèi)核,就是計(jì)算機(jī)學(xué)科意義上的操作系統(tǒng),直接與硬件交互,提供CPU時(shí)間片管理、中斷、內(nèi)存管理、IO管理等等;一般意義上的操作系統(tǒng)包含的東西要更多一些,至少要有用戶交互的基本程序,比如一個(gè)命令行界面和基本的指令(文件遍歷、進(jìn)程管理等等),或者圖形界面的桌面和文件瀏覽器。
四、總結(jié)
? ? 總的說(shuō)來(lái),一個(gè)操作系統(tǒng)包含了內(nèi)核(是一個(gè)提供硬件抽象層、磁盤(pán)及文件系統(tǒng)控制、多任務(wù)等功能的系統(tǒng)軟件)以及其他計(jì)算機(jī)系統(tǒng)所必須的組件(如函數(shù)庫(kù)、編譯器、調(diào)式工具、文本編輯器、網(wǎng)站服務(wù)器,以及一個(gè)Unix的使用者接口(Unix shell)等,這些都是操作系統(tǒng)的一部分,而且每一個(gè)模塊如編譯器都是一個(gè)單獨(dú)的進(jìn)程,運(yùn)行在操作系統(tǒng)中)。所以一個(gè)內(nèi)核不是一套完整的操作系統(tǒng),拿Linux來(lái)說(shuō),Linux這個(gè)詞本身只表示Linux內(nèi)核,但現(xiàn)在大家已經(jīng)默認(rèn)的把Linux理解成整個(gè)Linux系統(tǒng),這是由于歷史原因造成的(具體可以看本文前言中提到的那篇文章),也就是說(shuō)人們已經(jīng)習(xí)慣了用Linux來(lái)形容整個(gè)基于Linux內(nèi)核,并且使用GNU 工程各種工具和應(yīng)用程序的操作系統(tǒng)(也被稱為GNU/Linux),而基于這些組件的Linux軟件被稱為L(zhǎng)inux發(fā)行版。一般來(lái)講,一個(gè)Linux發(fā)行版本出來(lái)包括Linux內(nèi)核之外,還包含大量的軟件(套件),比如軟件開(kāi)發(fā)工具,數(shù)據(jù)庫(kù),Web服務(wù)器(例如Apache),X Window,桌面環(huán)境(比如GNOME和KDE),辦公套件(比如OpenOffice、org)等等。
總結(jié)
以上是生活随笔為你收集整理的操作系统与操作系统内核的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ios底部栏设计规范_IOS界面设计尺寸
- 下一篇: 猫眼api html,爬取猫眼电影数据(