我眼中的Linux

linuxos-1.png
計(jì)算機(jī)結(jié)構(gòu)

宏觀來(lái)看,計(jì)算機(jī)是由硬件+軟件構(gòu)成.

硬件為整個(gè)計(jì)算機(jī)豐富功能提供物理支撐,軟件直接面向用戶提供服務(wù).

計(jì)算機(jī)硬件組成及工作機(jī)制

計(jì)算機(jī)的硬件從結(jié)構(gòu)上看大致可以分類CPU,內(nèi)存,IO設(shè)備.這三個(gè)部分在內(nèi)部通過(guò)總線進(jìn)行信號(hào)(電信號(hào))的交互.

各硬件模塊之間彼此交互的是信號(hào),而且是電信號(hào),無(wú)論是CPU,內(nèi)存還是IO設(shè)備,硬件實(shí)現(xiàn)上都是一些二極管,三極管和一些線性元器件的組合電路,這些小東西只認(rèn)識(shí)電信號(hào)(電流或電壓).現(xiàn)在大多數(shù)電子設(shè)備都是數(shù)字信號(hào),計(jì)算機(jī)硬件同樣如此,(模擬)電信號(hào)又被進(jìn)一步處理成數(shù)字信號(hào)(模數(shù)轉(zhuǎn)換或稱為調(diào)制).

不難發(fā)現(xiàn)CPU Memory和IO設(shè)備組成的計(jì)算機(jī),也只認(rèn)識(shí)數(shù)字信號(hào)(電信號(hào)).顯然,想要用計(jì)算機(jī)做點(diǎn)什么,通常需要給它提供一些數(shù)字信號(hào),我們通常認(rèn)為這些數(shù)字信號(hào)只有兩種:開(kāi)或關(guān),抽象到數(shù)學(xué)表達(dá)上就是1或0.如果我們?cè)噲D將
一些有意義的文件或者圖片抽象成01的數(shù)字串,我們幾乎完成了一次與計(jì)算機(jī)硬件的單向交互.進(jìn)而若能收到對(duì)文件01串的回應(yīng),便完成了雙向交互.

我們將向硬件發(fā)送數(shù)據(jù)的提供者稱作是程序,將計(jì)算機(jī)根據(jù)程序的要求進(jìn)行具體操作稱為指令,用戶傳遞和接收的01串稱為數(shù)據(jù).

數(shù)據(jù)+指令都由程序負(fù)責(zé)管理,到達(dá)電路中它們都是01串,計(jì)算機(jī)在內(nèi)存中存儲(chǔ)它們.

有趣的是,現(xiàn)代計(jì)算機(jī)所具有的一切諸如播放視頻,玩網(wǎng)絡(luò)游戲等功能都是在用戶與底層硬件之間不停的往返發(fā)送01串而已.

最重要的軟件---操作系統(tǒng)

盡管計(jì)算機(jī)工作起來(lái)看似十分簡(jiǎn)單,實(shí)際讓它按人類的意志工作還需要有軟件支持,保證01串的交互更人性化,更易于控制.

一臺(tái)計(jì)算機(jī)上的軟件成千上萬(wàn),最關(guān)鍵的軟件就是操作系統(tǒng).操作系統(tǒng)在計(jì)算機(jī)硬件之上向用戶提供可操作的接口.

操作系統(tǒng)有著名的Windows, Mac OS, GNU/Linux三大類.

Windows為計(jì)算機(jī)的普及做了不可小覷的貢獻(xiàn).
Mac OS刷新了廣大中國(guó)人民對(duì)于美的認(rèn)識(shí).
GNU/Linux為中國(guó)互聯(lián)網(wǎng)的發(fā)展做出了杰出的貢獻(xiàn),其用戶仍在不斷增長(zhǎng)中.

GNU/LINUX操作系統(tǒng)

如果扔掉GNU只談LINUX,指的是計(jì)算機(jī)內(nèi)核(KERNEL).通常眾談?wù)摰腖inux都是指內(nèi)核.

那么一臺(tái)計(jì)算機(jī)自上電啟動(dòng)后做了什么,能讓用戶看到桌面呢?

Linux是這么做的.計(jì)算機(jī)硬件上電后,進(jìn)行上電自檢(電信檢查CPU,MEMORY,IO設(shè)備是否都正常),一切正常后將寄存器(在CPU內(nèi))中的一BIOS程序加載到內(nèi)存中,BIOS啟動(dòng)后開(kāi)始讀MBR(512Bytes),目的是找到Bootloader程序并將其加載到內(nèi)存中啟動(dòng)它,Bootloader啟動(dòng)以啟動(dòng)grub程序加載內(nèi)核,grub負(fù)責(zé)在內(nèi)存中注冊(cè)文件系統(tǒng),為所有IO設(shè)備在內(nèi)存中注冊(cè)等.自此Linux內(nèi)核才正式啟動(dòng),為了向用戶提供操作接口,Linux會(huì)在加載成功后運(yùn)行/sbin/init程序,以啟動(dòng)外殼程序.

