'詳細告訴你:Linux是怎麼來的?'

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

(點擊查看大圖)

1.4 GNU計劃的產生

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

(點擊查看大圖)

1.4 GNU計劃的產生

詳細告訴你:Linux是怎麼來的?

理查·斯托曼

因為 UNIX 操作系統的商業化,原來的 UNXI 系統已經不能再被隨意的使用,很多人都希望能有一款免費好用的操作系統,因為並不是每個人都很有錢,也不是每個人都有能力自己去寫操作系統,此時,理查·斯托曼在麻省理工學院人工智能實驗室發起 GNU 計劃,希望發展出一套完整的開放源代碼操作系統來取代 UNIX,計劃中的操作系統,名為 GNU。

1983年9月27日,理查·斯托曼在 net.UNIX-wizards 和 net.usoft 新聞組中公佈這項計劃。在此項計劃中,開發出了很多我們現在熟悉的常用的工具,包括GNU編譯器套裝(GCC)、GNU的C庫(glibc)、以及 GNU 核心工具組(coreutils)。另外也是 GNU 除錯器(GDB)、GNU 二進制實用程序(binutils)的 GNU Cash shell中 和 GNOME 桌面環境。

當然,GNU計劃的目的還是開發出一款自由傳播的操作系統,這個操作系統的名字叫 Hurd,但是由於對操作系統的要求過高,以至於 Hurd 一直處於測試階段,本意是一個好事情,但是能力有限啊,開發的東西老是出bug,再好的創意那也是徒勞了。

不過 Linus 大神通過 GNU 發佈了自己的 Linux 系統後,就火起來了,真的就一發不可收拾,這也是為什麼 GNU 和 Linux 關係密切的原因。

1.5 UNIX 衍生系統發展圖

用文字來描述事實總是感覺有點欠缺,就好像兩個人發生爭執,可以通過吵嘴解決問題,也可以通過大家解決問題,但是我認為打架應該是最直接的,你說得再多也沒有槍桿子來得實在。

本書的重心主要放在 Linux 上,可以觀察 Linux 的發展軌跡,還是非常給力的,當然了,BSD 目前來說市場佔有率不能跟 Linux 相提並論,但是他在整個 UNIX 上也有有著自己的一席之地的。

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

(點擊查看大圖)

1.4 GNU計劃的產生

詳細告訴你:Linux是怎麼來的?

理查·斯托曼

因為 UNIX 操作系統的商業化,原來的 UNXI 系統已經不能再被隨意的使用,很多人都希望能有一款免費好用的操作系統,因為並不是每個人都很有錢,也不是每個人都有能力自己去寫操作系統,此時,理查·斯托曼在麻省理工學院人工智能實驗室發起 GNU 計劃,希望發展出一套完整的開放源代碼操作系統來取代 UNIX,計劃中的操作系統,名為 GNU。

1983年9月27日,理查·斯托曼在 net.UNIX-wizards 和 net.usoft 新聞組中公佈這項計劃。在此項計劃中,開發出了很多我們現在熟悉的常用的工具,包括GNU編譯器套裝(GCC)、GNU的C庫(glibc)、以及 GNU 核心工具組(coreutils)。另外也是 GNU 除錯器(GDB)、GNU 二進制實用程序(binutils)的 GNU Cash shell中 和 GNOME 桌面環境。

當然,GNU計劃的目的還是開發出一款自由傳播的操作系統,這個操作系統的名字叫 Hurd,但是由於對操作系統的要求過高,以至於 Hurd 一直處於測試階段,本意是一個好事情,但是能力有限啊,開發的東西老是出bug,再好的創意那也是徒勞了。

不過 Linus 大神通過 GNU 發佈了自己的 Linux 系統後,就火起來了,真的就一發不可收拾,這也是為什麼 GNU 和 Linux 關係密切的原因。

1.5 UNIX 衍生系統發展圖

用文字來描述事實總是感覺有點欠缺,就好像兩個人發生爭執,可以通過吵嘴解決問題,也可以通過大家解決問題,但是我認為打架應該是最直接的,你說得再多也沒有槍桿子來得實在。

本書的重心主要放在 Linux 上,可以觀察 Linux 的發展軌跡,還是非常給力的,當然了,BSD 目前來說市場佔有率不能跟 Linux 相提並論,但是他在整個 UNIX 上也有有著自己的一席之地的。

詳細告訴你:Linux是怎麼來的?

1.6 Linux的導火索MINIX

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

(點擊查看大圖)

1.4 GNU計劃的產生

詳細告訴你:Linux是怎麼來的?

理查·斯托曼

因為 UNIX 操作系統的商業化,原來的 UNXI 系統已經不能再被隨意的使用,很多人都希望能有一款免費好用的操作系統,因為並不是每個人都很有錢,也不是每個人都有能力自己去寫操作系統,此時,理查·斯托曼在麻省理工學院人工智能實驗室發起 GNU 計劃,希望發展出一套完整的開放源代碼操作系統來取代 UNIX,計劃中的操作系統,名為 GNU。

1983年9月27日,理查·斯托曼在 net.UNIX-wizards 和 net.usoft 新聞組中公佈這項計劃。在此項計劃中,開發出了很多我們現在熟悉的常用的工具,包括GNU編譯器套裝(GCC)、GNU的C庫(glibc)、以及 GNU 核心工具組(coreutils)。另外也是 GNU 除錯器(GDB)、GNU 二進制實用程序(binutils)的 GNU Cash shell中 和 GNOME 桌面環境。

當然,GNU計劃的目的還是開發出一款自由傳播的操作系統,這個操作系統的名字叫 Hurd,但是由於對操作系統的要求過高,以至於 Hurd 一直處於測試階段,本意是一個好事情,但是能力有限啊,開發的東西老是出bug,再好的創意那也是徒勞了。

不過 Linus 大神通過 GNU 發佈了自己的 Linux 系統後,就火起來了,真的就一發不可收拾,這也是為什麼 GNU 和 Linux 關係密切的原因。

1.5 UNIX 衍生系統發展圖

用文字來描述事實總是感覺有點欠缺,就好像兩個人發生爭執,可以通過吵嘴解決問題,也可以通過大家解決問題,但是我認為打架應該是最直接的,你說得再多也沒有槍桿子來得實在。

本書的重心主要放在 Linux 上,可以觀察 Linux 的發展軌跡,還是非常給力的,當然了,BSD 目前來說市場佔有率不能跟 Linux 相提並論,但是他在整個 UNIX 上也有有著自己的一席之地的。

詳細告訴你:Linux是怎麼來的?

1.6 Linux的導火索MINIX

詳細告訴你:Linux是怎麼來的?

MINIX啟動界面

在 UNIX 產生後,版權在 AT&T 手裡,在 Version 7 UNIX 發佈之後,發佈新的授權條款,將UNIX 源碼私有化,在大學不得再使用 UNIX 源碼,荷蘭阿姆斯特丹自由大學計算機科學系的塔能鮑姆教授(Andrew Stuart "Andy" Tanenbaum)為了教學,自己寫了一個類 UNIX 的小系統,命名為 MINIX(意為mini-UNIX)。

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

(點擊查看大圖)

1.4 GNU計劃的產生

詳細告訴你:Linux是怎麼來的?

理查·斯托曼

因為 UNIX 操作系統的商業化,原來的 UNXI 系統已經不能再被隨意的使用,很多人都希望能有一款免費好用的操作系統,因為並不是每個人都很有錢,也不是每個人都有能力自己去寫操作系統,此時,理查·斯托曼在麻省理工學院人工智能實驗室發起 GNU 計劃,希望發展出一套完整的開放源代碼操作系統來取代 UNIX,計劃中的操作系統,名為 GNU。

1983年9月27日,理查·斯托曼在 net.UNIX-wizards 和 net.usoft 新聞組中公佈這項計劃。在此項計劃中,開發出了很多我們現在熟悉的常用的工具,包括GNU編譯器套裝(GCC)、GNU的C庫(glibc)、以及 GNU 核心工具組(coreutils)。另外也是 GNU 除錯器(GDB)、GNU 二進制實用程序(binutils)的 GNU Cash shell中 和 GNOME 桌面環境。

當然,GNU計劃的目的還是開發出一款自由傳播的操作系統,這個操作系統的名字叫 Hurd,但是由於對操作系統的要求過高,以至於 Hurd 一直處於測試階段,本意是一個好事情,但是能力有限啊,開發的東西老是出bug,再好的創意那也是徒勞了。

不過 Linus 大神通過 GNU 發佈了自己的 Linux 系統後,就火起來了,真的就一發不可收拾,這也是為什麼 GNU 和 Linux 關係密切的原因。

1.5 UNIX 衍生系統發展圖

用文字來描述事實總是感覺有點欠缺,就好像兩個人發生爭執,可以通過吵嘴解決問題,也可以通過大家解決問題,但是我認為打架應該是最直接的,你說得再多也沒有槍桿子來得實在。

本書的重心主要放在 Linux 上,可以觀察 Linux 的發展軌跡,還是非常給力的,當然了,BSD 目前來說市場佔有率不能跟 Linux 相提並論,但是他在整個 UNIX 上也有有著自己的一席之地的。

詳細告訴你:Linux是怎麼來的?

1.6 Linux的導火索MINIX

詳細告訴你:Linux是怎麼來的?

MINIX啟動界面

在 UNIX 產生後,版權在 AT&T 手裡,在 Version 7 UNIX 發佈之後,發佈新的授權條款,將UNIX 源碼私有化,在大學不得再使用 UNIX 源碼,荷蘭阿姆斯特丹自由大學計算機科學系的塔能鮑姆教授(Andrew Stuart "Andy" Tanenbaum)為了教學,自己寫了一個類 UNIX 的小系統,命名為 MINIX(意為mini-UNIX)。

