0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux的源頭 從一個故事說起

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 作者:黃工的嵌入式技術 ? 2020-01-13 16:38 ? 次閱讀

一、Multics計劃

上個世紀六十年代,那個計算機還沒有很普及,只有少數(shù)人才能使用,而且當時的計算機系統(tǒng)都是批處理的,就是把一批任務一次性提交給計算機,然后就等待結果。并且中途不能和計算機交互。往往準備作業(yè)都需要花費很長時間,并且這個時候別人也不能用,導致了計算機資源的浪費。

為了改變這種情況,在1965年前后,貝爾實驗室(Bell)、麻省理工學院(MIT)以及通用電氣(GE)聯(lián)合起來準備研發(fā)一個分時多任務處理系統(tǒng),簡單來說就是實現(xiàn)多人同時使用計算機的夢想,并把計算機取名為Multics(多路信息計算系統(tǒng)),但是由于項目太復雜,加上其他原因導致了項目進展緩慢,1969年貝爾實驗室覺得這個項目可能不會成功,于是就退出不玩了。

二、Unix的誕生

Bell退出Multics計劃之后,Bell實驗室的那批科學家就沒有什么事做了,其中一個叫做Ken Thompson的人在研發(fā)Multics的時候,寫了一個叫做太空大戰(zhàn)(Space Travel)的游戲,大概就是一個很簡單的打飛機的游戲,但是這個游戲運行在Multics上。當Bell退出了Multics后,Thompson就沒有了Multics的使用環(huán)境了,為了能夠繼續(xù)游戲,于是他花了一個月的時間寫了一個小型的操作系統(tǒng),用于運行Space Travel,當完成之后,Thompson懷著激動的心情把身邊同事叫過來,讓他們來玩他的游戲,大家玩過之后紛紛表示對他的游戲不感興趣,但是對他的系統(tǒng)很感興趣。

因為MULTICS是“Multiplexed informtion and Computing Service”的縮寫(多路信息計算系統(tǒng)),于是他們命名這個系統(tǒng)為:“UNiplexed Information and Computing Service”,縮寫為“UNICS”(每路信息計算系統(tǒng),與Multics相反)。后來大家取其諧音,就稱其為“UNIX”了。

這個時候已經(jīng)是1970年了,于是就將1970年定為Unix元年,因此計算機上的時間就是從這一年開始計算的。

后來Unix這個小操作系統(tǒng)就在Bell實驗室內部流行開,并經(jīng)過不斷地改良最終在1974年7月Unix發(fā)展到第5個版本,Bell實驗室公開了Unix,結果引起了學術界的廣泛興趣并對其源碼索取。所以,Unix第五個版本就以“僅用于教育目的”的協(xié)議,提供給各大學作為教學之用,成為當時操作系統(tǒng)課程的范例教材。各大學公司開始通過Unix源碼對Unix進行了各種各樣的改進和拓展。1978年學術界的老大伯克利大學,推出了一份以第六版為基礎,加上一些改進和新功能而成的Unix。并命名為BSD(Berkeley Software Distribution伯克利分發(fā)版),開創(chuàng)了Unix的另一分支:BSD系列。

于是乎Unix就有了兩個分支,一個就是BSD系列的分支,一個就是Bell本身發(fā)放的分支,當時因為Bell屬于AT&T,AT&T受到了美國《謝爾曼反托拉斯法》的影響,不能銷售除了電話機電報機等之外的商品,后來AT&T分解,Bell可以賣Unix了,Unix走向了商業(yè)化,如果想繼續(xù)使用就需要購買授權,一份授權4萬美元。

三、Minix及Linux的誕生

在Unix昂貴的授權費用下,很多大學不得不停止對其研究,老師導致上課也不知道講什么了。在1987年荷蘭有個大學教授安德魯寫了一個Minix,類似于Unix,專用于教學。當Minix流傳開來之后,世界各地的黑客們紛紛開始使用并改進,希望把改進的東西合并到Minix中,但是安德魯覺得他的系統(tǒng)是用于教學的,不能破壞純凈性,于是拒絕了。

