計算機組成概述
計算機組成原理
如上圖計算機的組成結構,CPU運行速度遠遠高于內存,而內存運行速度又遠遠高于I/O;
由于三者運行速度巨大差異,如果系統僅運行一個任務(單任務系統),那么將有大量的CPU空閑時間等待緩慢的I/O及內存的讀取。為提高CPU的使用效率,于是便產生了多任務系統系統的需求。
多任務系統
多任務實現的基礎,我們知道計算機處理任務主要靠CPU和存儲,我們分別針對以上兩個重要組成部分討論如何時間多任務處理。
首先考慮單個CPU如何處理多個事件呢?
其實CPU無法真正實現同時處理多個事件,CPU將時間分割成為時間片,第一個時間時間片用于處理task1,第二個時間片用于處理task2……依次類推。這種方式為CPU的時分復用(時分復用概念在計算機領域應用非常廣泛)。
其次存儲是如何實現多個事件處理,而互不干擾呢?
內存將自身分為指定大小的存儲單元,8位2進制為一個存儲單元,稱之為一個Byte,這些存儲單元都擁有自己的地址。為一個程序分配一定數量的存儲單元用于存儲程序指令與數據,各程序所獲得的存儲單元地址互不重復,以此實現存儲的復用,與時分復用不同,存儲采用的是空間的分割復用。
附:內存尋址基礎
8bit –> 1Byte
1024Bytes –> 1KB
1024KB –> 1MB
1024MB –> 1GB
以上是位到字節個單位的換算關系,我們考慮考慮一下32bit 的尋址范圍:即232
附:內存尋址基礎
8bit –> 1Byte
1024Bytes –> 1KB
1024KB –> 1MB
1024MB –> 1GB
以上是位到字節個單位的換算關系,我們考慮考慮一下32bit 的尋址范圍:即232
32位CPU內存尋址范圍計
回到正題,CPU與內存實現了復用機制,CPU時間片依次從指定內存段中存取指令與數據進行事件處理,實現多任務:
顯而易見,要實現CPU時間片與內存地址段之間的調度與管理,我們需要一套有效的監控機制,于是多任務的需求便引出了操作系統的誕生。
操作系統發展史
現在流行修家譜,我們看看Unix/Linux的族譜
該圖援引自 http://os.51cto.com/art/200810/92024.htm
伴隨著GNU的需求,Linux最終千呼萬喚始出來,1994年Linux 1.0發布。
對以上歷史感興趣的話,可以參考該文《Unix/Linux歷史和大事記》(http://os.51cto.com/art/200810/92024.htm )此處不再贅言。
操作系統基礎
計算機只能識別二進制機器語言,然而我們是基本上不可能理解復雜的二進制語言的,如何讓CPU、內存、I/O這些硬件設備工作?如何讓多個任務并行執行而互不沖突?這就是操作系統所要完成的最重要的任務
操作系統的核心功能
-
硬件驅動
-
進程管理
-
安全管理
-
網絡管理
-
內存管理
-
文件系統管理
操作系統充當著人與機器之間的翻譯官,盡管操作系統仍然難于理解,但相比于010101串已經更容易讓人理解了。基于這種思想,我們在系統之上不斷增加層次,內核之上的系統調用,系統調用之上的類庫,再之上的高級程序語言,由此,操作系統以其相對友好的接口與人類建立了溝通渠道。當然,類庫,系統調用,內核,匯編程序這些還是需要人類編寫的,但這些工作就交給哪些只可仰望的牛人吧。
上圖描述了操作系統的組成結構,就是這樣一層層組織起來的,與OSI七層模型一樣,分層的思想充斥著計算機世界。
這里引入兩個概念:
API:應用程序接口
ABI:應用程序二進制接口
這兩個概念涉及到程序的可移植性,這里僅提出,包括程序編譯等相關知識原理,欲知詳情請問google。
Linux發行版本
所謂Linux發行版本,就是將Linux內核包括一些常用APP,打包編譯好,從而使得我們這些無法掌握編譯安裝的“小白們”能夠更容易安裝和使用操作系統。
想了解更全面的Linux發行版本信息詳見《Linux發行版本時間線》,這里只對主要分支進行說明。
Slackware與redhat背后是有商業公司支撐的,而Debian則沒有。國內RHEL與Centos的應用較為廣泛。
開源軟件為Linux發展提供了巨大的推動力,開源軟件以提供源碼的方式將軟件與外界共享。目前的開源協定主要有GNU的GPL, BSD licenses,Apache licenses,相比于GPL后兩者的限定較為寬松,協議詳情參考wikipedia
閉源軟件為用戶提供編譯完成的二進制可執行程序,源碼不對外公開。目前流行的做法是對某軟件進行雙線授權,分為社區(Community)版本和企業(Enterprise)版本,企業版本提供更為強大的功能和服務,而社區版本在軟件基本功能的前提下,在水平足夠的時候可以進行你的私人定制(二次開發)。
一個完整的程序包括:二進制可執行文件、配置文件、庫文件(程序庫)、幫助文件。如果眾多文件雜亂無章對于我們進行軟件管理來說將帶來巨大不便。還好,我們有軟件包管理器,它用于將眾多文件打包,在安裝時展開到文件系統指定位置,卸載時找到程序相關文件并刪除,查詢軟件信息等功能。
不同的Linux發行版本中使用不同的軟件包管理工具:
發行版本 軟件包管理工具 前段管理工具 Debian dpkg apt-get Redhat rpm yum(dnf 即將開始使用) S.u.S.E rpm zypper
最后,介紹一個極具挑戰版本,LFS(Linux from Scratch),是一本從零開始編譯安裝Linux的指導書。
原創文章,作者:N24_雪狼,如若轉載,請注明出處:http://www.www58058.com/61945