詳細告訴你:Linux是怎麼來的?

永遠不要小看任何一個人,如果這個人能夠編寫出自己的教學操作系統,你更加不要隨便惹他,你可能不可以,但是下面的這個傢伙是可以的,大家可能都不知道什麼是“宏內核”和“微內核”,但是這個傢伙和 Linus 的辯論轟動一時,不管怎麼說,Linux 應該是現在的勝利者,最直接的原因是開源,讓更多的開發者可以使用 Linux 內核移植到自己的設備上,包括 ARM 設備。

但是我們也不能抹殺 ast 的作用,在計算機系統的貢獻上,和教學的貢獻上,肯定是具有一席之地的,作為本文的撰寫者,他們都是我們的始祖,技術無國界,請收下我的膝蓋。

1.7 Linux 的出生

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

(點擊查看大圖)

1.4 GNU計劃的產生

詳細告訴你:Linux是怎麼來的?

理查·斯托曼

因為 UNIX 操作系統的商業化,原來的 UNXI 系統已經不能再被隨意的使用,很多人都希望能有一款免費好用的操作系統,因為並不是每個人都很有錢,也不是每個人都有能力自己去寫操作系統,此時,理查·斯托曼在麻省理工學院人工智能實驗室發起 GNU 計劃,希望發展出一套完整的開放源代碼操作系統來取代 UNIX,計劃中的操作系統,名為 GNU。

1983年9月27日,理查·斯托曼在 net.UNIX-wizards 和 net.usoft 新聞組中公佈這項計劃。在此項計劃中,開發出了很多我們現在熟悉的常用的工具,包括GNU編譯器套裝(GCC)、GNU的C庫(glibc)、以及 GNU 核心工具組(coreutils)。另外也是 GNU 除錯器(GDB)、GNU 二進制實用程序(binutils)的 GNU Cash shell中 和 GNOME 桌面環境。

當然,GNU計劃的目的還是開發出一款自由傳播的操作系統,這個操作系統的名字叫 Hurd,但是由於對操作系統的要求過高,以至於 Hurd 一直處於測試階段,本意是一個好事情,但是能力有限啊,開發的東西老是出bug,再好的創意那也是徒勞了。

不過 Linus 大神通過 GNU 發佈了自己的 Linux 系統後,就火起來了,真的就一發不可收拾,這也是為什麼 GNU 和 Linux 關係密切的原因。

1.5 UNIX 衍生系統發展圖

用文字來描述事實總是感覺有點欠缺,就好像兩個人發生爭執,可以通過吵嘴解決問題,也可以通過大家解決問題,但是我認為打架應該是最直接的,你說得再多也沒有槍桿子來得實在。

本書的重心主要放在 Linux 上,可以觀察 Linux 的發展軌跡,還是非常給力的,當然了,BSD 目前來說市場佔有率不能跟 Linux 相提並論,但是他在整個 UNIX 上也有有著自己的一席之地的。

詳細告訴你:Linux是怎麼來的?

1.6 Linux的導火索MINIX

詳細告訴你:Linux是怎麼來的?

MINIX啟動界面

在 UNIX 產生後,版權在 AT&T 手裡,在 Version 7 UNIX 發佈之後,發佈新的授權條款,將UNIX 源碼私有化,在大學不得再使用 UNIX 源碼,荷蘭阿姆斯特丹自由大學計算機科學系的塔能鮑姆教授(Andrew Stuart "Andy" Tanenbaum)為了教學,自己寫了一個類 UNIX 的小系統,命名為 MINIX(意為mini-UNIX)。

詳細告訴你:Linux是怎麼來的?

永遠不要小看任何一個人,如果這個人能夠編寫出自己的教學操作系統,你更加不要隨便惹他,你可能不可以,但是下面的這個傢伙是可以的,大家可能都不知道什麼是“宏內核”和“微內核”,但是這個傢伙和 Linus 的辯論轟動一時,不管怎麼說,Linux 應該是現在的勝利者,最直接的原因是開源,讓更多的開發者可以使用 Linux 內核移植到自己的設備上,包括 ARM 設備。

但是我們也不能抹殺 ast 的作用,在計算機系統的貢獻上,和教學的貢獻上,肯定是具有一席之地的,作為本文的撰寫者,他們都是我們的始祖,技術無國界,請收下我的膝蓋。

1.7 Linux 的出生

詳細告訴你:Linux是怎麼來的?

林納斯 託瓦茲(Linus Torvalds)

我們的主角人物,林納斯 託瓦茲(Linus Torvalds)1991年,林納斯·託瓦茲在赫爾辛基大學上學時,對操作系統很好奇。由於但是 386BSD 還沒有出來。可是他不喜歡他的 386 電腦上的 MS-DOS 操作系統,所以就安裝了 Minix,可對 Minix 只允許在教育上使用很不滿(在當時 Minix 不允許被用作任何商業使用),於是他便開始寫他自己的操作系統。

Linux 的第一個版本在 1991 年 9 月被大學 FTP server 管理員 Ari Lemmke 發佈在 Internet上,最初 Torvalds 稱這個內核的名稱為 「Freax」,意思是自由「free」和奇異「freak」的結合字,並且附上「X」這個常用的字母,以配合所謂的類 UNIX 的系統。但是 FTP 服務器管理員嫌原來的命名「Freax」的名稱不好聽,把內核的稱呼改成「Linux」,當時僅有 10000 行代碼,仍必須運行於Minix操作系統之上,而且必須使用硬盤開機,隨後在10月份第二個版本(0.02版)發佈,同時這位芬蘭赫爾辛基的大學生在 comp.os.minix 上發佈這樣一則公告

Hello everybody out there using minix- I'm doing a (free) operation system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.

1994 年 3 月,Linux1.0 版正式發佈。為了讓 Linux 可以在商業上使用,林納斯·託瓦茲決定更改他原來的協議(這個協議會限制商業使用),以 GNU GPL 協議來代替。之後許多開發者致力融合 GNU 元素到 Linux 中,做出一個有完整功能的、自由的操作系統。

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

(點擊查看大圖)

1.4 GNU計劃的產生

詳細告訴你:Linux是怎麼來的?

理查·斯托曼

因為 UNIX 操作系統的商業化,原來的 UNXI 系統已經不能再被隨意的使用,很多人都希望能有一款免費好用的操作系統,因為並不是每個人都很有錢,也不是每個人都有能力自己去寫操作系統,此時,理查·斯托曼在麻省理工學院人工智能實驗室發起 GNU 計劃,希望發展出一套完整的開放源代碼操作系統來取代 UNIX,計劃中的操作系統,名為 GNU。

1983年9月27日,理查·斯托曼在 net.UNIX-wizards 和 net.usoft 新聞組中公佈這項計劃。在此項計劃中,開發出了很多我們現在熟悉的常用的工具,包括GNU編譯器套裝(GCC)、GNU的C庫(glibc)、以及 GNU 核心工具組(coreutils)。另外也是 GNU 除錯器(GDB)、GNU 二進制實用程序(binutils)的 GNU Cash shell中 和 GNOME 桌面環境。

當然,GNU計劃的目的還是開發出一款自由傳播的操作系統,這個操作系統的名字叫 Hurd,但是由於對操作系統的要求過高,以至於 Hurd 一直處於測試階段,本意是一個好事情,但是能力有限啊,開發的東西老是出bug,再好的創意那也是徒勞了。

不過 Linus 大神通過 GNU 發佈了自己的 Linux 系統後,就火起來了,真的就一發不可收拾,這也是為什麼 GNU 和 Linux 關係密切的原因。

1.5 UNIX 衍生系統發展圖

用文字來描述事實總是感覺有點欠缺,就好像兩個人發生爭執,可以通過吵嘴解決問題,也可以通過大家解決問題,但是我認為打架應該是最直接的,你說得再多也沒有槍桿子來得實在。

本書的重心主要放在 Linux 上,可以觀察 Linux 的發展軌跡,還是非常給力的,當然了,BSD 目前來說市場佔有率不能跟 Linux 相提並論,但是他在整個 UNIX 上也有有著自己的一席之地的。

詳細告訴你:Linux是怎麼來的?

1.6 Linux的導火索MINIX

詳細告訴你:Linux是怎麼來的?

MINIX啟動界面

在 UNIX 產生後,版權在 AT&T 手裡,在 Version 7 UNIX 發佈之後,發佈新的授權條款,將UNIX 源碼私有化,在大學不得再使用 UNIX 源碼,荷蘭阿姆斯特丹自由大學計算機科學系的塔能鮑姆教授(Andrew Stuart "Andy" Tanenbaum)為了教學,自己寫了一個類 UNIX 的小系統,命名為 MINIX(意為mini-UNIX)。

詳細告訴你:Linux是怎麼來的?

永遠不要小看任何一個人,如果這個人能夠編寫出自己的教學操作系統,你更加不要隨便惹他,你可能不可以,但是下面的這個傢伙是可以的,大家可能都不知道什麼是“宏內核”和“微內核”,但是這個傢伙和 Linus 的辯論轟動一時,不管怎麼說,Linux 應該是現在的勝利者,最直接的原因是開源,讓更多的開發者可以使用 Linux 內核移植到自己的設備上,包括 ARM 設備。

但是我們也不能抹殺 ast 的作用,在計算機系統的貢獻上,和教學的貢獻上,肯定是具有一席之地的,作為本文的撰寫者,他們都是我們的始祖,技術無國界,請收下我的膝蓋。

