Linux概述

計算機組成概述

計算機組成原理.png

計算機組成原理

如上圖計算機的組成結構,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


32bit尋址范圍計算.png

32位CPU內存尋址范圍計

回到正題,CPU與內存實現了復用機制,CPU時間片依次從指定內存段中存取指令與數據進行事件處理,實現多任務:

多任務處理機制.png

顯而易見,要實現CPU時間片與內存地址段之間的調度與管理,我們需要一套有效的監控機制,于是多任務的需求便引出了操作系統的誕生。

操作系統發展史

現在流行修家譜,我們看看Unix/Linux的族譜

162406575.gif

該圖援引自 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這些硬件設備工作?如何讓多個任務并行執行而互不沖突?這就是操作系統所要完成的最重要的任務

操作系統的核心功能

  1. 硬件驅動

  2. 進程管理

  3. 安全管理

  4. 網絡管理

  5. 內存管理

  6. 文件系統管理

操作系統充當著人與機器之間的翻譯官,盡管操作系統仍然難于理解,但相比于010101串已經更容易讓人理解了。基于這種思想,我們在系統之上不斷增加層次,內核之上的系統調用,系統調用之上的類庫,再之上的高級程序語言,由此,操作系統以其相對友好的接口與人類建立了溝通渠道。當然,類庫,系統調用,內核,匯編程序這些還是需要人類編寫的,但這些工作就交給哪些只可仰望的牛人吧。

系統結構.png

上圖描述了操作系統的組成結構,就是這樣一層層組織起來的,與OSI七層模型一樣,分層的思想充斥著計算機世界。

這里引入兩個概念:
API:應用程序接口
ABI:應用程序二進制接口
這兩個概念涉及到程序的可移植性,這里僅提出,包括程序編譯等相關知識原理,欲知詳情請問google。

Linux發行版本

所謂Linux發行版本,就是將Linux內核包括一些常用APP,打包編譯好,從而使得我們這些無法掌握編譯安裝的“小白們”能夠更容易安裝和使用操作系統。

想了解更全面的Linux發行版本信息詳見《Linux發行版本時間線》,這里只對主要分支進行說明。

繪圖1.png

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

(0)
N24_雪狼N24_雪狼
上一篇 2016-12-01 22:41
下一篇 2016-12-02 10:01

相關推薦

  • RAID各級別特性介紹

        RAID全稱為獨立磁盤冗余陣列(Redundant Array of Independent Disks):基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、 容量巨大的硬盤。     RAID通常被用在服務器電腦上,使用完全相…

    Linux干貨 2016-06-22
  • 文件系統的掛載、usb設備光盤的使用

    一、     文件系統的掛載mount: 1.       掛載命令mount使用: (1)掛載: 將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為,掛載點下原有文件在掛載完成后會被臨時隱藏 (2) 卸載:為解除此…

    Linux干貨 2016-08-29
  • sed使用方法

      sed編輯器被稱作流編輯器(stream editor)。流編輯器在處理數據之前基于預先提供的一組規則來編輯數據流。 一、命令格式   sed options '"地址""編輯命令"' file   常用選項:     -n:靜默模式,不顯示模式…

    Linux干貨 2015-12-28
  • Linux 第五天: (08月01日) 練習和作業

    Linux 第五天: (08月01日) 練習和作業         創建用戶gentoo, 附加組為bin和root, 默認shell為/bin/csh, 注釋信息為"Gentoo Distribution" useradd -G bin,root -c "Gentoo Distribut…

    Linux干貨 2016-08-08
  • 編譯安裝dropbear和使用

    一、概念 Dropbear是一個相對較小的SSH服務器和客戶端。它運行在一個基于POSIX的各種平臺。 Dropbear是開源軟件,在麻省理工學院式的許可證。 Dropbear是特別有用的“嵌入”式的Linux(或其他Unix)系統,如無線路由器。 二、功能 dropbear實現完整的SSH客戶端和服務器版本2協議。它不支持SSH版本1 的向后兼容性,以節省…

    Linux干貨 2016-10-04
  • LVS NAT模型

    LVS NAT NAT模式顧名思義就是對地址進行轉換 通過訪問前端外網的VIP調度到后端兩臺真實主機 拓撲圖如下                      &n…

    2017-05-15
欧美性久久久久