# 操作系統的發展史(科普章節)
## 目標
- 了解操作系統的發展歷史
- 知道 Linux 內核及發行版的區別
- 知道 Linux 的應用領域
## 01. 操作系統的發展歷史
### 1.1 Unix
1965 年之前的時候,電腦并不像現在一樣普遍,它可不是一般人能碰的起的,除非是軍事或者學院的研究機構,而且當時大型主機至多能提供30臺終端(30個鍵盤、顯示器),連接一臺電腦

**為了解決數量不夠用的問題**
- 1965 年左后由 **貝爾實驗室** 加入了 **麻省理工學院** 以及 **通用電氣** 合作的計劃 —— 該計劃要建立一套 **多使用者(multi-user)**、**多任務(multi-processor)**、**多層次(multi-level)** 的 **MULTICS** 操作系統,想讓大型主機支持 300 臺終端
- 1969 年前后這個項目進度緩慢,資金短缺,貝爾實驗室退出了研究
- 1969 年從這個項目中退出的 **Ken Thompson** 當時在實驗室無聊時,為了讓一臺空閑的電腦上能夠運行 "星際旅行(Space Travel)" 游行,在 8 月份左右趁著其妻子探親的時間,**用了 1 個月的時間**,使用匯編寫出了 Unix 操作系統的原型
- 1970 年,美國貝爾實驗室的 **Ken Thompson**,以 **BCPL** 語言為基礎,設計出很簡單且很接近硬件的 **B 語言**(取BCPL的首字母),并且他用 **B 語言** 寫了第一個 UNIX 操作系統
- 1971 年,同樣酷愛 "星際旅行(Space Travel)" 的 **Dennis M.Ritchie** 為了能早點兒玩上游戲,加入了 **Thompson** 的開發項目,合作開發 UNIX,他的主要工作是改造 **B 語言**,因為**B 語言** 的跨平臺性較差
- 1972 年,**Dennis M.Ritchie** 在 **B 語言** 的基礎上最終設計出了一種新的語言,他取了 **BCPL** 的第二個字母作為這種語言的名字,這就是 **C 語言**
- 1973 年初,**C 語言**的主體完成,**Thompson** 和 **Ritchie** 迫不及待地開始用它完全重寫了現在大名鼎鼎的 **Unix 操作系統**

肯·湯普遜(左)和丹尼斯·里奇(右)
#### C 語言
- 在把UNIX移植到其他類型的計算機上使用時,C 語言強大的移植性(Portability)在此顯現
- 機器語言和匯編語言都不具有移植性,為 x86 開發的程序,不可能在 Alpha,SPARC 和 ARM 等機器上運行
- 而 **C 語言**程序則可以使用在任意架構的處理器上,只要那種架構的處理器**具有對應的 C 語言編譯器和庫**,然后將 C 源代碼編譯、連接成目標二進制文件之后即可運行
#### Unix 家譜

### 1.2 Minix
- 因為 **AT&T(通用電氣)** 的政策改變,在 Version 7 Unix 推出之后,發布新的使用條款,將 UNIX 源代碼私有化,在大學中不再能使用 UNIX 源代碼
- **Andrew S. Tanenbaum(塔能鮑姆)** 教授為了能 **在課堂上教授學生操作系統運作的細節**,決定在不使用任何 AT&T 的源代碼前提下,自行開發與 UNIX 兼容的操作系統,以避免版權上的爭議
- 以 **小型 UNIX(mini-UNIX)**之意,將它稱為 **MINIX**
### 1.3 Linux
- 1991 年 **林納斯(Linus)** 就讀于赫爾辛基大學期間,對 Unix 產生濃厚興趣,嘗試著在Minix 上做一些開發工作
- 因為 **Minix** 只是教學使用,因此功能并不強,**林納斯** 經常要用他的終端 **仿真器(Terminal Emulator)** 去訪問大學主機上的新聞組和郵件,為了方便讀寫和下載文件,他自己編寫了磁盤驅動程序和文件系統,這些在后來成為了 Linux 第一個內核的雛形,當時,他年僅 21 歲!
- 林納斯
利用 GNU 的 bash 當做開發環境,gcc 當做編譯工具,編寫了 Linux 內核,一開始 Linux 并不能兼容 Unix
- 即 Unix 上跑的應用程序不能在 Linux 上跑,即應用程序與內核之間的接口不一致
- 一開始 Linux 只適用于 386,后來經過全世界的網友的幫助,最終能夠兼容多種硬件