1.7 Linux 的出生

詳細告訴你:Linux是怎麼來的?

林納斯 託瓦茲(Linus Torvalds)

我們的主角人物,林納斯 託瓦茲(Linus Torvalds)1991年,林納斯·託瓦茲在赫爾辛基大學上學時,對操作系統很好奇。由於但是 386BSD 還沒有出來。可是他不喜歡他的 386 電腦上的 MS-DOS 操作系統,所以就安裝了 Minix,可對 Minix 只允許在教育上使用很不滿(在當時 Minix 不允許被用作任何商業使用),於是他便開始寫他自己的操作系統。

Linux 的第一個版本在 1991 年 9 月被大學 FTP server 管理員 Ari Lemmke 發佈在 Internet上,最初 Torvalds 稱這個內核的名稱為 「Freax」,意思是自由「free」和奇異「freak」的結合字,並且附上「X」這個常用的字母,以配合所謂的類 UNIX 的系統。但是 FTP 服務器管理員嫌原來的命名「Freax」的名稱不好聽,把內核的稱呼改成「Linux」,當時僅有 10000 行代碼,仍必須運行於Minix操作系統之上,而且必須使用硬盤開機,隨後在10月份第二個版本(0.02版)發佈,同時這位芬蘭赫爾辛基的大學生在 comp.os.minix 上發佈這樣一則公告

Hello everybody out there using minix- I'm doing a (free) operation system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.

1994 年 3 月,Linux1.0 版正式發佈。為了讓 Linux 可以在商業上使用,林納斯·託瓦茲決定更改他原來的協議(這個協議會限制商業使用),以 GNU GPL 協議來代替。之後許多開發者致力融合 GNU 元素到 Linux 中,做出一個有完整功能的、自由的操作系統。

詳細告訴你:Linux是怎麼來的?

80386 的芯片

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

(點擊查看大圖)

1.4 GNU計劃的產生

詳細告訴你:Linux是怎麼來的?

理查·斯托曼

因為 UNIX 操作系統的商業化,原來的 UNXI 系統已經不能再被隨意的使用,很多人都希望能有一款免費好用的操作系統,因為並不是每個人都很有錢,也不是每個人都有能力自己去寫操作系統,此時,理查·斯托曼在麻省理工學院人工智能實驗室發起 GNU 計劃,希望發展出一套完整的開放源代碼操作系統來取代 UNIX,計劃中的操作系統,名為 GNU。

1983年9月27日,理查·斯托曼在 net.UNIX-wizards 和 net.usoft 新聞組中公佈這項計劃。在此項計劃中,開發出了很多我們現在熟悉的常用的工具,包括GNU編譯器套裝(GCC)、GNU的C庫(glibc)、以及 GNU 核心工具組(coreutils)。另外也是 GNU 除錯器(GDB)、GNU 二進制實用程序(binutils)的 GNU Cash shell中 和 GNOME 桌面環境。

當然,GNU計劃的目的還是開發出一款自由傳播的操作系統,這個操作系統的名字叫 Hurd,但是由於對操作系統的要求過高,以至於 Hurd 一直處於測試階段,本意是一個好事情,但是能力有限啊,開發的東西老是出bug,再好的創意那也是徒勞了。

不過 Linus 大神通過 GNU 發佈了自己的 Linux 系統後,就火起來了,真的就一發不可收拾,這也是為什麼 GNU 和 Linux 關係密切的原因。

1.5 UNIX 衍生系統發展圖

用文字來描述事實總是感覺有點欠缺,就好像兩個人發生爭執,可以通過吵嘴解決問題,也可以通過大家解決問題,但是我認為打架應該是最直接的,你說得再多也沒有槍桿子來得實在。

本書的重心主要放在 Linux 上,可以觀察 Linux 的發展軌跡,還是非常給力的,當然了,BSD 目前來說市場佔有率不能跟 Linux 相提並論,但是他在整個 UNIX 上也有有著自己的一席之地的。

詳細告訴你:Linux是怎麼來的?

1.6 Linux的導火索MINIX

詳細告訴你:Linux是怎麼來的?

MINIX啟動界面

在 UNIX 產生後,版權在 AT&T 手裡,在 Version 7 UNIX 發佈之後,發佈新的授權條款,將UNIX 源碼私有化,在大學不得再使用 UNIX 源碼,荷蘭阿姆斯特丹自由大學計算機科學系的塔能鮑姆教授(Andrew Stuart "Andy" Tanenbaum)為了教學,自己寫了一個類 UNIX 的小系統,命名為 MINIX(意為mini-UNIX)。

詳細告訴你:Linux是怎麼來的?

永遠不要小看任何一個人,如果這個人能夠編寫出自己的教學操作系統,你更加不要隨便惹他,你可能不可以,但是下面的這個傢伙是可以的,大家可能都不知道什麼是“宏內核”和“微內核”,但是這個傢伙和 Linus 的辯論轟動一時,不管怎麼說,Linux 應該是現在的勝利者,最直接的原因是開源,讓更多的開發者可以使用 Linux 內核移植到自己的設備上,包括 ARM 設備。

但是我們也不能抹殺 ast 的作用,在計算機系統的貢獻上,和教學的貢獻上,肯定是具有一席之地的,作為本文的撰寫者,他們都是我們的始祖,技術無國界,請收下我的膝蓋。

1.7 Linux 的出生

詳細告訴你:Linux是怎麼來的?

林納斯 託瓦茲(Linus Torvalds)

我們的主角人物,林納斯 託瓦茲(Linus Torvalds)1991年,林納斯·託瓦茲在赫爾辛基大學上學時,對操作系統很好奇。由於但是 386BSD 還沒有出來。可是他不喜歡他的 386 電腦上的 MS-DOS 操作系統,所以就安裝了 Minix,可對 Minix 只允許在教育上使用很不滿(在當時 Minix 不允許被用作任何商業使用),於是他便開始寫他自己的操作系統。

Linux 的第一個版本在 1991 年 9 月被大學 FTP server 管理員 Ari Lemmke 發佈在 Internet上,最初 Torvalds 稱這個內核的名稱為 「Freax」,意思是自由「free」和奇異「freak」的結合字,並且附上「X」這個常用的字母,以配合所謂的類 UNIX 的系統。但是 FTP 服務器管理員嫌原來的命名「Freax」的名稱不好聽,把內核的稱呼改成「Linux」,當時僅有 10000 行代碼,仍必須運行於Minix操作系統之上,而且必須使用硬盤開機,隨後在10月份第二個版本(0.02版)發佈,同時這位芬蘭赫爾辛基的大學生在 comp.os.minix 上發佈這樣一則公告

Hello everybody out there using minix- I'm doing a (free) operation system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.

1994 年 3 月,Linux1.0 版正式發佈。為了讓 Linux 可以在商業上使用,林納斯·託瓦茲決定更改他原來的協議(這個協議會限制商業使用),以 GNU GPL 協議來代替。之後許多開發者致力融合 GNU 元素到 Linux 中,做出一個有完整功能的、自由的操作系統。

詳細告訴你:Linux是怎麼來的?

80386 的芯片

詳細告訴你:Linux是怎麼來的?

80386的電腦

如果單憑林納斯一個人的力量,Linux 不可能發展到這個程度,我認為在那個時候,他做了一個非常正確的決定,就是「開源」,讓世界上更多的優秀程序員加入到他的事業當中,為了讓更多的人同步開發,林納斯還寫了 GIT ,這個讓很多協作開發者為之興奮的工具。

1.8 Linux的標誌物

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

(點擊查看大圖)

1.4 GNU計劃的產生

詳細告訴你:Linux是怎麼來的?

理查·斯托曼

因為 UNIX 操作系統的商業化,原來的 UNXI 系統已經不能再被隨意的使用,很多人都希望能有一款免費好用的操作系統,因為並不是每個人都很有錢,也不是每個人都有能力自己去寫操作系統,此時,理查·斯托曼在麻省理工學院人工智能實驗室發起 GNU 計劃,希望發展出一套完整的開放源代碼操作系統來取代 UNIX,計劃中的操作系統,名為 GNU。

1983年9月27日,理查·斯托曼在 net.UNIX-wizards 和 net.usoft 新聞組中公佈這項計劃。在此項計劃中,開發出了很多我們現在熟悉的常用的工具,包括GNU編譯器套裝(GCC)、GNU的C庫(glibc)、以及 GNU 核心工具組(coreutils)。另外也是 GNU 除錯器(GDB)、GNU 二進制實用程序(binutils)的 GNU Cash shell中 和 GNOME 桌面環境。

當然,GNU計劃的目的還是開發出一款自由傳播的操作系統,這個操作系統的名字叫 Hurd,但是由於對操作系統的要求過高,以至於 Hurd 一直處於測試階段,本意是一個好事情,但是能力有限啊,開發的東西老是出bug,再好的創意那也是徒勞了。

不過 Linus 大神通過 GNU 發佈了自己的 Linux 系統後,就火起來了,真的就一發不可收拾,這也是為什麼 GNU 和 Linux 關係密切的原因。

1.5 UNIX 衍生系統發展圖

用文字來描述事實總是感覺有點欠缺,就好像兩個人發生爭執,可以通過吵嘴解決問題,也可以通過大家解決問題,但是我認為打架應該是最直接的,你說得再多也沒有槍桿子來得實在。

本書的重心主要放在 Linux 上,可以觀察 Linux 的發展軌跡,還是非常給力的,當然了,BSD 目前來說市場佔有率不能跟 Linux 相提並論,但是他在整個 UNIX 上也有有著自己的一席之地的。

