日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.4)

發(fā)布時(shí)間:2025/3/21 linux 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.4) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
第零章、計(jì)算機(jī)概論
最近更新日期:2009/08/03 4. 軟件程序運(yùn)作
  4.1 機(jī)器程序與編譯程序
  4.2 操作系統(tǒng)
  4.3 應(yīng)用程序

軟件程序運(yùn)作

鳥(niǎo)哥在上課時(shí)常常會(huì)開(kāi)玩笑的問(wèn):『我們知道沒(méi)有插電的計(jì)算機(jī)是一堆廢鐵,那么插了電的計(jì)算機(jī)是什么?』答案是:『一堆會(huì)電人的廢鐵』!這是因?yàn)闆](méi)有軟件的運(yùn)作,計(jì)算機(jī)的功能就無(wú)從發(fā)揮之故。就好像沒(méi)有了靈魂的軀體也不過(guò)就是行尸走肉,重點(diǎn)在於軟件/靈魂羅!所以底下咱們就得要了解一下『軟件』是什么。

一般來(lái)說(shuō),目前的計(jì)算機(jī)系統(tǒng)將軟件分為兩大類(lèi),一個(gè)是系統(tǒng)軟件,一個(gè)是應(yīng)用程序。但鳥(niǎo)哥認(rèn)為我們還是得要了解一下什么是程序,尤其是機(jī)器程序,了解了之后再來(lái)探討一下為什么現(xiàn)今的計(jì)算機(jī)系統(tǒng)需要『操作系統(tǒng)』這玩意兒呢!


機(jī)器程序與編譯程序

我們前面談到計(jì)算機(jī)只認(rèn)識(shí)0與1而已,而且計(jì)算機(jī)最重要的運(yùn)算與邏輯判斷是在CPU內(nèi)部,而CPU其實(shí)是具有微指令集的。因此,我們需要CPU幫忙工作時(shí),就得要參考微指令集的內(nèi)容,然后撰寫(xiě)讓CPU讀的懂得指令碼給CPU執(zhí)行,這樣就能夠讓CPU運(yùn)作了。

不過(guò)這樣的流程有幾個(gè)很麻煩的地方,包括:

  • 需要了解機(jī)器語(yǔ)言:機(jī)器只認(rèn)識(shí)0與1,因此你必須要學(xué)習(xí)直接寫(xiě)給機(jī)器看的語(yǔ)言!這個(gè)地方相當(dāng)?shù)碾y呢!

  • 需要了解所有硬件的相關(guān)功能函數(shù):因?yàn)槟愕某绦虮仨氁獙?xiě)給機(jī)器看,當(dāng)然你就得要參考機(jī)器本身的功能,然后針對(duì)該功能去撰寫(xiě)程序碼。例如,你要讓DVD影片能夠放映,那就得要參考DVD光驅(qū)的硬件信息才行。萬(wàn)一你的系統(tǒng)有比較冷門(mén)的硬件,光是參考技術(shù)手冊(cè)可能會(huì)昏倒~

  • 程序不具有可攜性:每個(gè)CPU都有獨(dú)特的微指令集,同樣的,每個(gè)硬件都有其功能函數(shù)。因此,你為A計(jì)算機(jī)寫(xiě)的程序,理論上是沒(méi)有辦法在B計(jì)算機(jī)上面運(yùn)作的!而且程序碼的修改非常困難!因?yàn)槭菣C(jī)器碼,并不是人類(lèi)看的懂得程序語(yǔ)言啊!

  • 程序具有專(zhuān)一性:因?yàn)檫@樣的程序必須要針對(duì)硬件功能函數(shù)來(lái)撰寫(xiě),如果已經(jīng)開(kāi)發(fā)了一支瀏覽器程序,想要再開(kāi)發(fā)檔案管理程序時(shí),還是得從頭再參考硬件的功能函數(shù)來(lái)繼續(xù)撰寫(xiě),每天都在和『硬件』挑戰(zhàn)!可能需要天天喝蠻牛了!@_@

那怎么解決啊?為了解決這個(gè)問(wèn)題,計(jì)算機(jī)科學(xué)家設(shè)計(jì)出一種讓人類(lèi)看的懂得程序語(yǔ)言,然后創(chuàng)造一種『編譯器』來(lái)將這些人類(lèi)能夠?qū)懙某绦蛘Z(yǔ)言轉(zhuǎn)譯成為機(jī)器能看懂得機(jī)器碼,如此一來(lái)我們修改與撰寫(xiě)程序就變的容易多了!目前常見(jiàn)的編譯器有C, C++, Java, Fortran等等。機(jī)器語(yǔ)言與高階程序語(yǔ)言的差別如下所示:


圖4.1.1、編譯器的角色

從上面的圖示我們可以看到高階程序語(yǔ)言的程序碼是很容易察看的!鳥(niǎo)哥已經(jīng)將程序碼(英文)寫(xiě)成中文說(shuō)~這樣比較好理解啦!所以這樣已經(jīng)將程序的修改問(wèn)題處理完畢了。問(wèn)題是,在這樣的環(huán)境底下我們還是得要考量整體的硬件系統(tǒng)來(lái)設(shè)計(jì)程序喔!

舉例來(lái)說(shuō),當(dāng)你需要將運(yùn)作的數(shù)據(jù)寫(xiě)入內(nèi)存中,你就得要自行分配一個(gè)內(nèi)存區(qū)塊出來(lái)讓自己的數(shù)據(jù)能夠填上去,所以你還得要了解到內(nèi)存的位址是如何定位的,啊!眼淚還是不知不覺(jué)的流了下來(lái)...怎么寫(xiě)程序這么麻煩啊!

為了要克服硬件方面老是需要重復(fù)撰寫(xiě)控制碼的問(wèn)題,所以就有操作系統(tǒng)(Operating System, OS)的出現(xiàn)了!什么是操作系統(tǒng)呢?底下就來(lái)談一談先!


操作系統(tǒng)

如同前面提到的,在早期想要讓計(jì)算機(jī)執(zhí)行程序就得要參考一堆硬件功能函數(shù),并且學(xué)習(xí)機(jī)器語(yǔ)言才能夠撰寫(xiě)程序。同時(shí)每次寫(xiě)程序時(shí)都必須要重新改寫(xiě),因?yàn)橛布c軟件功能不見(jiàn)得都一致之故。那如果我能夠?qū)⑺械挠布简?qū)動(dòng),并且提供一個(gè)發(fā)展軟件的參考介面來(lái)給工程師開(kāi)發(fā)軟件的話,那發(fā)展軟件不就變的非常的簡(jiǎn)單了?那就是操作系統(tǒng)啦!


  • 操作系統(tǒng)核心(Kernel)

操作系統(tǒng)(Operating System, OS)其實(shí)也是一組程序,這組程序的重點(diǎn)在於管理計(jì)算機(jī)的所有活動(dòng)以及驅(qū)動(dòng)系統(tǒng)中的所有硬件。我們剛剛談到計(jì)算機(jī)沒(méi)有軟件只是一堆廢鐵,那么操作系統(tǒng)的功能就是讓CPU可以開(kāi)始判斷邏輯與運(yùn)算數(shù)值、讓主內(nèi)存可以開(kāi)始載入/讀出數(shù)據(jù)與程序碼、讓硬盤(pán)可以開(kāi)始被存取、讓網(wǎng)絡(luò)卡可以開(kāi)始傳輸數(shù)據(jù)、讓所有周邊可以開(kāi)始運(yùn)轉(zhuǎn)等等。總之,硬件的所有動(dòng)作都必須要透過(guò)這個(gè)操作系統(tǒng)來(lái)達(dá)成就是了。

上述的功能就是操作系統(tǒng)的核心(Kernel)了!你的計(jì)算機(jī)能不能做到某些事情,都與核心有關(guān)!只有核心有提供的功能,你的計(jì)算機(jī)系統(tǒng)才能幫你完成!舉例來(lái)說(shuō),你的核心并不支持TCP/IP的網(wǎng)絡(luò)協(xié)定,那么無(wú)論你購(gòu)買(mǎi)了什么樣的網(wǎng)卡,這個(gè)核心都無(wú)法提供網(wǎng)絡(luò)能力的!

但是單有核心我們使用者也不知道能作啥事的~因?yàn)楹诵闹饕诠芸赜布c提供相關(guān)的能力(例如網(wǎng)絡(luò)功能),這些管理的動(dòng)作是非常的重要的,如果使用者能夠直接使用到核心的話,萬(wàn)一使用者不小心將核心程序停止或破壞,將會(huì)導(dǎo)致整個(gè)系統(tǒng)的崩潰!因此核心程序所放置到內(nèi)存當(dāng)中的區(qū)塊是受保護(hù)的!并且開(kāi)機(jī)后就一直常駐在內(nèi)存當(dāng)中。

Tips:
所以整部系統(tǒng)只有核心的話,我們就只能看著已經(jīng)準(zhǔn)備好運(yùn)作(Ready)的計(jì)算機(jī)系統(tǒng),但無(wú)法操作他!好像有點(diǎn)望梅止渴的那種感覺(jué)啦!這個(gè)時(shí)候就需要軟件的幫忙了!

  • 系統(tǒng)呼叫(System Call)