## 02. Linux 內核及發行版
### 2.1 Linux 內核版本
- **內核(kernel)**是系統的心臟,是運行程序和管理像磁盤和打印機等硬件設備的核心程序,它提供了一個在裸設備與應用程序間的抽象層
- Linux 內核版本又分為穩定版和開發版,兩種版本是相互關聯,相互循環
- **穩定版**:具有工業級強度,可以廣泛地應用和部署。新的穩定版相對于較舊的只是修正一些 bug 或加入一些新的驅動程序
- **開發版**:由于要試驗各種解決方案,所以變化很快
- 內核源碼網址:http://www.kernel.org
> 所有來自全世界的對 Linux 源碼的修改最終都會匯總到這個網站,由 Linus 領導的開源社區對其進行甄別和修改最終決定是否進入到 Linux 主線內核源碼中
### 2.2 Linux 發行版本
- **Linux 發行版(也被叫做 GNU/Linux 發行版)**通常包含了包括桌面環境、辦公套件、媒體播放器、數據庫等應用軟件
- 常見的發行版本如下:
- Ubuntu
- Redhat
- Fedora
- openSUSE
- Linux Mint
- Debian
- Manjaro
- Mageia
- CentOS
- Arch
- 十大 Linux 服務器發行版排行榜:http://os.51cto.com/art/201612/526126.htm
> 在幾乎每一份與 Linux 有關的榜單上,基于 Debian 的 Ubuntu 都占有一席之位。Canonical 的Ubuntu 勝過其他所有的 Linux 服務器發行版 ―― 從簡單安裝、出色的硬件發現,到世界級的商業支持,Ubuntu確立了難以企及的嚴格標準
## 03. Linux 的應用領域
### 3.1 服務器領域
- Linux 在服務器領域的應用是其重要分支
- Linux 免費、穩定、高效等特點在這里得到了很好的體現
- 早期因為維護、運行等原因同樣受到了很大的限制
- 近些年來 Linux 服務器市場得到了飛速的提升,尤其在一些高端領域尤為廣泛
### 3.2 嵌入式領域
- 近些年來 Linux 在嵌入式領域的應用得到了飛速的提高
- Linux 運行穩定、對網絡的良好支持性、低成本,且可以根據需要進行軟件裁剪,內核最小可以達到幾百 KB 等特點,使其近些年來在嵌入式領域的應用得到非常大的提高
> 主要應用:**機頂盒**、**數字電視**、**網絡電話**、**程控交換機**、**手機**、**PDA**、等都是其應用領域,得到了 Google、三星、摩托羅拉、NEC 等公司的大力推廣
### 3.3 個人桌面領域
- 此領域是傳統 Linux 應用最薄弱的環節
- 傳統 Linux 由于界面簡單、操作復雜、應用軟件少的缺點,一直被 Windows 所壓制
- 近些年來隨著 **Ubuntu**、**Fedora** 等優秀桌面環境的興起,同時各大硬件廠商對其支持的加大,Linux 在個人桌面領域的占有率在逐漸的提高
> 在 Ubuntu 中玩 QQ

- linux基礎
- 01_Python基礎課程安排
- 02_操作系統(科普章節)
- 03_操作系統的發展史(科普章節)
- 04_文件和目錄(理解)
- 05_Ubuntu圖形界面入門
- 06_常用Linux命令的基本使用
- 07_Linux終端命令格式
- 08_文件和目錄常用命令
- 09_遠程管理常用命令
- 10_用戶權限相關命令
- 11_系統信息相關命令
- 12_其他命令
- python基礎
- 01_認識 Python
- 02_第一個Python 程序
- 03_PyCharm的初始設置(知道)
- 04_多文件項目的演練
- 05_注釋
- 06_算數運算符
- 07_程序執行原理(科普)
- 08_變量的基本使用
- 09_變量的命名
- 10_判斷(if)語句
- 11_運算符
- 12_循環
- 13_函數基礎
- 14_高級變量類型
- 15_綜合應用——名片管理系統
- 16_變量進階(理解)
- 17_函數進階.md
- 面向對象
- 01_面向對象(OOP)基本概念
- 02_類和對象
- 03_面向對象基礎語法
- 04_面向對象封裝案例
- 05_面向對象封裝案例 II