詳細告訴你:Linux是怎麼來的?

1.6 Linux的導火索MINIX

詳細告訴你:Linux是怎麼來的?

MINIX啟動界面

在 UNIX 產生後,版權在 AT&T 手裡,在 Version 7 UNIX 發佈之後,發佈新的授權條款,將UNIX 源碼私有化,在大學不得再使用 UNIX 源碼,荷蘭阿姆斯特丹自由大學計算機科學系的塔能鮑姆教授(Andrew Stuart "Andy" Tanenbaum)為了教學,自己寫了一個類 UNIX 的小系統,命名為 MINIX(意為mini-UNIX)。

詳細告訴你:Linux是怎麼來的?

永遠不要小看任何一個人,如果這個人能夠編寫出自己的教學操作系統,你更加不要隨便惹他,你可能不可以,但是下面的這個傢伙是可以的,大家可能都不知道什麼是“宏內核”和“微內核”,但是這個傢伙和 Linus 的辯論轟動一時,不管怎麼說,Linux 應該是現在的勝利者,最直接的原因是開源,讓更多的開發者可以使用 Linux 內核移植到自己的設備上,包括 ARM 設備。

但是我們也不能抹殺 ast 的作用,在計算機系統的貢獻上,和教學的貢獻上,肯定是具有一席之地的,作為本文的撰寫者,他們都是我們的始祖,技術無國界,請收下我的膝蓋。

1.7 Linux 的出生

詳細告訴你:Linux是怎麼來的?

林納斯 託瓦茲(Linus Torvalds)

我們的主角人物,林納斯 託瓦茲(Linus Torvalds)1991年,林納斯·託瓦茲在赫爾辛基大學上學時,對操作系統很好奇。由於但是 386BSD 還沒有出來。可是他不喜歡他的 386 電腦上的 MS-DOS 操作系統,所以就安裝了 Minix,可對 Minix 只允許在教育上使用很不滿(在當時 Minix 不允許被用作任何商業使用),於是他便開始寫他自己的操作系統。

Linux 的第一個版本在 1991 年 9 月被大學 FTP server 管理員 Ari Lemmke 發佈在 Internet上,最初 Torvalds 稱這個內核的名稱為 「Freax」,意思是自由「free」和奇異「freak」的結合字,並且附上「X」這個常用的字母,以配合所謂的類 UNIX 的系統。但是 FTP 服務器管理員嫌原來的命名「Freax」的名稱不好聽,把內核的稱呼改成「Linux」,當時僅有 10000 行代碼,仍必須運行於Minix操作系統之上,而且必須使用硬盤開機,隨後在10月份第二個版本(0.02版)發佈,同時這位芬蘭赫爾辛基的大學生在 comp.os.minix 上發佈這樣一則公告

Hello everybody out there using minix- I'm doing a (free) operation system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.

1994 年 3 月,Linux1.0 版正式發佈。為了讓 Linux 可以在商業上使用,林納斯·託瓦茲決定更改他原來的協議(這個協議會限制商業使用),以 GNU GPL 協議來代替。之後許多開發者致力融合 GNU 元素到 Linux 中,做出一個有完整功能的、自由的操作系統。

詳細告訴你:Linux是怎麼來的?

80386 的芯片

詳細告訴你:Linux是怎麼來的?

80386的電腦

如果單憑林納斯一個人的力量,Linux 不可能發展到這個程度,我認為在那個時候,他做了一個非常正確的決定,就是「開源」,讓世界上更多的優秀程序員加入到他的事業當中,為了讓更多的人同步開發,林納斯還寫了 GIT ,這個讓很多協作開發者為之興奮的工具。

1.8 Linux的標誌物

詳細告訴你:Linux是怎麼來的?

Linux 的標誌和吉祥物是一隻名字叫做 Tux 的企鵝,標誌的由來是因為 Linus 在澳洲時曾被一隻動物園裡的企鵝咬了一口,便選擇企鵝作為 Linux的標誌。更容易被接受的說法是:企鵝代表南極,而南極又是全世界所共有的一塊陸地。這也就代表 Linux 是所有人的 Linux。

曾經有一個笑話說林納斯被企鵝咬了之後,因為咬過的傷口會發炎,發炎的時候傷口會有點疼,晚上寫代碼想打瞌睡,但是就是因為這個炎症的疼痛感刺激著自己,當然了,這個只是個傳說,傳說是否是真的,哪天大神心情好了可能會揭曉答案。

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

(點擊查看大圖)

1.4 GNU計劃的產生

詳細告訴你:Linux是怎麼來的?

理查·斯托曼

因為 UNIX 操作系統的商業化,原來的 UNXI 系統已經不能再被隨意的使用,很多人都希望能有一款免費好用的操作系統,因為並不是每個人都很有錢,也不是每個人都有能力自己去寫操作系統,此時,理查·斯托曼在麻省理工學院人工智能實驗室發起 GNU 計劃,希望發展出一套完整的開放源代碼操作系統來取代 UNIX,計劃中的操作系統,名為 GNU。

1983年9月27日,理查·斯托曼在 net.UNIX-wizards 和 net.usoft 新聞組中公佈這項計劃。在此項計劃中,開發出了很多我們現在熟悉的常用的工具,包括GNU編譯器套裝(GCC)、GNU的C庫(glibc)、以及 GNU 核心工具組(coreutils)。另外也是 GNU 除錯器(GDB)、GNU 二進制實用程序(binutils)的 GNU Cash shell中 和 GNOME 桌面環境。

當然,GNU計劃的目的還是開發出一款自由傳播的操作系統,這個操作系統的名字叫 Hurd,但是由於對操作系統的要求過高,以至於 Hurd 一直處於測試階段,本意是一個好事情,但是能力有限啊,開發的東西老是出bug,再好的創意那也是徒勞了。

不過 Linus 大神通過 GNU 發佈了自己的 Linux 系統後,就火起來了,真的就一發不可收拾,這也是為什麼 GNU 和 Linux 關係密切的原因。

1.5 UNIX 衍生系統發展圖

用文字來描述事實總是感覺有點欠缺,就好像兩個人發生爭執,可以通過吵嘴解決問題,也可以通過大家解決問題,但是我認為打架應該是最直接的,你說得再多也沒有槍桿子來得實在。

本書的重心主要放在 Linux 上,可以觀察 Linux 的發展軌跡,還是非常給力的,當然了,BSD 目前來說市場佔有率不能跟 Linux 相提並論,但是他在整個 UNIX 上也有有著自己的一席之地的。

詳細告訴你:Linux是怎麼來的?

1.6 Linux的導火索MINIX

詳細告訴你:Linux是怎麼來的?

MINIX啟動界面

在 UNIX 產生後,版權在 AT&T 手裡,在 Version 7 UNIX 發佈之後,發佈新的授權條款,將UNIX 源碼私有化,在大學不得再使用 UNIX 源碼,荷蘭阿姆斯特丹自由大學計算機科學系的塔能鮑姆教授(Andrew Stuart "Andy" Tanenbaum)為了教學,自己寫了一個類 UNIX 的小系統,命名為 MINIX(意為mini-UNIX)。

詳細告訴你:Linux是怎麼來的?

永遠不要小看任何一個人,如果這個人能夠編寫出自己的教學操作系統,你更加不要隨便惹他,你可能不可以,但是下面的這個傢伙是可以的,大家可能都不知道什麼是“宏內核”和“微內核”,但是這個傢伙和 Linus 的辯論轟動一時,不管怎麼說,Linux 應該是現在的勝利者,最直接的原因是開源,讓更多的開發者可以使用 Linux 內核移植到自己的設備上,包括 ARM 設備。

但是我們也不能抹殺 ast 的作用,在計算機系統的貢獻上,和教學的貢獻上,肯定是具有一席之地的,作為本文的撰寫者,他們都是我們的始祖,技術無國界,請收下我的膝蓋。

1.7 Linux 的出生

詳細告訴你:Linux是怎麼來的?

林納斯 託瓦茲(Linus Torvalds)

我們的主角人物,林納斯 託瓦茲(Linus Torvalds)1991年,林納斯·託瓦茲在赫爾辛基大學上學時,對操作系統很好奇。由於但是 386BSD 還沒有出來。可是他不喜歡他的 386 電腦上的 MS-DOS 操作系統,所以就安裝了 Minix,可對 Minix 只允許在教育上使用很不滿(在當時 Minix 不允許被用作任何商業使用),於是他便開始寫他自己的操作系統。

Linux 的第一個版本在 1991 年 9 月被大學 FTP server 管理員 Ari Lemmke 發佈在 Internet上,最初 Torvalds 稱這個內核的名稱為 「Freax」,意思是自由「free」和奇異「freak」的結合字,並且附上「X」這個常用的字母,以配合所謂的類 UNIX 的系統。但是 FTP 服務器管理員嫌原來的命名「Freax」的名稱不好聽,把內核的稱呼改成「Linux」,當時僅有 10000 行代碼,仍必須運行於Minix操作系統之上,而且必須使用硬盤開機,隨後在10月份第二個版本(0.02版)發佈,同時這位芬蘭赫爾辛基的大學生在 comp.os.minix 上發佈這樣一則公告

Hello everybody out there using minix- I'm doing a (free) operation system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.

1994 年 3 月,Linux1.0 版正式發佈。為了讓 Linux 可以在商業上使用,林納斯·託瓦茲決定更改他原來的協議(這個協議會限制商業使用),以 GNU GPL 協議來代替。之後許多開發者致力融合 GNU 元素到 Linux 中,做出一個有完整功能的、自由的操作系統。

