国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Linux內(nèi)核實(shí)戰(zhàn)(二)- 操作系統(tǒng)概覽

warnerwu / 939人閱讀

摘要:電腦上的程序有很多,它們都以二進(jìn)制文件的形式保存在硬盤上。文件系統(tǒng)需要一個(gè)系統(tǒng)進(jìn)行統(tǒng)一管理,稱為文件管理子系統(tǒng)。的二進(jìn)制文件是靜態(tài)的,稱為程序,運(yùn)行起來的,是不斷進(jìn)行的,稱為進(jìn)程。在操作系統(tǒng)中,也有同樣的問題。

不知道你有沒有產(chǎn)生過這些疑問:

桌面上的圖標(biāo)到底是啥?憑啥我在鼠標(biāo)上一雙擊,就會(huì)出來一些不可描述的畫面?都是從哪里跑出來的?
憑什么我在鍵盤上噼里啪啦地敲,某個(gè)位置就會(huì)顯示我想要的那些字符?

電腦怎么知道我鼠標(biāo)點(diǎn)擊的是這個(gè)地方,又是怎么知道我要輸入的是這個(gè)地方?

我在鍵盤上點(diǎn)“a”,是誰在顯示器上畫出“a”這個(gè)圖像呢?

為什么我一回車,這些字符就發(fā)到遙遠(yuǎn)的另外一臺(tái)機(jī)器上去了?

別小看“雙擊鼠標(biāo)打開聊天軟件”這樣一個(gè)簡(jiǎn)單的操作,它幾乎涵蓋了操作系統(tǒng)的所有功能。我們就從這個(gè)熟悉的操作,來認(rèn)識(shí)陌生的操作系統(tǒng)。

操作系統(tǒng)其實(shí)就像一個(gè)軟件外包,內(nèi)核就相當(dāng)于這家外包公司的老板。所以接下來請(qǐng)你將自己的角色切換成這家軟件外包公司的老板,設(shè)身處地地去理解操作系統(tǒng)是如何協(xié)調(diào)各種資源,幫客戶做成事情的。

今后所說的“用戶”,都是指操作系統(tǒng)的用戶,“客戶”則是指外包公司的客戶,這兩者是對(duì)應(yīng)的。

1 雙擊運(yùn)行軟件,觸動(dòng)了哪些硬件呢 1.1 鼠標(biāo)和鍵盤

計(jì)算機(jī)的輸入設(shè)備。

用戶想要告訴計(jì)算機(jī)應(yīng)該做什么,都是通過這兩個(gè)設(shè)備。

如果是一家外包公司,怎么才能知道客戶的需求呢?你需要配備銷售、售前等角色,專門負(fù)責(zé)和客戶對(duì)接,把客戶需求拿回來,我們把這些人統(tǒng)稱為客戶對(duì)接員。你可以跟客戶說,有什么事兒都找對(duì)接員。

1.2 屏幕

也就是顯示器,是計(jì)算機(jī)的輸出設(shè)備,將計(jì)算機(jī)處理用戶請(qǐng)求后的結(jié)果反饋給客戶。

顯示器上面顯示的東西是由顯卡控制的。

無論是顯示器還是顯卡,這里都有個(gè)“坐標(biāo)”的概念,也就是說,什么圖像在哪個(gè)坐標(biāo),都是定義好了才畫上去的。本來在某個(gè)坐標(biāo)畫了一個(gè)鼠標(biāo)箭頭,當(dāng)接到鼠標(biāo)移動(dòng)的事件之后,你應(yīng)該按相同的方向,按照一定的比例(鼠標(biāo)靈敏度),在屏幕的某個(gè)坐標(biāo)再畫一個(gè)鼠標(biāo)箭頭。

作為外包公司,當(dāng)客戶給你提了需求,不管你做還是不做,最終做成什么樣,你都需要給客戶反饋,所以你要配備交付人員,將做好的需求展示給他們看。

1.3 輸入設(shè)備驅(qū)動(dòng)

其實(shí)就是客戶對(duì)接員。有時(shí)候新插上一個(gè)鼠標(biāo)的時(shí)候,會(huì)彈出一個(gè)通知你安裝驅(qū)動(dòng),這就是操作系統(tǒng)這家外包公司給你配備對(duì)接人員呢。當(dāng)客戶告訴對(duì)接員需求的時(shí)候,對(duì)于操作系統(tǒng)來講,輸入設(shè)備會(huì)發(fā)送一個(gè)中斷。這個(gè)概念很好理解。客戶肯定希望外包公司把正在做的事情都停下來服務(wù)它。所以,這個(gè)時(shí)候客戶發(fā)送的需求就被稱為中斷事件(Interrupt Event)。