在1991年9y月17日,Linus Torvalds(林納斯.托瓦茲)在互聯(lián)網(wǎng)上公布了自己寫的Linux,可能是表達對安德魯?shù)牟粷M吧(為什么不接受大家的好意呢?你讓大家的滿腔熱情往哪放呢?),于是Linus發(fā)布了一個帖子,大概就是說:我寫了一個操作系統(tǒng)的內核,但是還不夠完善,你們以任何姿勢使用不收費,也可以幫助我一起修改。帖子發(fā)出后引起了強烈的反響。在大家的努力下,于1994年Linux的1.0版本正式發(fā)布。

為什么會引起這么強烈的反應呢?這就要從了另一個人說起,那就是Richard Stallman(自由軟件之父)。Stallman是一個非常“激進”的人,因為Unix商業(yè)化的影響,他認為軟件是全人類的智慧結晶,不應該為某一家公司服務。在八十年代,他發(fā)起了自由軟件運動,吹起了共產主義的號角(發(fā)起了GNU運動),并發(fā)布了軟件界的共產主義宣言(GPL協(xié)議),并且這一運動得到了很多人的認同。

所謂***自由軟件自由就是指:自由使用、自由學習和修改、自由分發(fā)、自由創(chuàng)建衍生版。

GNU的定義是一個遞歸縮寫,就是GNU IS NOT UNIX。就是說Unix是流氓,我不是。有意思的是,GNU運動是上個世紀八十年代開始的,而那個時候Linux還沒有誕生呢 ,所以Stallman寶寶心里苦啊,就在大家逐漸失去信心的時候,1991年Linus Torvalds帶著他的Linux閃亮登場了,給GNU運動畫了一個完美的句號。

Linux為什么會引起如此強烈的反響呢?因為Unix有版權,愛好編程的狂熱分子在研究Unix的時候很容易吃上官司 ,而Linux是遵循GPL協(xié)議的,可以免費使用,讓黑客們盡情的施展(這里的黑客指那些技術大牛,不是指那些利用計算機干壞事的人)。于是Linux提供內核(kernel),GNU提供外圍軟件,就這樣GNU/Linux誕生了。

從Unix到Linux的發(fā)展關系:

所以,看到這里你就會了解到Unix是1970年出現(xiàn)的,Linux是1991年發(fā)布的,但Linux是不同于Unix的操作系統(tǒng)。

四、操作系統(tǒng)的基本概念

上面主要介紹了Linux以及Unix的一些歷史故事,下面則介紹操作系統(tǒng)方面的知識。在進入正題之前,我們先簡單了解一下操作系統(tǒng)。

我們都知道,CPU是由運算器和控制器組成的,程序在運行的時候就是調用CPU的指令進行一些運算操作,例如加減乘除。CPU能夠調用的指令集合,就是指令集。但是不幸的是CPU的生產廠家不止一家,例如IntelAMD等。即便是同一家廠商生產CPU,不同平臺之間的指令集也不一樣。那么程序員在編寫程序的時候會遇到一個尷尬的局面,就是當你在某一個平臺編碼的時候,如果想將程序移到另外一個平臺上,就需要重新編碼,重新編碼還不是最可怕的,可怕的是你得學習對應的新平臺的指令集。

一般而言,我們稱直接在硬件層面上進行編程是硬件規(guī)格層的編程(hardware spaceifiacation),例如調用CPU提供的指令等。你需要知道的是,不同硬件提供的API是個不相同的。如果程序員要編程還得精通硬件那得多難,所以我們需要一個通用軟件來提供統(tǒng)一接口,以屏蔽硬件的差異化。這個通用軟件就是操作系統(tǒng)。