詳細告訴你:Linux是怎麼來的?

80386 的芯片

詳細告訴你:Linux是怎麼來的?

80386的電腦

如果單憑林納斯一個人的力量,Linux 不可能發展到這個程度,我認為在那個時候,他做了一個非常正確的決定,就是「開源」,讓世界上更多的優秀程序員加入到他的事業當中,為了讓更多的人同步開發,林納斯還寫了 GIT ,這個讓很多協作開發者為之興奮的工具。

1.8 Linux的標誌物

詳細告訴你:Linux是怎麼來的?

Linux 的標誌和吉祥物是一隻名字叫做 Tux 的企鵝,標誌的由來是因為 Linus 在澳洲時曾被一隻動物園裡的企鵝咬了一口,便選擇企鵝作為 Linux的標誌。更容易被接受的說法是:企鵝代表南極,而南極又是全世界所共有的一塊陸地。這也就代表 Linux 是所有人的 Linux。

曾經有一個笑話說林納斯被企鵝咬了之後,因為咬過的傷口會發炎,發炎的時候傷口會有點疼,晚上寫代碼想打瞌睡,但是就是因為這個炎症的疼痛感刺激著自己,當然了,這個只是個傳說,傳說是否是真的,哪天大神心情好了可能會揭曉答案。

詳細告訴你:Linux是怎麼來的?

1.9 Linux的現狀

今天在 Linus Torvalds 帶領下,眾多開發共同參與開發和維護 Linux 內核。理查德·斯托曼領導的自由軟件基金會,繼續提供大量支持 Linux 內核的 GNU 組件。一些個人和企業開發的第三方的非 GNU 組件也提供對 Linux 內核的支持,這些第三方組件包括大量的作品,有內核模塊和用戶應用程序和庫等內容。Linux 社區或企業都推出一些重要的 Linux發行版,包括 Linux內核、GNU組件、非GNU組件,以及其他形式的的軟件包管理系統軟件。

目前這個階段,可以說每個人都脫離不開 Linux,好吧,肯定有人跑出來抬槓,我就問你,你手機底層是 Linux 內核你可知道,你說你用的是塞班手機,那裡購物的雲平臺,淘寶,亞馬遜等都是用 Linux 開發維護的,好吧你說你是個老闆,買東西都是別人給你買的,那麼你炒股吧,很多股票平臺都是基於 Linux 開發維護的。

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

(點擊查看大圖)

1.4 GNU計劃的產生

詳細告訴你:Linux是怎麼來的?

理查·斯托曼

因為 UNIX 操作系統的商業化,原來的 UNXI 系統已經不能再被隨意的使用,很多人都希望能有一款免費好用的操作系統,因為並不是每個人都很有錢,也不是每個人都有能力自己去寫操作系統,此時,理查·斯托曼在麻省理工學院人工智能實驗室發起 GNU 計劃,希望發展出一套完整的開放源代碼操作系統來取代 UNIX,計劃中的操作系統,名為 GNU。

1983年9月27日,理查·斯托曼在 net.UNIX-wizards 和 net.usoft 新聞組中公佈這項計劃。在此項計劃中,開發出了很多我們現在熟悉的常用的工具,包括GNU編譯器套裝(GCC)、GNU的C庫(glibc)、以及 GNU 核心工具組(coreutils)。另外也是 GNU 除錯器(GDB)、GNU 二進制實用程序(binutils)的 GNU Cash shell中 和 GNOME 桌面環境。

當然,GNU計劃的目的還是開發出一款自由傳播的操作系統,這個操作系統的名字叫 Hurd,但是由於對操作系統的要求過高,以至於 Hurd 一直處於測試階段,本意是一個好事情,但是能力有限啊,開發的東西老是出bug,再好的創意那也是徒勞了。

不過 Linus 大神通過 GNU 發佈了自己的 Linux 系統後,就火起來了,真的就一發不可收拾,這也是為什麼 GNU 和 Linux 關係密切的原因。

1.5 UNIX 衍生系統發展圖

用文字來描述事實總是感覺有點欠缺,就好像兩個人發生爭執,可以通過吵嘴解決問題,也可以通過大家解決問題,但是我認為打架應該是最直接的,你說得再多也沒有槍桿子來得實在。

本書的重心主要放在 Linux 上,可以觀察 Linux 的發展軌跡,還是非常給力的,當然了,BSD 目前來說市場佔有率不能跟 Linux 相提並論,但是他在整個 UNIX 上也有有著自己的一席之地的。

詳細告訴你:Linux是怎麼來的?

1.6 Linux的導火索MINIX

詳細告訴你:Linux是怎麼來的?

MINIX啟動界面

在 UNIX 產生後,版權在 AT&T 手裡,在 Version 7 UNIX 發佈之後,發佈新的授權條款,將UNIX 源碼私有化,在大學不得再使用 UNIX 源碼,荷蘭阿姆斯特丹自由大學計算機科學系的塔能鮑姆教授(Andrew Stuart "Andy" Tanenbaum)為了教學,自己寫了一個類 UNIX 的小系統,命名為 MINIX(意為mini-UNIX)。

詳細告訴你:Linux是怎麼來的?

永遠不要小看任何一個人,如果這個人能夠編寫出自己的教學操作系統,你更加不要隨便惹他,你可能不可以,但是下面的這個傢伙是可以的,大家可能都不知道什麼是“宏內核”和“微內核”,但是這個傢伙和 Linus 的辯論轟動一時,不管怎麼說,Linux 應該是現在的勝利者,最直接的原因是開源,讓更多的開發者可以使用 Linux 內核移植到自己的設備上,包括 ARM 設備。

但是我們也不能抹殺 ast 的作用,在計算機系統的貢獻上,和教學的貢獻上,肯定是具有一席之地的,作為本文的撰寫者,他們都是我們的始祖,技術無國界,請收下我的膝蓋。

1.7 Linux 的出生

詳細告訴你:Linux是怎麼來的?

林納斯 託瓦茲(Linus Torvalds)

我們的主角人物,林納斯 託瓦茲(Linus Torvalds)1991年,林納斯·託瓦茲在赫爾辛基大學上學時,對操作系統很好奇。由於但是 386BSD 還沒有出來。可是他不喜歡他的 386 電腦上的 MS-DOS 操作系統,所以就安裝了 Minix,可對 Minix 只允許在教育上使用很不滿(在當時 Minix 不允許被用作任何商業使用),於是他便開始寫他自己的操作系統。

Linux 的第一個版本在 1991 年 9 月被大學 FTP server 管理員 Ari Lemmke 發佈在 Internet上,最初 Torvalds 稱這個內核的名稱為 「Freax」,意思是自由「free」和奇異「freak」的結合字,並且附上「X」這個常用的字母,以配合所謂的類 UNIX 的系統。但是 FTP 服務器管理員嫌原來的命名「Freax」的名稱不好聽,把內核的稱呼改成「Linux」,當時僅有 10000 行代碼,仍必須運行於Minix操作系統之上,而且必須使用硬盤開機,隨後在10月份第二個版本(0.02版)發佈,同時這位芬蘭赫爾辛基的大學生在 comp.os.minix 上發佈這樣一則公告

Hello everybody out there using minix- I'm doing a (free) operation system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.

1994 年 3 月,Linux1.0 版正式發佈。為了讓 Linux 可以在商業上使用,林納斯·託瓦茲決定更改他原來的協議(這個協議會限制商業使用),以 GNU GPL 協議來代替。之後許多開發者致力融合 GNU 元素到 Linux 中,做出一個有完整功能的、自由的操作系統。

詳細告訴你:Linux是怎麼來的?

80386 的芯片

詳細告訴你:Linux是怎麼來的?

80386的電腦

如果單憑林納斯一個人的力量,Linux 不可能發展到這個程度,我認為在那個時候,他做了一個非常正確的決定,就是「開源」,讓世界上更多的優秀程序員加入到他的事業當中,為了讓更多的人同步開發,林納斯還寫了 GIT ,這個讓很多協作開發者為之興奮的工具。

1.8 Linux的標誌物

詳細告訴你:Linux是怎麼來的?

Linux 的標誌和吉祥物是一隻名字叫做 Tux 的企鵝,標誌的由來是因為 Linus 在澳洲時曾被一隻動物園裡的企鵝咬了一口,便選擇企鵝作為 Linux的標誌。更容易被接受的說法是:企鵝代表南極,而南極又是全世界所共有的一塊陸地。這也就代表 Linux 是所有人的 Linux。

曾經有一個笑話說林納斯被企鵝咬了之後,因為咬過的傷口會發炎,發炎的時候傷口會有點疼,晚上寫代碼想打瞌睡,但是就是因為這個炎症的疼痛感刺激著自己,當然了,這個只是個傳說,傳說是否是真的,哪天大神心情好了可能會揭曉答案。

詳細告訴你:Linux是怎麼來的?

1.9 Linux的現狀

今天在 Linus Torvalds 帶領下,眾多開發共同參與開發和維護 Linux 內核。理查德·斯托曼領導的自由軟件基金會,繼續提供大量支持 Linux 內核的 GNU 組件。一些個人和企業開發的第三方的非 GNU 組件也提供對 Linux 內核的支持,這些第三方組件包括大量的作品,有內核模塊和用戶應用程序和庫等內容。Linux 社區或企業都推出一些重要的 Linux發行版,包括 Linux內核、GNU組件、非GNU組件,以及其他形式的的軟件包管理系統軟件。

