Calendar
数据载入中,请稍候......
Placard
数据载入中,请稍候......
Category
数据载入中,请稍候......
Latest Entries
数据载入中,请稍候......
Latest Comments
数据载入中,请稍候......
Last Messages
数据载入中,请稍候......
User Login
数据载入中,请稍候......
Links
Information
数据载入中,请稍候......
Search
Other


Welcome to my blog!
  什麼是作業系統
 

[ 前注:  这篇说明了,什么是作业系统,及作业系统与硬件资源的关系,还有关于移植的问题,都详细做了说明.很值我得再读. ] 

什麼是作業系統 (Operation System, OS) 呢?我們先來想一想, 上面介紹的計算機(電腦)是如何工作的?舉例來說,您電腦螢幕上面顯示的訊息, 是如何顯示出來的呢?嗯!是藉由顯示卡與螢幕顯像的。那麼如果你想要看 VCD 呢? 呵呵,就需要 1.)有影音資料的光碟片、 2.)可讀取光碟片的光碟機、 3.) 可以轉換影音資料輸出的中央處理器 (CPU) 4.)可以顯示影像的顯示晶片(顯示卡) 5.) 可以傳輸聲音的音效晶片(音效卡) 6.)可以輸出影像的螢幕以及 7.)可以發出聲音的喇叭! 也就是說:所有在『工作』的東西都是『硬體』呀 對啦!就是硬體在工作!

那麼問題來了,現在我們知道,電腦所進行的工作都是電腦硬體幫我們達成的,但是, 為什麼這些硬體知道如何播放 VCD 呢?這當然是因為有某個東西在正確的控制硬體的工作了, 那個咚咚就是: 作業系統 啦! 作業系統可以管理整部電腦的硬體,他可以控制 CPU 進行正確的運算, 他可以分辨硬碟裡頭的資料並進行讀取,他還必須要能夠認識所有的介面卡, 這樣,才能夠將所有的硬體通通正確的使用上啊! 所以,如果沒有這個作業系統,那麼您的電腦就等於是一堆廢鐵而已啊!

雖然作業系統可以完整的掌控所有的硬體資源,但是,對於使用者來說,還是不夠的! 因為作業系統雖然可以掌控所有的硬體,但是,如果使用者無法與作業系統溝通, 那麼這個作業系統就沒有什麼用處了。簡單的來說,以上面的 VCD 為例, 雖然作業系統可以控制硬體播放 VCD ,但是,如果使用者沒有辦法控制何時要播出 VCD 的話, 那麼到底我們要怎麼看 VCD 啊?對吧!

所以說,一個比較『完整的作業系統』應該要包含 兩個東西,一個是『核心與其提供的介面工具』、 一個是『利用核心提供的介面工具所開發出來的軟體』。 我們以大家常使用的 Windows 電腦來做一個簡單的說明好了。大家應該都使用過 Windows 電腦裡面的『檔案總管』吧!當你開啟檔案總管的時候,他就會顯示你硬碟當中的資料, 這個『顯示硬碟裡面的資料,就是核心幫你做的』,但是, 『你要核心去顯示硬碟哪一個目錄下的資料,則是由檔案總管這個工具幫你達成的』! 這樣可以理解嗎?

那麼核心有沒有作不到的事?當然有的,舉例來說, 如果您曾經自行安裝過比較新的顯示卡在您的個人電腦上面, 那麼應該常常會發生 Windows 電腦告知您:『找不到合適的驅動程式來顯示』的問題吧? 也就是說,即使您有最新的顯示卡安裝在您的個人電腦上面,而且也有播放 VCD 的程式, 但是因為『核心』無法操控這個最新的顯示卡,所以,就無法正常的顯示您的 VCD 了。 沒錯!你的整個硬體是由核心來管理的,而如果核心不認識你的硬體, 那麼你將無法使用該硬體設備,例如上面提到的最新的顯示卡。

Tips:
在定義上,只要能夠讓電腦硬體正確無誤的運作,那就算是作業系統了。 所以說,作業系統其實就是核心與其提供的介面工具, 不過,就如同上面講的,因為最陽春的核心缺乏了與使用者溝通的親和介面, 所以在目前,一般我們提到的『作業系統』都會包含核心與相關的使用者應用軟體呢!

核心就是『Kernel』, 他是一個作業系統的最底層的東西,由他來掌管整個硬體資源的工作狀態,而 每個作業系統都有自己的核心,所以說, 當有新的硬體加入到你的系統中的時候,若你的『 Kernel 』並沒有支援他的時候,呵呵,這個新的硬體就肯定無法工作的,因為控制他的 Kernel 並不認識他呀!這樣瞭解了嗎?!先有個概略性的瞭解, 後面我們提到『核心編譯』的時候會再更詳細的談到他!