1.4 輸出設(shè)備驅(qū)動(dòng)

顯卡會(huì)有顯卡驅(qū)動(dòng),在操作系統(tǒng)中稱為輸出設(shè)備驅(qū)動(dòng),也就是上面說的交付人員。

2 從點(diǎn)擊程序,窺探OS全貌

有了客戶對(duì)接員和交付人員,外包公司就可以處理用戶“在桌面上點(diǎn)擊QQ圖標(biāo)”的事件了。

首先,鼠標(biāo)雙擊會(huì)觸發(fā)一個(gè)中斷,這相當(dāng)于客戶告知客戶對(duì)接員“有了新需求,需要處理一下”。你會(huì)事先把處理這種問題的方法教給客戶對(duì)接員。在操作系統(tǒng)里面就是調(diào)用中斷處理函數(shù)。操作系統(tǒng)發(fā)現(xiàn)雙擊的是一個(gè)圖標(biāo),就明白了用戶的原始訴求,準(zhǔn)備運(yùn)行QQ和別人聊天。

你會(huì)發(fā)現(xiàn),運(yùn)行QQ是一件大事,因?yàn)閷淼囊欢螘r(shí)間,用戶要一直和QQ進(jìn)行交互。

這就相當(dāng)于你們公司接了一個(gè)大單,而不是處理零星的客戶需求,這個(gè)時(shí)候應(yīng)該多帶帶立項(xiàng)。一旦立了項(xiàng),以后與這個(gè)項(xiàng)目有關(guān)的事情,都由這個(gè)項(xiàng)目組來處理。

2.1文件管理系統(tǒng)

立項(xiàng)可不能隨便立,一定要有一個(gè)項(xiàng)目執(zhí)行計(jì)劃書,說明這個(gè)項(xiàng)目打算怎么做,一步一步如何執(zhí)行,遇到什么情況應(yīng)該怎么辦等等。

換句話說,對(duì)QQ這個(gè)程序來說,它能做哪些事情,每個(gè)事情怎么做,先做啥后做啥,都已經(jīng)作為程序邏輯寫在程序里面,并且編譯成為二進(jìn)制了。這個(gè)程序就相當(dāng)于項(xiàng)目執(zhí)行計(jì)劃書。

電腦上的程序有很多,它們都以二進(jìn)制文件的形式保存在硬盤上。硬盤是個(gè)物理設(shè)備,要按照規(guī)定格式化成為文件系統(tǒng),才能存放這些程序。文件系統(tǒng)需要一個(gè)系統(tǒng)進(jìn)行統(tǒng)一管理,稱為文件管理子系統(tǒng)(File Management Subsystem)。

2.2 進(jìn)程與程序

對(duì)于你們公司,項(xiàng)目立得多了,項(xiàng)目執(zhí)行計(jì)劃書也會(huì)很多,同樣需要有個(gè)統(tǒng)一保存文件的檔案庫,而且需要有序地管理起來。

當(dāng)你從資料庫里面拿到這個(gè)項(xiàng)目執(zhí)行計(jì)劃書,接下來就需要開始執(zhí)行這個(gè)項(xiàng)目了。項(xiàng)目執(zhí)行計(jì)劃書是靜態(tài)的,項(xiàng)目的執(zhí)行是動(dòng)態(tài)的。

同理,當(dāng)操作系統(tǒng)拿到QQ的二進(jìn)制執(zhí)行文件的時(shí)候,就可以運(yùn)行這個(gè)文件了。

QQ的二進(jìn)制文件是靜態(tài)的,稱為程序(Program),

運(yùn)行起來的QQ,是不斷進(jìn)行的,稱為進(jìn)程(Process)。

2.3 系統(tǒng)調(diào)用

你會(huì)發(fā)現(xiàn),一個(gè)項(xiàng)目要想順暢進(jìn)行,需要用到公司的各種資源,比如說蓋個(gè)公章、開個(gè)證明、申請(qǐng)個(gè)會(huì)議室、打印個(gè)材料等等。

這里有個(gè)兩難的權(quán)衡

資源有限,甚至是涉及機(jī)密的,不能由項(xiàng)目組濫取濫用

效率,咱是一個(gè)私營(yíng)企業(yè),保證項(xiàng)目申請(qǐng)資源的時(shí)候只跑一次,這樣才能比較高效。

為了平衡這一點(diǎn),一方面涉及核心權(quán)限的資源,還是應(yīng)該被公司嚴(yán)格把控,審批了才能用;

另外一方面,為了提高效率,最好有個(gè)統(tǒng)一的辦事大廳,明文列出提供哪些服務(wù),誰需要可以來申請(qǐng),然后就會(huì)有回應(yīng)。

在操作系統(tǒng)中,也有同樣的問題。