操作系統(tǒng)將底層硬件提供的接口進行封裝,程序員直接調用由操作系統(tǒng)提供的接口,也稱為系統(tǒng)調用。

但是系統(tǒng)封裝的接口會很多嗎?顯然不會很多,因為如果操作系統(tǒng)提過

幾萬個接口,程序員還不累的學出血。一般而言,系統(tǒng)提供的接口都是短小精悍,我們需要像搭積木一樣,將其組裝起來提供更為豐富的功能,并且將組裝好的代碼做成庫,供別人使用。這樣一來,就是庫調用。在Windows上庫一般都是dll(Dynamic Link Library),而在Linux或者Unix上我們一般稱之為so(shared object),就是共享的代碼,大家都可以調用。

現(xiàn)在我們知道了,操作系統(tǒng)的一個重要功能就是將硬件提供的功能進行封裝,我們調用操作系統(tǒng)提供的接口就是系統(tǒng)調用(system call)。然后將系統(tǒng)提供的接口組合后形成更豐富的庫。當然操作系統(tǒng)還有其他的功能,例如CPU的時間分片、安全保證等。

五、Linux的發(fā)行版本

我們知道Linux或者Unix是一個操作系統(tǒng),1991年的Linus Torvalds公布的是Linux的內核(kernel)。但是要注意的是,公布的是源碼,并不是編譯好的直接可安裝的操作系統(tǒng),我們如何安裝一個操作系統(tǒng)呢?很簡單啊,就是先下載一份源碼,然后進行編譯安裝,但是編譯的時候程序需要運行在操作系統(tǒng)上啊,操作系統(tǒng)呢?還沒有編譯呢。于是就陷入了一個死循環(huán)中,就是我們要安裝操作系統(tǒng),就需要編譯,編譯的時候需要操作系統(tǒng),這樣就是雞生蛋,蛋生雞。

這里就需要引入交叉編譯了,具體做法:假設我們要在電腦上安裝Linux,我們把A的硬盤拆下來,放到已經(jīng)安裝了操作系統(tǒng)的電腦B上,然后編譯,將編譯好的操作系統(tǒng)放到硬盤上,再把硬盤裝回去,開機啟動,這就是交叉編譯安裝系統(tǒng)。

這得有多難啊,入門難度實在太高了,所以我們迫切需要一種簡單的方式來安裝。于是就出現(xiàn)了這么一種公司,他們將已經(jīng)公開好的Kernel(內核)再加上一些開源的周邊軟件收集起來編譯成二級制文件放到網(wǎng)上供別人使用,其中Red Hat(紅帽)就是其中著名的一家。我們知道Linux是遵循GPL協(xié)議的,也就是公開免費的,那么他們怎么盈利呢?既然不能賣軟件,那么就賣服務唄,比如說,發(fā)現(xiàn)了Linux漏洞,然后Red Hat修復,如果你買了我們的服務,我們就將補丁程序給你,并指導你安裝,所有問題都幫你解決。

世界上總是不缺好事者,RedHat既然可以這么做,為什么就不能有好心人免費做呢?是的,有這樣一個社區(qū),他們把RedHat的源碼拿過來,然后編譯成操作系統(tǒng)放出去,這就是CentOS,就是社區(qū)版的RedHat,所以基本RedHat的補丁包出來一個月之后,CentOS就出現(xiàn)對應的補丁包了。這對于Red Hat是好事還是壞事呢?這恐怕只有當事人知道了,不過在2014年年初傳來消息,RedHat收編了CentOS的團隊。就像MSDN I TELL YOU 上面都是微軟的正版軟件,可以隨便下載,但是這不也是為微軟做了免費宣傳嗎。

當別人說Linux的版本時,一般來說有兩個版本,一個是內核的版本,一個是發(fā)行的版本。例如登錄到終端執(zhí)行命令:

root@localhost:/home/Superman# uname -aLinux localhost.localdomain 4.6.0-040600-generic #201606100558 SMP Fri Jun 10 1015 UTC 2016 x86_64 x86_64 x86_64 GNU/Linuxroot@localhost:/home/Superman# more /etc/issueUbuntu 16.04.2 LTS l

從上面可以看出,uname -a 查看了內核的版本,是4.6.0的版本,而 more /etc/issue就是 查看發(fā)行版的版本,表示了我安裝的是Ubuntu的16.04.2的發(fā)行版。

內核更新的信息可以到官網(wǎng)查看:https://www.kernel.org/

六、Linux的哲學思想

A.一切皆文件,把幾乎所有的資源都組織成文件的格式,我們只需要一個文本編輯工具,就可以修改工作的特性了,很方便。

B.組合小程序,完成復雜任務,例如將系統(tǒng)調用組合形成庫(在Linux就是so結尾的文件)。

C.盡量避免和用戶交互,Windows上就是彈框,讓你點確定。在Linux上,如果執(zhí)行一個程序之后沒有任何提示,那就是最后的提示。

D.使用純文本文件保存配置信息,這個在第一點就可以看出來。

七、總結

這篇文章就是對Linux的發(fā)展歷史進行淺談,希望Linux可以為你帶來快樂。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關推薦

    我記錄的九逃亡故事

    的愛情故事在百公里行走和馬拉松的時候,也找到了勝利大逃亡的感覺。關于行走的回憶:磨房百公里、從湖南到湖北奪路求生:馬拉松跑者的自白天涯跑路——人生就是場馬拉松
    的頭像 發(fā)表于 10-21 14:17 ?88次閱讀

    EMC與EMI站式解決方案:從源頭解決,滿足您的需求

    深圳比創(chuàng)達|EMC與EMI站式解決方案:從源頭解決,滿足您的需求
    的頭像 發(fā)表于 06-28 10:21 ?383次閱讀
    EMC與EMI<b class='flag-5'>一</b>站式解決方案:從<b class='flag-5'>源頭</b>解決,滿足您的需求

    EMC與EMI站式解決方案:源頭到終端的全面防護

    深圳比創(chuàng)達電子|EMC與EMI站式解決方案:源頭到終端的全面防護
    的頭像 發(fā)表于 06-21 10:46 ?350次閱讀
    EMC與EMI<b class='flag-5'>一</b>站式解決方案:<b class='flag-5'>源頭</b>到終端的全面防護

    國產藍牙模組 | 藍牙主從一體功能應用

    隨著科技快速發(fā)展,藍牙技術在各個行業(yè)應用中變得非常廣泛。今天,我們來分享種非常熱門的主從一體藍牙模塊。我們將對它的模式、概念、應用、選購等進行探討,讓讀者深入了解這種藍牙模塊。藍牙的工作模式藍牙
    的頭像 發(fā)表于 06-21 08:25 ?382次閱讀
    國產藍牙模組 | 藍牙主<b class='flag-5'>從一</b>體功能應用

    隨機抽取SV數(shù)組中的元素方法實現(xiàn)

    如果想從一關聯(lián)數(shù)組中隨機選取元素,需要逐個訪問它之前的元素,原因是沒辦法能夠直接訪問到第N元素。上面的程序示范了如何
    的頭像 發(fā)表于 03-21 10:11 ?727次閱讀
    隨機抽取SV數(shù)組中的<b class='flag-5'>一</b><b class='flag-5'>個</b>元素方法實現(xiàn)

    《合宙的第一個10年》故事連載06:成功有秘訣嗎?還真有

    上文《逐字稿是很笨很笨的工具》講到:有了逐字稿,80%的會議都不用召開了。而我也卸任了救火隊員的崗位,如同開啟了另種人生。時間的腳步不緊不慢,故事繼續(xù)……1侯總的三次嘗試本章的故事主角,姓侯,也是
    的頭像 發(fā)表于 03-20 08:04 ?363次閱讀
    《合宙的第<b class='flag-5'>一個</b>10年》<b class='flag-5'>故事</b>連載06:成功有秘訣嗎?還真有

    《合宙的第一個10年》故事連載01:客戶破解了我的孤獨癥

    合宙是2014年開張的,今年是2024年,正好10年了。合宙的發(fā)展很慢,發(fā)展10年了,都還沒上市?!@10年來收獲的最寶貴的資產,是長期起奮斗的團隊成員,以及跟合宙起持續(xù)提升品質的合作伙伴。合
    的頭像 發(fā)表于 03-05 08:05 ?1092次閱讀
    《合宙的第<b class='flag-5'>一個</b>10年》<b class='flag-5'>故事</b>連載01:客戶破解了我的孤獨癥

    Jk觸發(fā)器的故事

    Jk觸發(fā)器的故事
    的頭像 發(fā)表于 02-23 04:32 ?987次閱讀

    工廠維修電機的小故事

    近日,名維修電工的帖子引起了廣大網(wǎng)友的熱議。這位電工講述了他在工廠維修電機的小故事,他本可以在3分鐘內解決故障,卻故意修了4小時。
    的頭像 發(fā)表于 02-20 12:33 ?534次閱讀

    linux和windows的區(qū)別 linux系統(tǒng)般用來干嘛

    Linux的設計理念 Linux開源操作系統(tǒng),其設計理念是自由、共享和開放。Linux系統(tǒng)遵循類Unix的設計原則,注重系統(tǒng)的穩(wěn)定性
    的頭像 發(fā)表于 02-05 14:06 ?808次閱讀

    BLE藍牙模塊主從一體功能應用場景詳解

    藍牙模塊支持多種工作模式,如主設備模式、從設備模式、主從一體化工作模式、廣播站模式、Mesh組網(wǎng)模式、廣播模式和iBeacon模式。在眾多工作模式中,主從一體工作模式是最常用的,也是目前較為流行
    的頭像 發(fā)表于 01-04 09:19 ?1147次閱讀
    BLE藍牙模塊主<b class='flag-5'>從一</b>體功能應用場景詳解

    如何從一簡單的數(shù)學表達式創(chuàng)建Saber模型?

    如何從一簡單的數(shù)學表達式創(chuàng)建Saber模型,將你的輸出描述為輸入的函數(shù)?例如 out=a*in*in+b (其中 a 和 b 是常數(shù))。
    的頭像 發(fā)表于 12-05 13:42 ?657次閱讀
    如何<b class='flag-5'>從一</b><b class='flag-5'>個</b>簡單的數(shù)學表達式創(chuàng)建<b class='flag-5'>一</b><b class='flag-5'>個</b>Saber模型?

    Linux內核UDP收包為什么效率低

    包效率真的很低,這是為什么?有沒有辦法去嘗試著優(yōu)化?而不是動不動就DPDK。 我們從最開始說起。 Linux內核作為通用操作系統(tǒng)內核,脫胎于UNIX那
    的頭像 發(fā)表于 11-13 10:38 ?422次閱讀
    <b class='flag-5'>Linux</b>內核UDP收包為什么效率低

    量子密鑰分發(fā):從一撲克牌魔術說起

    用兩信封里的“相互感應”的撲克牌作為密鑰,其實會有兩風險難以避免,是可能被第三方某個人偷看了,Alice和Bob也無法察覺,二是其中
    的頭像 發(fā)表于 11-12 10:12 ?681次閱讀
    量子密鑰分發(fā):<b class='flag-5'>從一</b><b class='flag-5'>個</b>撲克牌魔術<b class='flag-5'>說起</b>

    shell命令和linux命令樣嗎

    結合在起,形成相當于面向過程的程序,即shell script,從而實現(xiàn)些復雜的功能。 而Linux命令則是用來對
    的頭像 發(fā)表于 11-08 10:51 ?2621次閱讀