一般來說,Kernel 為了達成使用者所需要的正確運算結果,他必須要管理的事項有:

  • 系統呼叫介面(System call interface) 為了方便程式開發者可以輕易的透過與 kernel 的溝通,將硬體的資源進一步的利用, 於是需要有這個簡易的介面來方便程式開發者。
  • 行程管理(Process control) 總有聽過所謂的『多工環境』吧?一部電腦可能同時間有很多的工作跑到 CPU 等待運算處理, Kernel 這個時候必須要能夠控制這些工作,讓 CPU 的資源作有效的分配才行!
  • 記憶體管理(Memory management) 控制整個系統的記憶體管理,若記憶體不足, Kernel 最好還能夠提供虛擬記憶體的功能!
  • 檔案系統管理(File system management) 檔案系統的管理,例如資料的輸入輸出 (I/O) 等等的工作啦! 還有不同檔案格式的支援啦等等,如果你的核心不認識某個檔案系統, 那麼您將無法使用該檔案格式的檔案囉!例如: Windows 98 就不認識 NTFS 檔案格式的硬碟;
  • 裝置的驅動(Device drivers) 就如同上面提到的,硬體的管理是 Kernel 的主要工作之一,當然囉,裝置的驅動程式就是核心需要做的事情啦! 好在目前都有所謂的『可載入模組』功能,可以將驅動程式編輯成模組, 就不需要重新的編譯核心啦!這個也會在後續的核心編譯當中提到的!

所以啦!所有硬體的資源都是 kernel 來管理的!至於我們要達成一些工作時,除了藉由核心本身提供的功能 ( 例如上面提到的檔案總管 ) 之外,還可以藉由其他的應用軟體來達成喔!舉個例子來說,你要看 VCD 影片是吧!那麼除了 Windows 提供的媒體播放程式之外,你也可以自行安裝 VCD 播放程式來播放 VCD 囉!這個播放程式就是應用軟體囉,而這個應用軟體可以幫你去控制核心來工作 ( 就是放映影片囉 ) ,因此,我們可以這樣說, 核心是控制整個硬體支援的咚咚,也是一個作業系統的最底層, 然而要讓整個作業系統更完備的話,那還需要含有相當豐富的核心提供的工具, 以及核心相關的應用軟體來支援

OK
!提到這裡那麼您知道 Linux 是什麼了嗎?呵呵!對啦!其實 Linux 就是一個作業系統,這個作業系統裡頭含有最主要的 kernel 以及 kernel 提供的工具啦!他提供了一個完整的作業系統當中最底層的硬體控制與資源管理的完整架構, 這個架構是沿襲 Unix 良好的傳統來的,所以相當的穩定而功能強大!此外, 由於這個優良的架構可以在目前的個人電腦( X86 系統 ) 上面跑, 所以很多的軟體開發者將他們的工作心血移轉到這個架構上面,那就是很多的應用軟體啦! 雖然 Linux 僅是其核心與核心提供的工具, 不過,由於核心、核心工具與這些軟體開發者提供的軟體的整合,使得 Linux 成為一個更完整的、功能強大的作業系統囉!我們可以將 Linux 的系統與使用者的相關性看成底下的圖示:


圖一、使用者、使用者介面與核心工具、核心、與硬體之相關性

Tips:
Torvalds 先生在寫出 Linux 的時候,其實該核心僅能『驅動 386 所有的硬體』而已, 所謂的『讓 386 電腦開始運作,並且等待使用者指令輸入』而已,事實上, 當時能夠在 Linux 上面跑得軟體還很少呢!

Tips:
由上面的說明中,我們知道硬體是由『核心』來控制的,而每種作業系統都有他自己的核心。 這就產生了一個很大的問題,因為早期硬體的開發者所開發的硬體架構或多或少都不相同, 舉例來說,2006年以前的麥金塔是請 IBM 公司開發自己的硬體與作業系統, Windows 則是開發在 x86 架構上的作業系統之一, 那麼 Windows 是否可以在麥金塔上面跑?答案是『不行』的!不過,在 2006 年以後, 麥金塔轉而請 Intel 設計其硬體架構,亦即其硬體架構已經轉為 x86 系統,因此在 2006 年以後的麥金塔若使用 x86 架構時,其硬體則『可能』可以安裝 Windows 作業系統了。

Tips:
因為 Windows 作業系統本來就是針對個人電腦 x86 架構的硬體去設計的,所以他當然只能在 x86 的個人電腦上面運作,在不同的平台,當然就無法運行了。也就是說, 每種作業系統都是在他專門的機器上面運行的喔!這點得要先瞭解。 不過, Linux 由於是 Open Source 的作業系統,所以他的程式碼可以被修改成適合在各種機器上面運行的, 也就是說, Linux 是具有『可移植性』,這可是很重要的一個功能喔! ^_^

 

 

 

[ 阅读全文 | 回复(0) | 引用通告 | 编辑

  Post  by  badboy 发表于 2006-8-25 14:54:01
发表评论:
数据载入中,请稍候......
数据载入中,请稍候......