目前這個階段,可以說每個人都脫離不開 Linux,好吧,肯定有人跑出來抬槓,我就問你,你手機底層是 Linux 內核你可知道,你說你用的是塞班手機,那裡購物的雲平臺,淘寶,亞馬遜等都是用 Linux 開發維護的,好吧你說你是個老闆,買東西都是別人給你買的,那麼你炒股吧,很多股票平臺都是基於 Linux 開發維護的。

詳細告訴你:Linux是怎麼來的?

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

(點擊查看大圖)

1.4 GNU計劃的產生

詳細告訴你:Linux是怎麼來的?

理查·斯托曼

因為 UNIX 操作系統的商業化,原來的 UNXI 系統已經不能再被隨意的使用,很多人都希望能有一款免費好用的操作系統,因為並不是每個人都很有錢,也不是每個人都有能力自己去寫操作系統,此時,理查·斯托曼在麻省理工學院人工智能實驗室發起 GNU 計劃,希望發展出一套完整的開放源代碼操作系統來取代 UNIX,計劃中的操作系統,名為 GNU。

1983年9月27日,理查·斯托曼在 net.UNIX-wizards 和 net.usoft 新聞組中公佈這項計劃。在此項計劃中,開發出了很多我們現在熟悉的常用的工具,包括GNU編譯器套裝(GCC)、GNU的C庫(glibc)、以及 GNU 核心工具組(coreutils)。另外也是 GNU 除錯器(GDB)、GNU 二進制實用程序(binutils)的 GNU Cash shell中 和 GNOME 桌面環境。

當然,GNU計劃的目的還是開發出一款自由傳播的操作系統,這個操作系統的名字叫 Hurd,但是由於對操作系統的要求過高,以至於 Hurd 一直處於測試階段,本意是一個好事情,但是能力有限啊,開發的東西老是出bug,再好的創意那也是徒勞了。

不過 Linus 大神通過 GNU 發佈了自己的 Linux 系統後,就火起來了,真的就一發不可收拾,這也是為什麼 GNU 和 Linux 關係密切的原因。

1.5 UNIX 衍生系統發展圖

用文字來描述事實總是感覺有點欠缺,就好像兩個人發生爭執,可以通過吵嘴解決問題,也可以通過大家解決問題,但是我認為打架應該是最直接的,你說得再多也沒有槍桿子來得實在。

本書的重心主要放在 Linux 上,可以觀察 Linux 的發展軌跡,還是非常給力的,當然了,BSD 目前來說市場佔有率不能跟 Linux 相提並論,但是他在整個 UNIX 上也有有著自己的一席之地的。

詳細告訴你:Linux是怎麼來的?

1.6 Linux的導火索MINIX

詳細告訴你:Linux是怎麼來的?

MINIX啟動界面

在 UNIX 產生後,版權在 AT&T 手裡,在 Version 7 UNIX 發佈之後,發佈新的授權條款,將UNIX 源碼私有化,在大學不得再使用 UNIX 源碼,荷蘭阿姆斯特丹自由大學計算機科學系的塔能鮑姆教授(Andrew Stuart "Andy" Tanenbaum)為了教學,自己寫了一個類 UNIX 的小系統,命名為 MINIX(意為mini-UNIX)。

詳細告訴你:Linux是怎麼來的?

永遠不要小看任何一個人,如果這個人能夠編寫出自己的教學操作系統,你更加不要隨便惹他,你可能不可以,但是下面的這個傢伙是可以的,大家可能都不知道什麼是“宏內核”和“微內核”,但是這個傢伙和 Linus 的辯論轟動一時,不管怎麼說,Linux 應該是現在的勝利者,最直接的原因是開源,讓更多的開發者可以使用 Linux 內核移植到自己的設備上,包括 ARM 設備。

但是我們也不能抹殺 ast 的作用,在計算機系統的貢獻上,和教學的貢獻上,肯定是具有一席之地的,作為本文的撰寫者,他們都是我們的始祖,技術無國界,請收下我的膝蓋。

1.7 Linux 的出生

詳細告訴你:Linux是怎麼來的?

林納斯 託瓦茲(Linus Torvalds)

我們的主角人物,林納斯 託瓦茲(Linus Torvalds)1991年,林納斯·託瓦茲在赫爾辛基大學上學時,對操作系統很好奇。由於但是 386BSD 還沒有出來。可是他不喜歡他的 386 電腦上的 MS-DOS 操作系統,所以就安裝了 Minix,可對 Minix 只允許在教育上使用很不滿(在當時 Minix 不允許被用作任何商業使用),於是他便開始寫他自己的操作系統。

Linux 的第一個版本在 1991 年 9 月被大學 FTP server 管理員 Ari Lemmke 發佈在 Internet上,最初 Torvalds 稱這個內核的名稱為 「Freax」,意思是自由「free」和奇異「freak」的結合字,並且附上「X」這個常用的字母,以配合所謂的類 UNIX 的系統。但是 FTP 服務器管理員嫌原來的命名「Freax」的名稱不好聽,把內核的稱呼改成「Linux」,當時僅有 10000 行代碼,仍必須運行於Minix操作系統之上,而且必須使用硬盤開機,隨後在10月份第二個版本(0.02版)發佈,同時這位芬蘭赫爾辛基的大學生在 comp.os.minix 上發佈這樣一則公告

Hello everybody out there using minix- I'm doing a (free) operation system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.

1994 年 3 月,Linux1.0 版正式發佈。為了讓 Linux 可以在商業上使用,林納斯·託瓦茲決定更改他原來的協議(這個協議會限制商業使用),以 GNU GPL 協議來代替。之後許多開發者致力融合 GNU 元素到 Linux 中,做出一個有完整功能的、自由的操作系統。

詳細告訴你:Linux是怎麼來的?

80386 的芯片

詳細告訴你:Linux是怎麼來的?

80386的電腦

如果單憑林納斯一個人的力量,Linux 不可能發展到這個程度,我認為在那個時候,他做了一個非常正確的決定,就是「開源」,讓世界上更多的優秀程序員加入到他的事業當中,為了讓更多的人同步開發,林納斯還寫了 GIT ,這個讓很多協作開發者為之興奮的工具。

1.8 Linux的標誌物

詳細告訴你:Linux是怎麼來的?

Linux 的標誌和吉祥物是一隻名字叫做 Tux 的企鵝,標誌的由來是因為 Linus 在澳洲時曾被一隻動物園裡的企鵝咬了一口,便選擇企鵝作為 Linux的標誌。更容易被接受的說法是:企鵝代表南極,而南極又是全世界所共有的一塊陸地。這也就代表 Linux 是所有人的 Linux。

曾經有一個笑話說林納斯被企鵝咬了之後,因為咬過的傷口會發炎,發炎的時候傷口會有點疼,晚上寫代碼想打瞌睡,但是就是因為這個炎症的疼痛感刺激著自己,當然了,這個只是個傳說,傳說是否是真的,哪天大神心情好了可能會揭曉答案。

詳細告訴你:Linux是怎麼來的?

1.9 Linux的現狀

今天在 Linus Torvalds 帶領下,眾多開發共同參與開發和維護 Linux 內核。理查德·斯托曼領導的自由軟件基金會,繼續提供大量支持 Linux 內核的 GNU 組件。一些個人和企業開發的第三方的非 GNU 組件也提供對 Linux 內核的支持,這些第三方組件包括大量的作品,有內核模塊和用戶應用程序和庫等內容。Linux 社區或企業都推出一些重要的 Linux發行版,包括 Linux內核、GNU組件、非GNU組件,以及其他形式的的軟件包管理系統軟件。

目前這個階段,可以說每個人都脫離不開 Linux,好吧,肯定有人跑出來抬槓,我就問你,你手機底層是 Linux 內核你可知道,你說你用的是塞班手機,那裡購物的雲平臺,淘寶,亞馬遜等都是用 Linux 開發維護的,好吧你說你是個老闆,買東西都是別人給你買的,那麼你炒股吧,很多股票平臺都是基於 Linux 開發維護的。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

1.10 為什麼學習Linux

Linux 內核現在覆蓋的領域非常廣,手機、平板、路由器等等,就大家非常喜歡的蘋果操作系統,底層內核也是有 Linux的影子,Linux 的普及毋庸置疑,學習 Linux 應該作為每個技術人員的標配。

剛開始參加工作的時候,很多面試官都問我,你對 Linux 是不是非常懂,我每次都回答,我對 Linux 也是剛剛入門,但是我非常喜歡Linux ,而且我也會持續在 Linux 上面做研究,學習,我也喜歡和這些 Linux 愛好者一起探討問題。

學習完 Linux 內核你會對整個計算機體系有一個更深刻的認知,作為一個開發者,不管你從事的是驅動開發,應用開發,還是後臺開發,你都需要理解計算機操作系統和內核的運行機制,才可能更好的編寫你的代碼,出現更少的錯誤。

作為開發人員,不應該只侷限在自己的小領域,因為你設計的模塊,看起來非常小,但是你不瞭解進程的調用機制,不知道進程會阻塞,就緒,執行幾個狀態,你怎麼可能編寫好一個低容錯率的代碼呢?

"

1.1 先說下

Linux 內核非常龐大,我說的非常大並不是為了嚇唬大家,確實是非常多的代碼,超過 600 萬行的代碼,所以我寫文章介紹 Linux 內核,也不可能每一行代碼去分析,但是我會提煉其中的重點出來,告訴大家,Linux 內核的構成,包含哪些東西,我們不管學習什麼,最關鍵的是學會其中的思想,但是我們如果什麼都還不會的時候,可以學著由表透裡,就像我打籃球一直不會後仰跳投,但是我可以把科比的研究一遍又一遍,總有一天我也能聽到自己打鐵的哐哐聲。