既然我的硬件都是由核心管理,那么如果我想要開(kāi)發(fā)軟件的話,自然就得要去參考這個(gè)核心的相關(guān)功能!唔!如此一來(lái)不是從原本的參考硬件函數(shù)變成參考核心功能,還是很麻煩啊!有沒(méi)有更簡(jiǎn)單的方法啊!

為了解決這個(gè)問(wèn)題,操作系統(tǒng)通常會(huì)提供一整組的開(kāi)發(fā)介面給工程師來(lái)開(kāi)發(fā)軟件!工程師只要遵守該開(kāi)發(fā)介面那就很容易開(kāi)發(fā)軟件了!舉例來(lái)說(shuō),我們學(xué)習(xí)C程序語(yǔ)言只要參考C程序語(yǔ)言的函式即可,不需要再去考量其他核心的相關(guān)功能,因?yàn)楹诵牡南到y(tǒng)呼叫介面會(huì)主動(dòng)的將C程序語(yǔ)言的相關(guān)語(yǔ)法轉(zhuǎn)成核心可以了解的任務(wù)函數(shù),那核心自然就能夠順利運(yùn)作該程序了!

如果我們將整個(gè)計(jì)算機(jī)系統(tǒng)的相關(guān)軟/硬件繪制成圖的話,他的關(guān)系有點(diǎn)像這樣:


圖4.2.1、操作系統(tǒng)的角色

計(jì)算機(jī)系統(tǒng)主要由硬件構(gòu)成,然后核心程序主要在管理硬件,提供合理的計(jì)算機(jī)系統(tǒng)資源分配(包括CPU資源、內(nèi)存使用資源等等),因此只要硬件不同(如x86架構(gòu)與RISC架構(gòu)的CPU),核心就得要進(jìn)行修改才行。而由於核心只會(huì)進(jìn)行計(jì)算機(jī)系統(tǒng)的資源分配,所以在上頭還需要有應(yīng)用程序的提供,使用者才能夠操作系統(tǒng)的。

為了保護(hù)核心,并且讓程序設(shè)計(jì)師比較容易開(kāi)發(fā)軟件,因此操作系統(tǒng)除了核心程序之外,通常還會(huì)提供一整組開(kāi)發(fā)介面,那就是系統(tǒng)呼叫層。軟件開(kāi)發(fā)工程師只要遵循公認(rèn)的系統(tǒng)呼叫參數(shù)來(lái)開(kāi)發(fā)軟件,該軟件就能夠在該核心上頭運(yùn)作。所以你可以發(fā)現(xiàn),軟件與核心有比較大的關(guān)系,與硬件關(guān)系則不大!硬件也與核心有比較大的關(guān)系!至於與使用者有關(guān)的,那就是應(yīng)用程序啦!

Tips:
在定義上,只要能夠讓計(jì)算機(jī)硬件正確無(wú)誤的運(yùn)作,那就算是操作系統(tǒng)了。所以說(shuō),操作系統(tǒng)其實(shí)就是核心與其提供的介面工具,不過(guò)就如同上面講的,因?yàn)樽詈?jiǎn)單的核心缺乏了與使用者溝通的親和介面,所以在目前,一般我們提到的『操作系統(tǒng)』都會(huì)包含核心與相關(guān)的使用者應(yīng)用軟件呢!

簡(jiǎn)單的說(shuō),上面的圖示可以帶給我們底下的概念:

  • 操作系統(tǒng)的核心層直接參考硬件規(guī)格寫(xiě)成,所以同一個(gè)操作系統(tǒng)程序不能夠在不一樣的硬件架構(gòu)下運(yùn)作。舉例來(lái)說(shuō),個(gè)人計(jì)算機(jī)版的Windows XP不能直接在RISC架構(gòu)的計(jì)算機(jī)下運(yùn)作。所以您知道為何Windows XP又分為32位及64位的版本了吧?因?yàn)?2/64位的CPU指令集不太相同,所以當(dāng)然要設(shè)計(jì)不同的操作系統(tǒng)版本了。

  • 操作系統(tǒng)只是在管理整個(gè)硬件資源,包括CPU、內(nèi)存、輸入輸出裝置及檔案系統(tǒng)檔。如果沒(méi)有其他的應(yīng)用程序輔助,操作系統(tǒng)只能讓計(jì)算機(jī)主機(jī)準(zhǔn)備妥當(dāng)(Ready)而已!并無(wú)法運(yùn)作其他功能。所以你現(xiàn)在知道為何Windows XP上面要達(dá)成網(wǎng)頁(yè)影像的運(yùn)作還需要類(lèi)似PhotoImpact或Photoshop之類(lèi)的軟件安裝了吧?

  • 應(yīng)用程序的開(kāi)發(fā)都是參考操作系統(tǒng)提供的開(kāi)發(fā)介面,所以該應(yīng)用程序只能在該操作系統(tǒng)上面運(yùn)作而已,不可以在其他操作系統(tǒng)上面運(yùn)作的。現(xiàn)在您知道為何去購(gòu)買(mǎi)線上游戲的光盤(pán)時(shí),光盤(pán)上面會(huì)明明白白的寫(xiě)著該軟件適合用於哪一種操作系統(tǒng)上了吧?也該知道某些游戲?yàn)楹尾荒軌蛟贚inux上面安裝了吧?


  • 核心功能