這個(gè)過(guò)程如可以用圖形表示如下:


linuxos-2.png

外殼程序有兩種:CLI(Command Line Interface)和GUI(Graphical User Interface).Linux系統(tǒng)中常用的兩種外殼是:

  • CLI:
    • Bash
    • csh
    • zsh
    • ksh
    • tcsh #功能最強(qiáng)大的是zsh.
  • GUI:
    • Gnome
    • KDE
Linux系統(tǒng)計(jì)算機(jī)如何工作

Linux這個(gè)超級(jí)程序(軟件)在運(yùn)行時(shí)分為用戶空間和內(nèi)核空間.兩個(gè)空間彼此之間有嚴(yán)格的界限,用戶空間的程序不能隨意控制內(nèi)核空間的資源.

內(nèi)核空間的底層是計(jì)算機(jī)硬件,因此內(nèi)核負(fù)責(zé)對(duì)硬件的管理,權(quán)限很大,可以直接操作硬件,大致包括文件系統(tǒng)管理,進(jìn)程管理,內(nèi)存管理,網(wǎng)絡(luò)棧,時(shí)間片的調(diào)度?等.

用戶空間在內(nèi)核之上,用戶的一切行為都發(fā)生在這一層.比如:敲擊鍵盤,點(diǎn)擊鼠標(biāo),觀看視頻,運(yùn)行一段自己的小程序,向顯示器打印一句hello world.通常這個(gè)打印語(yǔ)句會(huì)寫成下面這樣.

printf("hello world!\n");
或
System.out.println("Hello world!");

無(wú)論printf還是println都不是程序員自己寫代碼實(shí)現(xiàn)的功能,其實(shí)是內(nèi)核向用戶提供的API.在Linux下可以用命令查看所有的API.

有時(shí)內(nèi)核提供的API無(wú)法滿足用戶的要求,仍然有和底層交互的需求,內(nèi)核提供的系統(tǒng)調(diào)用的方式,以保護(hù)硬件系統(tǒng).用戶可以在shell中敲入命令查看Linux提供的所有系統(tǒng)調(diào)用.

于是我們發(fā)現(xiàn)在用戶空間和內(nèi)核空間的中間有一層非常薄的API和系統(tǒng)調(diào)用.

總結(jié)

終上所述,一臺(tái)裝有Linux內(nèi)核的計(jì)算機(jī)結(jié)構(gòu)應(yīng)該可以抽象成下圖.


linuxos-3.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末淆衷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秧倾,老刑警劉巖物遇,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陋桂,死亡現(xiàn)場(chǎng)離奇詭異岁歉,居然都是意外死亡术羔,警方通過(guò)查閱死者的電腦和手機(jī)杨箭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門寞焙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人互婿,你說(shuō)我怎么就攤上這事捣郊。” “怎么了慈参?”我有些...
    開(kāi)封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵呛牲,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我驮配,道長(zhǎng)娘扩,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任壮锻,我火速辦了婚禮琐旁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘猜绣。我一直安慰自己灰殴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布掰邢。 她就那樣靜靜地躺著验懊,像睡著了一般擅羞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上义图,一...
    開(kāi)封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天减俏,我揣著相機(jī)與錄音,去河邊找鬼碱工。 笑死娃承,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的怕篷。 我是一名探鬼主播历筝,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼廊谓!你這毒婦竟也來(lái)了梳猪?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蒸痹,失蹤者是張志新(化名)和其女友劉穎春弥,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體叠荠,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匿沛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了榛鼎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逃呼。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖者娱,靈堂內(nèi)的尸體忽然破棺而出抡笼,到底是詐尸還是另有隱情,我是刑警寧澤黄鳍,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布推姻,位于F島的核電站,受9級(jí)特大地震影響际起,放射性物質(zhì)發(fā)生泄漏拾碌。R本人自食惡果不足惜吐葱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一街望、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧弟跑,春花似錦灾前、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蔫敲。三九已至,卻和暖如春炭玫,著一層夾襖步出監(jiān)牢的瞬間奈嘿,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工吞加, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裙犹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓衔憨,卻偏偏與公主長(zhǎng)得像叶圃,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子践图,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容