1. 程式人生 > >Linux(一)Linux系統概述

Linux(一)Linux系統概述

前言

最近在剛從實習的公司回到學校,準備寫畢業論文,慢慢的把以前學過的東西進行總結。
之前一直使用的是部落格園記筆記,使用的是富文字編輯器。但是發現感覺格式總是不好調。
所以現在想把之前寫的筆記用Markdown來重新編寫過,也是對筆記的內容進行復習了。

一、Linux概述

1.1 Unix歷史

我們要講的不是Linux嗎?怎麼蹦出個Unix,雖然它和Linux長得有點像。因為它們確實有很深的淵源!
Unix 是在1969年美國貝爾實驗室的 肯.湯普森開發出來的一款作業系統,什麼是作業系統?
大家正在玩的 Windows 和 Max OS就是兩個作業系統。作業系統是使用者和計算機的介面,同時也是計算機硬體和應用程式的介面


也就是說我們和計算機打交道以及計算機底層硬體和應用程式打交道都是通過作業系統。如下所示:

而我們所說的Unix也是一個作業系統,其原始碼大部分都是用C語言寫的。它是一個強大的多使用者、多工作業系統,
而且支援多種處理器架構。在1984年,Unix使用者協會頒發了使用標準。
後來IEEE為此制定了POSIX標準(即IEEE1003標準)國際標準名稱為ISO/IEC9945,它通過一組最小的功能定義了
在UNIX作業系統和應用程式之間相容的語言介面。這個標準很重要,後面很多系統的開發都是遵循這個標準來的。


雖然Unix系統這麼好用,但是很不幸,它是一個對原始碼實行智慧財產權保護的傳統商業軟體,也就是說Unix系統
原始碼不開源,而且Unix系統也是一個收費軟體。這也直接導致了Linux系統的誕生。

1.2 Linux歷史

UNIX 最初免費釋出,在1990年,UNIX 在伺服器市場尤其是大學校園成為主流作業系統,許多校園都有 UNIX 主機,
當然還包括一些研究它的計算機系的學生。這些學生都渴望能在自己的電腦上執行 UNIX 。。不幸的是,從那時候開始,
UNIX 開始變得商業化,它的價格也變得非常昂貴。而唯一低廉的選擇就是 MINIX ,這是一個功能有限的類似 UNIX 的
作業系統,作者 Andrew Tanebaum 開發它的目的是用於教學。

1991 年 10 月,Linus Torvalds(Linux 之父)在赫爾辛基大學接觸 UNIX ,他希望能在自己的電腦上執行一個類似的作業系統。
可是 UNIX 的商業版本非常昂貴,於是他從 MINIX 開始入手,而 Linus Torvalds 對Minix不是很滿意,於是決定自己編寫軟體。
他以學生時代熟悉的Unix作為原型,在一臺Intel 386 PC上開始了他的工作。他的進展很快,受工作成績的鼓舞,他將這項成果
通過互連網與其他同學共享,主要用於學術領域。他第一次發行的版本很快吸引了一些黑客。儘管最初的 Linux 並沒有多少用處,
但由於一些黑客的加入使它很快就具有了許多吸引人的特性,甚至一些對作業系統開發不感興趣的人也開始關注它。每當出現新
問題時,有人會立刻找到解決辦法並加入其中,很快的, Linux成為了一個作業系統。得注意的是Linux並沒有包括Unix原始碼,
它是按照公開的POSIX標準重新編寫的。Linux大量使用了由麻省劍橋免費軟體基金的GNU軟體,同時Linux自身也是用它們構造而成。

1.3 Unix與Linux的區別

Linux和UNIX的最大的區別是,前者是開放原始碼的自由軟體,而後者是對原始碼實行智慧財產權保護的傳統商業軟體
這應該是他們最大的不同,這種不同體現在使用者對前者有很高的自主權,而對後者卻只能去被動的適應;這種不同還
表現在前者的開發是處在一個完全開放的環境之中,而後者的開發完全是處在一個黑箱之中,只有相關的開發人員才能 夠接觸的產品的原型
具體區別如下:

  • UNIX系統大多是與硬體配套的,而Linux則可執行在多種硬體平臺上.
  • UNIX是商業軟體,收費,而Linux是自由軟體,免費、公開原始碼的.
  • Linux商業化的有RedHat Linux 、SuSe Linux、slakeware Linux、國內的紅旗等,還有Turbo Linux.
  • Unix主要有Sun 的Solaris、IBM的AIX, HP的HP-UX,以及x86平臺的的SCO Unix/Unixware.

二、Linux作用

2.1 Unix/Linux能做什麼?

伺服器:Web伺服器、Mail伺服器、Database伺服器以及做程式開發等。

2.2 哪些人要學習Unix/Linux?

Unix/Linux管理員,oracle管理員,網路工程師,程式開發者等等。