既然核心主要是在負(fù)責(zé)整個(gè)計(jì)算機(jī)系統(tǒng)相關(guān)的資源分配與管理,那我們知道其實(shí)整部計(jì)算機(jī)系統(tǒng)最重要的就是CPU與主內(nèi)存,因此,核心至少也要有這些功能的:

  • 系統(tǒng)呼叫介面(System call interface)
    剛剛談過(guò)了,這是為了方便程序開(kāi)發(fā)者可以輕易的透過(guò)與核心的溝通,將硬件的資源進(jìn)一步的利用,於是需要有這個(gè)簡(jiǎn)易的介面來(lái)方便程序開(kāi)發(fā)者。

  • 程序管理(Process control)
    總有聽(tīng)過(guò)所謂的『多工環(huán)境』吧?一部計(jì)算機(jī)可能同時(shí)間有很多的工作跑到CPU等待運(yùn)算處理,核心這個(gè)時(shí)候必須要能夠控制這些工作,讓CPU的資源作有效的分配才行!另外,良好的CPU排程機(jī)制(就是CPU先運(yùn)作那個(gè)工作的排列順序)將會(huì)有效的加快整體系統(tǒng)效能呢!

  • 內(nèi)存管理(Memory management)
    控制整個(gè)系統(tǒng)的內(nèi)存管理,這個(gè)內(nèi)存控制是非常重要的,因?yàn)橄到y(tǒng)所有的程序碼與數(shù)據(jù)都必須要先存放在內(nèi)存當(dāng)中。通常核心會(huì)提供虛擬內(nèi)存的功能,當(dāng)內(nèi)存不足時(shí)可以提供內(nèi)存置換(swap)的功能哩。

  • 檔案系統(tǒng)管理(Filesystem management)
    檔案系統(tǒng)的管理,例如數(shù)據(jù)的輸入輸出(I/O)等等的工作啦!還有不同檔案格式的支持啦等等,如果你的核心不認(rèn)識(shí)某個(gè)檔案系統(tǒng),那么您將無(wú)法使用該檔案格式的檔案羅!例如:Windows 98就不認(rèn)識(shí)NTFS檔案格式的硬盤(pán);

  • 裝置的驅(qū)動(dòng)(Device drivers)
    就如同上面提到的,硬件的管理是核心的主要工作之一,當(dāng)然羅,裝置的驅(qū)動(dòng)程序就是核心需要做的事情啦!好在目前都有所謂的『可載入模組』功能,可以將驅(qū)動(dòng)程序編輯成模組,就不需要重新的編譯核心啦!這個(gè)也會(huì)在后續(xù)的第二十章當(dāng)中提到的!
Tips:
事實(shí)上,驅(qū)動(dòng)程序的提供應(yīng)該是硬件廠商的事情!硬件廠商要推出硬件時(shí),應(yīng)該要自行參考操作系統(tǒng)的驅(qū)動(dòng)程序開(kāi)發(fā)介面,開(kāi)發(fā)完畢后將該驅(qū)動(dòng)程序連同硬件一同販賣(mài)給使用者才對(duì)!舉例來(lái)說(shuō),當(dāng)你購(gòu)買(mǎi)顯示卡時(shí),顯示卡包裝盒都會(huì)附上一片光盤(pán),讓你可以在進(jìn)入Windows之后進(jìn)行驅(qū)動(dòng)程序的安裝啊!

  • 操作系統(tǒng)與驅(qū)動(dòng)程序