例如多個(gè)進(jìn)程都要往打印機(jī)上打印文件,如果隨便亂打印進(jìn)程,就會(huì)出現(xiàn)同樣一張紙,第一行是A進(jìn)程輸出的文字,第二行是B進(jìn)程輸出的文字,全亂套了。所以,打印機(jī)的直接操作是放在操作系統(tǒng)內(nèi)核里面的,進(jìn)程不能隨便操作。但是操作系統(tǒng)也提供一個(gè)辦事大廳,也就是系統(tǒng)調(diào)用(System Call)。

系統(tǒng)調(diào)用也能列出來提供哪些接口可以調(diào)用,進(jìn)程有需要的時(shí)候就可以去調(diào)用。

這其中,立項(xiàng)是辦事大廳提供的關(guān)鍵服務(wù)之一。同樣,任何一個(gè)程序要想運(yùn)行起來,就需要調(diào)用系統(tǒng)調(diào)用,創(chuàng)建進(jìn)程。

2.4 進(jìn)程管理系統(tǒng)

一旦項(xiàng)目正式立項(xiàng),就要開始執(zhí)行,就要成立項(xiàng)目組,將開發(fā)人員分配到這個(gè)項(xiàng)目組,按照項(xiàng)目執(zhí)行計(jì)劃書一步一步執(zhí)行。

為了管理這個(gè)項(xiàng)目,我們還需要一個(gè)項(xiàng)目經(jīng)理、一套項(xiàng)目管理流程、一個(gè)項(xiàng)目管理系統(tǒng),例如程序員比較熟悉的Jira。如果項(xiàng)目多,可能一個(gè)開發(fā)人員需要同時(shí)執(zhí)行多個(gè)項(xiàng)目,這就要考驗(yàn)項(xiàng)目經(jīng)理的調(diào)度能力了。

在操作系統(tǒng)中,進(jìn)程的執(zhí)行也需要分配CPU進(jìn)行執(zhí)行,也就是按照程序里面的二進(jìn)制代碼一行一行地執(zhí)行。

于是,為了管理進(jìn)程,我們還需要一個(gè)進(jìn)程管理子系統(tǒng)(Process Management Subsystem)。如果運(yùn)行的進(jìn)程很多,則一個(gè)CPU會(huì)并發(fā)運(yùn)行多個(gè)進(jìn)程,也就需要CPU的調(diào)度能力了。

2.5 內(nèi)存管理系統(tǒng)

每個(gè)項(xiàng)目都有自己的私密資料,這些資料不能被其他項(xiàng)目組看到。這些資料主要是項(xiàng)目在執(zhí)行的過程中,產(chǎn)生的很多中間成果,例如架構(gòu)圖、流程圖。

執(zhí)行過程中,難免要在白板上或者本子上寫寫畫畫,如果不同項(xiàng)目的辦公空間不隔離,一方面,項(xiàng)目的私密性不能得到保證,A項(xiàng)目的細(xì)節(jié),B項(xiàng)目也能看到;另一方面,項(xiàng)目之間會(huì)相互干擾,A項(xiàng)目組的人剛在白板上畫了一個(gè)架構(gòu)圖,出去上個(gè)廁所,結(jié)果B項(xiàng)目組的人就給擦了。

如果把不同的項(xiàng)目組分配到不同的會(huì)議室,就解決了這個(gè)問題。當(dāng)然會(huì)議室是有限的,需要有人管理和分配,并且需要一個(gè)會(huì)議室管理系統(tǒng)。

在操作系統(tǒng)中,不同的進(jìn)程有不同的內(nèi)存空間,但是整個(gè)電腦內(nèi)存就這么點(diǎn)兒,所以需要統(tǒng)一的管理和分配,這就需要內(nèi)存管理子系統(tǒng)(Memory Management Subsystem)。

如果想直觀地了解QQ如何使用CPU和內(nèi)存,可以打開任務(wù)管理器,你就能看到QQ這個(gè)進(jìn)程耗費(fèi)的CPU和內(nèi)存。

項(xiàng)目執(zhí)行的時(shí)候,有了一定的成果,就要給客戶演示。例如客戶說要做個(gè)應(yīng)用,我們做出來了要給客戶看看,如果客戶說哪里需要改,可以根據(jù)客戶的需求再改,這就需要交付人員了。

QQ啟動(dòng)之后,有一部分代碼會(huì)在顯示器上畫一個(gè)對(duì)話框,并且將鍵盤的焦點(diǎn)放在了輸入框里面。CPU根據(jù)這些指令,就會(huì)告知顯卡驅(qū)動(dòng)程序,將這個(gè)對(duì)話框畫出來。