2.3 Unix/Linux的發展史?

2.4 為什麼Unix/Linux能做伺服器呢?

你如何選擇系統?按照誰更方便滿足使用者的需求來選擇

  • windows:個人使用者平臺優化,非常容易滿足個人的需求,比如上網,聊天,聊QQ等。
  • unix:企業級使用者平臺優化,做伺服器,163,百度,淘寶

做伺服器需要達到的要求:

  • 安全性,比如銀行系統
  • 穩定性高(作為伺服器一旦開機之後就不要隨意當機的),比如說電信,中國移動
  • 高效性(訪問網站的效率)

如果是window是很難這些要求的,所以一般企業級使用者會選擇unix和liunx。
對於我們作為應用程式開發者來選擇OS:開發的時候可能會用到window或者unix,
但是在部署的時候大多數都是unix.所以就需要對unix有一定的瞭解。

三、硬體環境和軟體環境

3.1 硬體環境

  • 輸入裝置(Input Devices),輸出裝置(Output Devices),隨機存取儲存器(RAM),中央處理器(CPU),I/O裝置,
    硬碟(Hard Disk)等等。
  • 輸入裝置包括鍵盤、滑鼠、手寫筆等等。
  • 輸出裝置包括顯示器、印表機、磁帶、硬碟等等。

3.2 軟體環境

  • 軟體分為作業系統和應用軟體   
  • 從使用者和為使用者提供服務的角度分為客戶端和伺服器端。

四、Unix、Linux作業系統簡介

4.1 Kernel(核心)

  • 管理硬體
  • 管理記憶體:記憶體分配
  • 管理程序:程序排程。
  • 控制系統程式和系統硬體
  • 管理檔案系統:真正建立和刪除檔案的,使用者只是發出命令。
  • 管理交換空間(虛擬記憶體),守護程序(精靈),檔案系統。
    swap space:(交換分割槽/空間)當系統的實體記憶體不夠用的時候, 就需要將實體記憶體中的一部分空間釋放出來,
    以供當前執行的程式使用那些被釋放的空間可能來自一些很長時間沒有什麼操作的程式,這些被釋放的空間被臨時
    儲存到Swap空間中,等到那些程式要執行時,再從Swap中恢復儲存的資料到記憶體中。核心不斷在交換空間和實際
    的實體記憶體之間反覆交換虛擬記憶體儲存單元中的內容。這使得系統以為它擁有比實體記憶體更多的可用記憶體。
    deamon:(精靈程序、守護程序、後臺程序)在作業系統中,一般系統的服務都是以後臺程序的方式存在,而且
    都會常駐系統中,直到關機才結束,這類服務稱Deamon。

4.2 shell

Shell是使用者和作業系統核心進行通訊的橋樑,扮演著直譯器或翻譯器的角色。
定義:充當了翻譯者和解釋者。 把人能夠識別的高階語言解釋成機器語言, 把機器語言翻譯成高階語言。
Shell主要有一下幾種,其中bash是Unix/Linux作業系統中預設的Shell

  • Bourne Shell (sh)
    Bourne Shell是Stephen Bourne為AT&T Unix編寫的Shell工具。
    最早的比較出名是Unix Shell
    一個新的版本是Bourne-Again Shell
  • Korn Shell (ksh)
  • C shell(csh)
    Sun公司的創始人,Vi編輯器的作者Bill Joy在加利福尼亞大學的伯克利分校開發出來的,作為BSD Unix的預設Shell存在的。
    C Shell具有歷史記錄功能,所有的使用過的命令都會儲存下來,可以隨時呼叫處理重新執行。
    C Shell有自己的語法規則,類似於C語言。在語法上與Bourne Shell不相容。
    C Shell有一個增強的並且完全相容的新的Shell,tcsh。

4.3 FileSystem(檔案系統)


solaris作業系統的檔案系統:

  • /
    /” 根目錄是Linux/Unix檔案系統的最頂級的目錄。對於Unix系統來說該目錄還用來存放系統的補丁檔案。
  • /opt
    “/opt” 【Optional Application Software Packages】存放第三方工具或者是應用程式的目錄。
  • /etc
    “/etc” 【Etcetra Directory 】存放和系統相關的配置檔案的目錄。
  • /dev
    “/dev” 【Devices】存放裝置檔案的目錄。網絡卡例外,沒有裝置檔案。
  • /usr
    “/usr” 【Unix System Resource】Unix系統資源,存放系統中所有使用者都會使用的命令,文件以及開發庫。
  • /kernel
    “/kernel” 在Linux中是“/boot”,存放核心程式。
  • /var
    “/var” 【Variable】存放的是管理員所使用的一些與系統執行過程相關特殊功能。比如作業系統的日誌等等。
  • /home
    “/home” 系統預設的使用者的主目錄,root使用者除外。