但是我希望我的文字略帶微笑著去面對這些代碼,去面對 Linux 森林,然後你從這個森林走出來後,可以明白森林裡的有哪些路,你下一次想帶個妹子進去約會,可以找到屬於自己的旮旯。

雖然 Linux 內核非常龐大,但是橫向對比計算機的發展史, Linux 的歷史非常的簡短,計算機出現的時候,還沒有什麼花裡胡哨的包裝,都是光著身子跑,用技術的語言說就是它只能執行一個任務,執行一個進程,也可以叫“裸跑”,學習計算機的同學應該很快明白什麼是裸機程序,裸機程序只可以讓一個進程使用硬件資源,這無形上對硬件資源的浪費。

可以拿我們的手機來比喻,裸機的話,我們玩王者榮耀的時候,有人打電話進來的話,王者榮耀是要被終止的,後來就有了操作系統,操作系統可以保證多任務執行,同樣的 CPU 芯片,有了操作系統,我可以開微信,QQ ,還同時做其他很多事情。

所以就出來了很多操作系統,操作系統我認為可以分為實時操作系統和通用操作系統,實時操作(RTOS 全稱Real Time Operating System)系統可以理解為對時間要求非常苛刻,可以用一個詞“必須”來理解,就是在某個時間片之內必須要做某件事情。

而通用操作系統,我們可以很常見,比如電腦 windows,Android 手機等,Linux 也可以認識是通用 OS,因為他們對時間上要求不是很嚴苛。

Linux 可以通過配置某個宏定義變成實時操作系統,但是我們使用 Linux 主要是針對他的通用 OS,多用戶,多任務等特別突出的性能。

世界上的嵌入式操作系統數不勝數,我有一個很厲害的師弟,前幾年也參與了一個國內嵌入式操作系統的開發,當然了,他們是以盈利為目的了,還有我認識的周立功先生,他們公司也研發了一個嵌入式操作系統,但是對於我們開發者來說,做項目的時候,選擇適合自己項目的系統就好了,對於學習來說,我認為,應該學習最先進的操作系統,這樣才能讓自己的技術有更大的先進性。

VxWorks

VxWorks 是美國 WindRiver 公司的產品,市場佔有率比較高的嵌入式操作系統。VxWorks 實時操作系統由 400 多個相對獨立、短小精悍的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,具有優先級的任務調度、任務間同步與通信、中斷處理、定時器和內存管理等功能,符合 POSIX (可移植操作系統接口)規範的內存管理,多處理器控制程序,並且具有簡明易懂的用戶接口,在核心方面甚至町以微縮到 8 KB。

這個操作系統不敢吹太多,可以自己去了解下,因為穩定性太好了,應用到了航空,衛星,軍事等各個領域,實用性非常強,所以很多培訓機構也針對這個操作系統開了培訓課程。

μC/OS-II

μC/OS-II是在μC-OS的基礎上發展起來的,是美國嵌入式系統專家 Jean J.Labrosse 用 C 語言編寫的一個結構小巧、支持搶佔式的多任務實時內核。μC/OS-II 能管理 64 個任務,並提供任務調度與管理、內存管理、任務間同步與通信、時間管理和中斷服務等功能,具有執行效率高、佔用空間小、實時性能優良和可擴展性強等特點。

μClinux

μClinux 是一種優秀的嵌入式 Linux 版本,其全稱為 micro-control Linux,從字面意思看是指微控制 Linux。同標準的 Linux 相比,μClinux 的內核非常小,但是它仍然繼承了 Linux 操作系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的 API,以及 TCP/IP 網絡協議等。因為沒有 MMU 內存管理單元,所以其多任務的實現需要一定技巧。

eCos

eCos(embedded Configurable operating system),即嵌入式可配置操作系統。它是一個源代碼開放的可配置、可移植、面向深度嵌入式應用的實時操作系統。最大特點是配置靈活,採用模塊化設計,核心部分由小同的組件構成,包括內核、C 語言庫和底層運行包等。每個組件可提供大量的配置選項(實時內核也可作為可選配置),使用 eCos 提供的配置工具可以很方便地配置,並通過不同的配置使得 eCos 能夠滿足不同的嵌入式應用要求。

詳細告訴你:Linux是怎麼來的?


詳細告訴你:Linux是怎麼來的?

內核的工作

我們使用的計算機大家都知道是操作系統,那內核是什麼呢?那我們先簡單說說操作系統,操作系統是面向用戶的,計算機用戶可以使用計算機操作系統來工作,聊天,玩遊戲,我們使用的這些東西都是應用軟件,對應用程序來說,內核就是它的操作系統,這個系統可以為應用程序工作,管理應用程序。

內核還有一個比較重要的工作,就是管理應用,為應用程序準備好運行內存,管理應用程序的執行,讓應用程序通行無阻,當然了,這個是理想的情況,不理想的情況就是導致內存或者資源不夠用的情況,應用出現崩潰等異常。

除了管理應用以外,內核還需要管理硬件設備,Linux 內核下面有非常多的設備驅動代碼,如果一個內核開發工程師說他不懂設備驅動,那簡直就是一個笑話,內核跟 CPU 和硬件設備關係非常密切,在整個操作系統中的地位,具有承上啟下的作用。

1.2 UNIX 的誕生

生日:UNIX 在 1969 年出生。

他的父親和母親:是 Dennis Ritchie 和 Ken Thompson 兩個人擦出了靈感的火花創造出來的。

出生戶籍地址:貝爾實驗室

詳細告訴你:Linux是怎麼來的?

貝爾實驗室圖片

詳細告訴你:Linux是怎麼來的?

貝爾實驗室的logo

出生具體流程:

1965 年,貝爾實驗室要做一個項目,這個項目叫PDP-7計算機計劃,發起人是通用電氣和麻省理工學院,他們給這個操作系統起了一個漂亮的名字叫做「MULTICS 操作系統」("Multiplexed Information and Computing Service"的縮寫)。做事情總是有個計劃,他們給這個操作系統給出的計劃是,這個操作系統可以多個人使用,按照我們現在的人來說就是多用戶系統,多任務,多層次等等。

到了1969 年,發起人覺得這個進度太慢了,本來想早點製造出來我們好用來玩電腦遊戲的,結果你們這幾個科學家整了這麼久還是沒整出來,那隻好停掉了,停掉了投資方就不再提供後備的資源了,留下的東西就自己瞎整吧,投資方也不管了。

計劃被停下來了,當時,Ken Thompson 在調試一個程序,這個程序名字叫做 “星級旅遊”,這個程序運行在一個叫做 GE-635 的機器上面,但是因為這個機器的硬件設備比較落後,運行速度非常慢,這讓Ken Thompson感覺非常不爽,然後他發現之前做「PDP-7計算機計劃」項目的時候還有一臺PDP-7計算機,這個計算機就是圖片下面的那個計算機,當時應該沒有人想到計算機可以做到這麼小,然後他們就把 GE-635 程序移植到 PDP-7 計算機上面。

到了1970年,PDP-7 可以運行 GE-635程序了,但是卻只能支持兩個用戶,當時 Brian Kernighan 就開玩笑的稱他們的系統是 “UNiplexed Information and Computing Service”,這個縮寫就是 UNICS,再後來,大家就取諧音,稱為 UNIX。所以1970 年可以稱為 UNIX元年。

詳細告訴你:Linux是怎麼來的?

湯姆遜和丹尼斯里奇

詳細告訴你:Linux是怎麼來的?

PDP-7計算機

1.3 BSD操作系統

伯克利軟件套件(英語:Berkeley Software Distribution,縮寫為 BSD ),也被稱為伯克利UNIX(Berkeley UNIX),是一個操作系統的名稱。衍生於UNIX(類UNIX),1970年代由伯克利加州大學的學生比爾·喬伊(Bill Joy)開創,也被用來代表其衍生出的各種套件。

BSD 常被當作工作站級別的 UNIX 系統,這得歸功於 BSD 用戶許可證非常地寬鬆,許多 1980 年代成立的計算機公司,不少都從 BSD 中獲益,比較著名的例子如 DEC 的 Ultrix,以及 Sun 公司的 SunOS。1990 年代,BSD 很大程度上被 System V 4.x 版以及 OSF/1 系統所取代,但其開源版本被採用,促進了因特網的開發。

BSD 比 Linux 早出現,穩定性和安全性都在 Linux 之上,甚至 Windows 和 OS X 都有來自 BSD 的代碼,但是現在一提到開源自由軟件,人們首先想到的是Linux,而不是資格更老的BSD。

UNIX創始人之一的 Ken Thompson 曾如此評價 Linux,「Linux不過是反微軟思潮下的產物」,這個傢伙覺得 Linux 不可能有多大的成就,非常自信的覺得 BSD 在任何時候都可以擊敗 Linux,甚至覺得Linux 是一個低端和下流的操作系統內核。

但是事實證明,Linux 贏得了這場戰爭,有實力,也有些運氣,Linux 在發展的時候,BSD 當時正被官司纏上,沒有多餘的心思應戰 Linux,而BSD腹背受敵的原因很明顯是因為他們的商業化,而Linux正是因為開源而更受全世界開發者的青睞。

一個事情的成功,90% 是由他的領導者決定的,就好像一個球隊能走多遠,隊長和教練可以決定它的深度,Linux 也一樣,Linus Torvalds 是位傑出的領袖人物,他成功的讓一群性格迥異的、絕非泛泛之輩的黑客共同合作開發,而沒有如其他開源項目一般分崩離棄。

