shell、操作系統和內核

      之前在知乎上回答過這個問題“shell、操作系統和內核是一回事嗎?”,現在也在blog上總結一下

       內核需要做的工作:進程管理(創建進程、進程調度等)、進程間通信(管道、信號等)、文件操作(在硬盤上以我們熟悉的文件的形式創建文件,讀文件,寫文件等和保存修改等),內存管理(段、頁,線性地址到物理地址、進程共享頁面),網絡(TCP/IP,和遠端的計算機收發消息的協議),緩衝區(內存與外設之間的cache,多進程操作緩衝區),以及最開始的計算機硬件中只是操作系統剛剛載入的空空如也的狀態到系統怠速迎接響應用戶的需求等等等等。內核是操作系統最最核心的部分,可以將內核比喻成大腦,遇到事情,如何應激面對,調用自己身體的其他部分(譬如一些外設)。


shell要做的工作:剛剛將內核比喻成大腦,shell我覺得可以比喻成皮膚、眼睛、耳朵等用於感知的器官。用戶的應用程序如何讓內核去調度去執行它,我們不可能一下子將應用程序要做的計算直接塞到大腦(內核)中,shell就是應用程序的入口。shell本身也是一個進程,當沒有需求的時候它處於休眠狀態,當有需求的時候,它就運行起來。當我們用戶有需求的時候,譬如在terminal執行./HelloWorld,shell這個進程感知我們這一命令需求,它就作爲我們HelloWorld的父進程,去爲我們HelloWorld未來以後能夠在進程調度的時候被調度做準備工作,例如fork()等,而fork做的工作,譬如創建進程控制塊等就是內核要做的工作,可以比喻成你要記住一篇英語課文,那你的大腦需要分化出一部分腦細胞用於記住這篇課文。


硬件譬如顯示器,硬盤,鍵盤等可以比喻成四肢、手(或者乾脆比喻成骨頭)等,因爲他們是能夠幹具體的事情的,譬如你的手能夠將大腦中記住的課文寫下本子上,同時內核也能夠根據應用程序的需要將“Hello World!”寫在顯示器上。
還有一部分很重要的就是硬件的驅動程序,可以將它比喻成神經細胞,就是大腦的命令需要他們傳輸到四肢上。
這樣將計算機系統解剖了,可能不恰當。我認爲操作系統 = 內核 + shell + 驅動,不知道這麼說恰恰不恰當。哦,對了,操作系統的順利工作離不開中斷技術(硬、軟)!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章