老實(shí)說(shuō),驅(qū)動(dòng)程序可以說(shuō)是操作系統(tǒng)里面相當(dāng)重要的一環(huán)了!不過(guò),硬件可是持續(xù)在進(jìn)步當(dāng)中的!包括主機(jī)板、顯示卡、硬盤(pán)等等。那么比較晚推出的較新的硬件,例如顯示卡,我們的操作系統(tǒng)當(dāng)然就不認(rèn)識(shí)羅!那操作系統(tǒng)該如何驅(qū)動(dòng)這塊新的顯示卡?為了克服這個(gè)問(wèn)題,操作系統(tǒng)通常會(huì)提供一個(gè)開(kāi)發(fā)介面給硬件開(kāi)發(fā)商,讓他們可以根據(jù)這個(gè)介面設(shè)計(jì)可以驅(qū)動(dòng)他們硬件的『驅(qū)動(dòng)程序』,如此一來(lái),只要使用者安裝驅(qū)動(dòng)程序后,自然就可以在他們的操作系統(tǒng)上面驅(qū)動(dòng)這塊顯示卡了。


圖4.2.2、驅(qū)動(dòng)程序與操作系統(tǒng)的關(guān)系

由上圖我們可以得到幾個(gè)小重點(diǎn):

  • 操作系統(tǒng)必須要能夠驅(qū)動(dòng)硬件,如此應(yīng)用程序才能夠使用該硬件功能;
  • 一般來(lái)說(shuō),操作系統(tǒng)會(huì)提供開(kāi)發(fā)介面,讓開(kāi)發(fā)商制作他們的驅(qū)動(dòng)程序;
  • 要使用新硬件功能,必須要安裝廠商提供的驅(qū)動(dòng)程序才行;
  • 驅(qū)動(dòng)程序是由廠商提供的,與操作系統(tǒng)開(kāi)發(fā)者無(wú)關(guān)。

所以,如果你想要在某個(gè)操作系統(tǒng)上面安裝一張新的顯示卡,那么請(qǐng)要求該硬件廠商提供適當(dāng)?shù)尿?qū)動(dòng)程序吧!^_^! 為什么要強(qiáng)調(diào)『適當(dāng)?shù)尿?qū)動(dòng)程序』呢?因?yàn)轵?qū)動(dòng)程序仍然是依據(jù)操作系統(tǒng)而開(kāi)發(fā)的, 所以,給Windows用的驅(qū)動(dòng)程序當(dāng)然不能使用於Linux的環(huán)境下了。


應(yīng)用程序

應(yīng)用程序是參考操作系統(tǒng)提供的開(kāi)發(fā)介面所開(kāi)發(fā)出來(lái)軟件,這些軟件可以讓使用者操作,以達(dá)到某些計(jì)算機(jī)的功能利用。舉例來(lái)說(shuō),辦公室軟件(Office)主要是用來(lái)讓使用者辦公用的;影像處理軟件主要是讓使用者用來(lái)處理影音數(shù)據(jù)的;瀏覽器軟件主要是讓使用者用來(lái)上網(wǎng)瀏覽用的等等。

需要注意的是,應(yīng)用程序是與操作系統(tǒng)有關(guān)系的,如同上面的圖示當(dāng)中的說(shuō)明喔。因此,如果你想要購(gòu)買(mǎi)新軟件,請(qǐng)務(wù)必參考軟件上面的說(shuō)明,看看該軟件是否能夠支持你的操作系統(tǒng)啊!舉例來(lái)說(shuō),如果你想要購(gòu)買(mǎi)線上游戲光盤(pán),務(wù)必參考一下該光盤(pán)是否支持你的操作系統(tǒng),例如是否支持Windows XP/Windows Vista/MAC/Linux等等。不要購(gòu)買(mǎi)了才發(fā)現(xiàn)該軟件無(wú)法安裝在你的操作系統(tǒng)上喔!

我們拿常見(jiàn)的微軟公司的產(chǎn)品來(lái)說(shuō)明。你知道Windows XP, Office 2007之間的關(guān)系了嗎?

  • Windows XP是一套操作系統(tǒng),他必須先安裝到個(gè)人計(jì)算機(jī)上面,否則計(jì)算機(jī)無(wú)法開(kāi)機(jī)運(yùn)作;
  • Windows 98與Windows XP是兩套不同的操作系統(tǒng),所以能在Win 98上安裝的軟件不見(jiàn)得可在WinXP上安裝;
  • Windows XP安裝好后,就只能擁有很少的功能,并沒(méi)有辦公室軟件;
  • Office 2007是一套應(yīng)用程序,要安裝前必須要了解他能在哪些操作系統(tǒng)上面運(yùn)作。

出處:http://vbird.dic.ksu.edu.tw/linux_basic/0105computers_4.php

總結(jié)

以上是生活随笔為你收集整理的鸟哥的Linux私房菜(基础篇)-第零章、计算机概论(零.4)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。