還有一點,Linux 的硬件支持比 BSD 好,這在各種終端設備上來說簡直就是一種驚喜,隨著PC不斷被邊緣化,移動端的產品急需找到一款適合他們的操作系統,Linux 是最好不過的人選了。

GNU 的大力支持,GNU 的許可證與 BSD 不兼容,因此 Linux 的出現讓兩者完美結合,所以現在Linux 全名叫 GNU/Linux。

BSD 走的是教堂式的學院派路線,而 Linux 則是代表了市集式的駭客精神,BSD很自信,覺得自己是貴族出生,應該享受這世界上的榮華富貴,而Linux再一次驗證了農村包圍城市的必然性,成王敗寇,功敗垂成。

BSD原本就有極佳的根基,缺乏的可能是一點運氣,未來或許大有可為。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

(點擊查看大圖)

1.4 GNU計劃的產生

詳細告訴你:Linux是怎麼來的?

理查·斯托曼

因為 UNIX 操作系統的商業化,原來的 UNXI 系統已經不能再被隨意的使用,很多人都希望能有一款免費好用的操作系統,因為並不是每個人都很有錢,也不是每個人都有能力自己去寫操作系統,此時,理查·斯托曼在麻省理工學院人工智能實驗室發起 GNU 計劃,希望發展出一套完整的開放源代碼操作系統來取代 UNIX,計劃中的操作系統,名為 GNU。

1983年9月27日,理查·斯托曼在 net.UNIX-wizards 和 net.usoft 新聞組中公佈這項計劃。在此項計劃中,開發出了很多我們現在熟悉的常用的工具,包括GNU編譯器套裝(GCC)、GNU的C庫(glibc)、以及 GNU 核心工具組(coreutils)。另外也是 GNU 除錯器(GDB)、GNU 二進制實用程序(binutils)的 GNU Cash shell中 和 GNOME 桌面環境。

當然,GNU計劃的目的還是開發出一款自由傳播的操作系統,這個操作系統的名字叫 Hurd,但是由於對操作系統的要求過高,以至於 Hurd 一直處於測試階段,本意是一個好事情,但是能力有限啊,開發的東西老是出bug,再好的創意那也是徒勞了。

不過 Linus 大神通過 GNU 發佈了自己的 Linux 系統後,就火起來了,真的就一發不可收拾,這也是為什麼 GNU 和 Linux 關係密切的原因。

1.5 UNIX 衍生系統發展圖

用文字來描述事實總是感覺有點欠缺,就好像兩個人發生爭執,可以通過吵嘴解決問題,也可以通過大家解決問題,但是我認為打架應該是最直接的,你說得再多也沒有槍桿子來得實在。

本書的重心主要放在 Linux 上,可以觀察 Linux 的發展軌跡,還是非常給力的,當然了,BSD 目前來說市場佔有率不能跟 Linux 相提並論,但是他在整個 UNIX 上也有有著自己的一席之地的。

詳細告訴你:Linux是怎麼來的?

1.6 Linux的導火索MINIX

詳細告訴你:Linux是怎麼來的?

MINIX啟動界面

在 UNIX 產生後,版權在 AT&T 手裡,在 Version 7 UNIX 發佈之後,發佈新的授權條款,將UNIX 源碼私有化,在大學不得再使用 UNIX 源碼,荷蘭阿姆斯特丹自由大學計算機科學系的塔能鮑姆教授(Andrew Stuart "Andy" Tanenbaum)為了教學,自己寫了一個類 UNIX 的小系統,命名為 MINIX(意為mini-UNIX)。

詳細告訴你:Linux是怎麼來的?

永遠不要小看任何一個人,如果這個人能夠編寫出自己的教學操作系統,你更加不要隨便惹他,你可能不可以,但是下面的這個傢伙是可以的,大家可能都不知道什麼是“宏內核”和“微內核”,但是這個傢伙和 Linus 的辯論轟動一時,不管怎麼說,Linux 應該是現在的勝利者,最直接的原因是開源,讓更多的開發者可以使用 Linux 內核移植到自己的設備上,包括 ARM 設備。

但是我們也不能抹殺 ast 的作用,在計算機系統的貢獻上,和教學的貢獻上,肯定是具有一席之地的,作為本文的撰寫者,他們都是我們的始祖,技術無國界,請收下我的膝蓋。

1.7 Linux 的出生

詳細告訴你:Linux是怎麼來的?

林納斯 託瓦茲(Linus Torvalds)

我們的主角人物,林納斯 託瓦茲(Linus Torvalds)1991年,林納斯·託瓦茲在赫爾辛基大學上學時,對操作系統很好奇。由於但是 386BSD 還沒有出來。可是他不喜歡他的 386 電腦上的 MS-DOS 操作系統,所以就安裝了 Minix,可對 Minix 只允許在教育上使用很不滿(在當時 Minix 不允許被用作任何商業使用),於是他便開始寫他自己的操作系統。

Linux 的第一個版本在 1991 年 9 月被大學 FTP server 管理員 Ari Lemmke 發佈在 Internet上,最初 Torvalds 稱這個內核的名稱為 「Freax」,意思是自由「free」和奇異「freak」的結合字,並且附上「X」這個常用的字母,以配合所謂的類 UNIX 的系統。但是 FTP 服務器管理員嫌原來的命名「Freax」的名稱不好聽,把內核的稱呼改成「Linux」,當時僅有 10000 行代碼,仍必須運行於Minix操作系統之上,而且必須使用硬盤開機,隨後在10月份第二個版本(0.02版)發佈,同時這位芬蘭赫爾辛基的大學生在 comp.os.minix 上發佈這樣一則公告

Hello everybody out there using minix- I'm doing a (free) operation system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.

1994 年 3 月,Linux1.0 版正式發佈。為了讓 Linux 可以在商業上使用,林納斯·託瓦茲決定更改他原來的協議(這個協議會限制商業使用),以 GNU GPL 協議來代替。之後許多開發者致力融合 GNU 元素到 Linux 中,做出一個有完整功能的、自由的操作系統。

詳細告訴你:Linux是怎麼來的?

80386 的芯片

詳細告訴你:Linux是怎麼來的?

80386的電腦

如果單憑林納斯一個人的力量,Linux 不可能發展到這個程度,我認為在那個時候,他做了一個非常正確的決定,就是「開源」,讓世界上更多的優秀程序員加入到他的事業當中,為了讓更多的人同步開發,林納斯還寫了 GIT ,這個讓很多協作開發者為之興奮的工具。

1.8 Linux的標誌物

詳細告訴你:Linux是怎麼來的?

Linux 的標誌和吉祥物是一隻名字叫做 Tux 的企鵝,標誌的由來是因為 Linus 在澳洲時曾被一隻動物園裡的企鵝咬了一口,便選擇企鵝作為 Linux的標誌。更容易被接受的說法是:企鵝代表南極,而南極又是全世界所共有的一塊陸地。這也就代表 Linux 是所有人的 Linux。

曾經有一個笑話說林納斯被企鵝咬了之後,因為咬過的傷口會發炎,發炎的時候傷口會有點疼,晚上寫代碼想打瞌睡,但是就是因為這個炎症的疼痛感刺激著自己,當然了,這個只是個傳說,傳說是否是真的,哪天大神心情好了可能會揭曉答案。

詳細告訴你:Linux是怎麼來的?

1.9 Linux的現狀

今天在 Linus Torvalds 帶領下,眾多開發共同參與開發和維護 Linux 內核。理查德·斯托曼領導的自由軟件基金會,繼續提供大量支持 Linux 內核的 GNU 組件。一些個人和企業開發的第三方的非 GNU 組件也提供對 Linux 內核的支持,這些第三方組件包括大量的作品,有內核模塊和用戶應用程序和庫等內容。Linux 社區或企業都推出一些重要的 Linux發行版,包括 Linux內核、GNU組件、非GNU組件,以及其他形式的的軟件包管理系統軟件。

目前這個階段,可以說每個人都脫離不開 Linux,好吧,肯定有人跑出來抬槓,我就問你,你手機底層是 Linux 內核你可知道,你說你用的是塞班手機,那裡購物的雲平臺,淘寶,亞馬遜等都是用 Linux 開發維護的,好吧你說你是個老闆,買東西都是別人給你買的,那麼你炒股吧,很多股票平臺都是基於 Linux 開發維護的。

詳細告訴你:Linux是怎麼來的?

詳細告訴你:Linux是怎麼來的?

1.10 為什麼學習Linux

Linux 內核現在覆蓋的領域非常廣,手機、平板、路由器等等,就大家非常喜歡的蘋果操作系統,底層內核也是有 Linux的影子,Linux 的普及毋庸置疑,學習 Linux 應該作為每個技術人員的標配。

剛開始參加工作的時候,很多面試官都問我,你對 Linux 是不是非常懂,我每次都回答,我對 Linux 也是剛剛入門,但是我非常喜歡Linux ,而且我也會持續在 Linux 上面做研究,學習,我也喜歡和這些 Linux 愛好者一起探討問題。

學習完 Linux 內核你會對整個計算機體系有一個更深刻的認知,作為一個開發者,不管你從事的是驅動開發,應用開發,還是後臺開發,你都需要理解計算機操作系統和內核的運行機制,才可能更好的編寫你的代碼,出現更少的錯誤。

作為開發人員,不應該只侷限在自己的小領域,因為你設計的模塊,看起來非常小,但是你不瞭解進程的調用機制,不知道進程會阻塞,就緒,執行幾個狀態,你怎麼可能編寫好一個低容錯率的代碼呢?

詳細告訴你:Linux是怎麼來的?

關注微信公眾號:安徽思恆信息科技有限公司,瞭解更多技術內容……

"

相關推薦

推薦中...