于是使用QQ的用戶就會(huì)很開心地發(fā)現(xiàn),他能和別人開始聊天了。

當(dāng)用戶通過鍵盤噼里啪啦打字的時(shí)候,鍵盤也是輸入設(shè)備,也會(huì)觸發(fā)中斷,通知相應(yīng)的輸入設(shè)備驅(qū)動(dòng)程序。

我們假設(shè)用戶輸入了一個(gè)“a”。這就像客戶提出了新的需求給客戶對(duì)接員。客戶對(duì)接員收到需求后,因?yàn)槭菍?duì)接這個(gè)項(xiàng)目的,因而就回來報(bào)告,客戶提新需求了,項(xiàng)目組需要處理一下。項(xiàng)目執(zhí)行計(jì)劃書里面一般都會(huì)有當(dāng)遇到何種需求應(yīng)該怎么做的規(guī)定,項(xiàng)目組就按這個(gè)規(guī)定做了,然后讓交付人員再去客戶那里演示就行了。

對(duì)于QQ來講,由于鍵盤閃啊閃的焦點(diǎn)在QQ這個(gè)對(duì)話框上,因而操作系統(tǒng)知道,這個(gè)事件是給這個(gè)進(jìn)程的。QQ的代碼里面肯定有遇到這種事件如何處理的代碼,就會(huì)執(zhí)行。一般是記錄下客戶的輸入,并且告知顯卡驅(qū)動(dòng)程序,在那個(gè)地方畫一個(gè)“a”。顯卡畫完了,客戶看到了,就覺得自己的輸入成功了。

當(dāng)用戶輸入完畢之后,回車一下,還是會(huì)通過鍵盤驅(qū)動(dòng)程序告訴操作系統(tǒng),操作系統(tǒng)還是會(huì)找到QQ,QQ會(huì)將用戶的輸入發(fā)送到網(wǎng)絡(luò)上。QQ進(jìn)程是不能直接發(fā)送網(wǎng)絡(luò)包的,需要調(diào)用系統(tǒng)調(diào)用,內(nèi)核使用網(wǎng)卡驅(qū)動(dòng)程序進(jìn)行發(fā)送。

這就像客戶對(duì)接員接到一個(gè)需求,但是這個(gè)需求需要和其他公司溝通,這就需要依靠公司的對(duì)外合作部,對(duì)外合作部在辦事大廳有專門的窗口,非常方便。

總結(jié)

到這里,一個(gè)外包公司大部分的職能部門都湊齊了。你可以對(duì)應(yīng)著下圖的操作系統(tǒng)內(nèi)核體系結(jié)構(gòu),回顧一下它們是如何組成一家公司的。

QQ的運(yùn)行過程,只是一個(gè)簡(jiǎn)單的比喻。在后面的章節(jié)中,我會(huì)展開講述每個(gè)部分是怎么工作的,最后我會(huì)再將這個(gè)過程串起來,這樣你就能了解操作系統(tǒng)的全貌了。

操作系統(tǒng)內(nèi)核體系結(jié)構(gòu)圖

參考

趣談Linux操作系統(tǒng)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/75801.html

相關(guān)文章

  • 初探Linux---Linux文件系統(tǒng)概覽

    摘要:六文件類型與目錄結(jié)構(gòu)支持很多文件類型,其中非常重要的文件類型有普通文件,目錄文件,鏈接文件,設(shè)備文件,管道文件,套接字文件等。套接字文件套接字文件被用于網(wǎng)絡(luò)進(jìn)程之間的通信,既可以使臺(tái)不同的機(jī)器進(jìn)行通信,也可以用于本機(jī)的網(wǎng)絡(luò)程序。一、Linux簡(jiǎn)介類Unix系統(tǒng): Linux是一種自由、開放源碼的類似Unix的操作系統(tǒng)Linux內(nèi)核: 嚴(yán)格來說,Linux這個(gè)詞本身只表示Linux內(nèi)核Linu...

    Tecode 評(píng)論0 收藏0
  • AI開發(fā)書籍分享

    摘要:編程書籍的整理和收集最近一直在學(xué)習(xí)深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的東西,發(fā)現(xiàn)深入地去學(xué)習(xí)就需要不斷的去提高自己算法和高數(shù)的能力然后也找了很多的書和文章,隨著不斷的學(xué)習(xí),也整理了下自己的學(xué)習(xí)筆記準(zhǔn)備分享出來給大家后續(xù)的文章和總結(jié)會(huì)繼續(xù)分享,先分享一部分的 編程書籍的整理和收集 最近一直在學(xué)習(xí)deep learning深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的東西,發(fā)現(xiàn)深入地去學(xué)習(xí)就需要不斷的去提高自己算法和高數(shù)的能力然后...

    huayeluoliuhen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<