{eval=Array;=+count(Array);}
Linux誕生之初是林納斯花了兩月時(shí)間寫的勉強(qiáng)可以運(yùn)行且漏洞百出的Linux0.01版本,他寫Linux的初衷很簡(jiǎn)單,只想看看電腦硬件是如何協(xié)同運(yùn)行的,也就是說他想通過程序來玩硬件。文雅一點(diǎn)就是他想學(xué)習(xí)。
后來玩膩了,也覺得自己寫的東西沒多大卵用,所以就本著極客精神放到互聯(lián)網(wǎng)上給大家一起玩,還引入了開源協(xié)議。隨著玩這個(gè)小系統(tǒng)的人越來越多,大量高手都把自己的業(yè)余時(shí)間與構(gòu)思添加如Linux中,當(dāng)Linux頗具規(guī)模的時(shí)候被各方盯上想收入囊中,但此時(shí)的Linux已經(jīng)深陷開源泥潭,當(dāng)初的開源協(xié)議讓Linux根本無法為林納斯獲利。
當(dāng)Linux1.0版本出來時(shí)它的光芒足吸引了大量想得到系統(tǒng)最終控制權(quán)且不想交授權(quán)費(fèi)的商人。
加上Linux有全世界頂尖高手的日夜維護(hù),其生態(tài)圈已經(jīng)頗具規(guī)模,同時(shí)Linux被大量極客玩家塞進(jìn)各式各樣機(jī)器里玩,故而到了今天,Linux只是一個(gè)內(nèi)核,允許全世界每一個(gè)玩家下載下來自己修改,想怎么玩就怎么玩 永遠(yuǎn)沒人問你要授權(quán)費(fèi) 連特朗普也不行,由于當(dāng)初的開源協(xié)議,林納斯雖說貴為生父,可他在開源協(xié)議面前也無法說是自己的,他除了獲得名聲之外自己沒從Linux里獲得一分錢盈利。
說那個(gè)0.01版本有多厲害?其實(shí)它只是一個(gè)漏洞百出的單片機(jī)版本,勉強(qiáng)可以運(yùn)行而已,并不是現(xiàn)在的支持多CPU,多線程,多任務(wù),多用戶。稍有腦洞的程序猿都可以為單片機(jī)寫一個(gè)運(yùn)行程序,真正厲害的是開源之后的那些極客為Linux寫的補(bǔ)丁,已經(jīng)完全把0.01版本的框架拆得面目全非,林納斯只是做了一個(gè)開頭,今天的Linux是全世界極客智慧的結(jié)晶。
linus大學(xué)時(shí)期寫的linux內(nèi)核,應(yīng)該是0.11版本。2008年的大三寒假,有幸拜讀了趙炯的這本《linux內(nèi)核完全剖析》,這本書剖析的內(nèi)核版本就是linux 0.11版本的源碼,也就是linus大學(xué)時(shí)期所寫的那個(gè)版本。跟現(xiàn)在最新的5.x的內(nèi)核相比,那可真是秀珍極了。然而,你要知道現(xiàn)在linux的高樓大廈都起于那抔黃土,所以linux0.11內(nèi)核技術(shù)上多厲害倒不是最主要的,沒有l(wèi)inux0.11內(nèi)核就沒有現(xiàn)在的5.x的linux內(nèi)核,這才是它的歷史意義。類似沒有毛主席就沒有新中國,道理是一樣的,這是其一。
第二個(gè),我們來說說linux 0.11的技術(shù)功能。linux0.11內(nèi)核作為linux內(nèi)核的創(chuàng)始版本,功能不算全面,但是核心功能都有了!比如:
所以,你看,這已經(jīng)是現(xiàn)代操作系統(tǒng)的技術(shù)架構(gòu)的雛形了?;谶@個(gè)雛形,才有了后續(xù)linux內(nèi)核的不斷發(fā)展和進(jìn)化。所以它的技術(shù)引導(dǎo)意義是很大的。
第三個(gè),我想從學(xué)習(xí)的角度來談一下linux0.11內(nèi)核的意義。最新的linux內(nèi)核已經(jīng)太冗余了,里面加入了各種各樣的需求和特性,已經(jīng)把linux內(nèi)核的核心功能深埋在層層的業(yè)務(wù)代碼下面了,如果從最新的linux內(nèi)核源碼入手,你可能像進(jìn)入一個(gè)迷宮一樣不得要領(lǐng),空耗耐心,最終放棄。而其實(shí)linux0.11內(nèi)核代碼已經(jīng)代表了linux內(nèi)核的核心功能和開發(fā)理念。所以,如果從學(xué)習(xí)的角度來看,linux0.11內(nèi)核以其精簡(jiǎn)的代碼量、濃縮的功能模塊和相對(duì)沒那么多的業(yè)務(wù)代碼,所以能更純粹的滿足我們學(xué)習(xí)的需求。
本人是linux內(nèi)核愛好者,有十年linux內(nèi)核和驅(qū)動(dòng)開發(fā)經(jīng)驗(yàn),持續(xù)在頭條分享通俗易懂的linux內(nèi)核開發(fā)視頻。免費(fèi)的《linux內(nèi)核開發(fā)100講》系列視頻持續(xù)更新,有需要的小伙伴可以來學(xué)習(xí)噢。
Linus本人是個(gè)牛人,但是最初的Linux談不上有多厲害,因?yàn)樽畛跛麑懙某绦蚴菫榱送瓿勺鳂I(yè),他也僅僅只是模仿UNIX寫了一段內(nèi)核,而且不是完整內(nèi)容的內(nèi)核,就是一個(gè)內(nèi)存分配和任務(wù)調(diào)度模塊,連當(dāng)時(shí)流行的軟驅(qū)這種硬件的驅(qū)動(dòng)程序都沒有,這種大學(xué)生作業(yè)其實(shí)有很多,要是說這種內(nèi)核多厲害也是UNIX厲害,因?yàn)槎际巧秸疷NIX內(nèi)核,幾個(gè)月以后Linus又寫了一個(gè)軟驅(qū)的驅(qū)動(dòng)程序,形成了最初的0.01版本的Linux,到這里為止Linux還說不上有多厲害或者有什么影響,但Linus做了一個(gè)影響巨大的決定,把自己的這個(gè)作業(yè)交給開源組織公開給大家一起來玩,從這里開始Linux才真正牛逼起來,內(nèi)核版本也不斷進(jìn)化,逐漸形成了自己獨(dú)立內(nèi)核,但即使這樣Linux幾乎所有概念和思想都來自UNIX,比如把硬件設(shè)備也當(dāng)做文件處理,管道概念文件命名規(guī)則等,所以學(xué)過Linux的能很快熟悉UNIX,反過來也一樣。
我不是否定Linus的牛逼和偉大,只是想告訴大家當(dāng)一個(gè)人對(duì)科學(xué)技術(shù)有興趣的時(shí)候,自己動(dòng)手實(shí)踐有多重要,即使是模仿前輩自己動(dòng)手也是難能可貴,其實(shí)另外一個(gè)例子是比爾蓋茨大叔,蓋茨大叔讀中學(xué)的時(shí)候?qū)﹄娮訉W(xué)發(fā)生了濃厚興趣,天天和自己的好友在車庫里擺弄電子小玩意鉆研BASIC,高中沒畢業(yè)就自己注冊(cè)了一家公司,即后來的微軟,蓋茨大叔又極有商業(yè)頭腦,聽說IBM在找PC機(jī)的操作系統(tǒng),蓋茨大叔立馬從別人哪兒買了一個(gè)DOS改頭換面,從IBM哪拿到了訂單,這才有了后來的微軟這個(gè)巨人。所以敢于實(shí)踐敢于行動(dòng)有多么重要,是一切成功的基礎(chǔ)和起點(diǎn)。
先說結(jié)論:即使在現(xiàn)在的目光來看,Linus也是非常非常牛皮。正如linus本人所言:“talk is cheap,show me your code”,東西都是說起來容易,做起來難。1991年linux發(fā)布第一版本內(nèi)核,那個(gè)年代沒有谷歌,沒有雅虎,計(jì)算機(jī)手冊(cè)可能都不全。那是一個(gè)沒有復(fù)制粘貼的年代,所以到底有多牛不言而喻。
在Kernel.org上可以找到最為古老的Linux內(nèi)核0.0.1版(有興趣的朋友可以去看看):
一共88個(gè)文件,代碼行數(shù)如下:
當(dāng)然最開始版本,肯定不是一部封神,不過在當(dāng)時(shí)那個(gè)環(huán)境能夠通過參考Minix就憑自己一個(gè)人寫出能boot的系統(tǒng),已經(jīng)是相當(dāng)相當(dāng)厲害了。在Linus的帶領(lǐng)下,以及無數(shù)開源愛好者的共同努力,linux才有了現(xiàn)在的規(guī)模。
linus通過學(xué)習(xí)MINIX后,發(fā)現(xiàn)MINIX的版權(quán)協(xié)議只能用于教育學(xué)習(xí)上面,所以他基于MINIX的基礎(chǔ)上開發(fā)了Linux。而MINIX的開發(fā)是基于Unix的基礎(chǔ)而成。 而Unix也不是憑空出來的,也是兩位大牛在參考Multics的基礎(chǔ)上開發(fā)而來。盡管這些大牛都是在巨人的肩膀上進(jìn)行開發(fā)才得來今天的linux系統(tǒng),但這并不影響他們的偉大啊,全球這么多人,這么多血計(jì)算機(jī)的前輩,Linus站了出來,分享了自己做的系統(tǒng),并通過開源網(wǎng)站帶領(lǐng)著大家一起開發(fā)維護(hù)linux操作系統(tǒng),這么多年來,無數(shù)操作系統(tǒng)提出與退場(chǎng),Linux一路走來越加輝煌。要知道這是一款開源操作系統(tǒng),背后沒有微軟,google,這樣的巨頭做爸爸。但是它殺出來了,我想這與linus獨(dú)特的個(gè)人魅力也是有很大關(guān)系的。
30年前,那個(gè)少年有著勇氣寫出一個(gè)操作系統(tǒng),并有勇氣把它放在網(wǎng)絡(luò)上給大家參考建議,同樣這30年來Linus一直在社區(qū)帶領(lǐng)著大家開發(fā)維護(hù)linux操作系統(tǒng),難道這還不夠厲害嗎?
可能現(xiàn)在有很多計(jì)算機(jī)開發(fā)者同樣能編寫一個(gè)操作系統(tǒng)簡(jiǎn)單內(nèi)核,首先那是30年前,計(jì)算機(jī)手冊(cè)都不一定能找全,另外能帶領(lǐng)linux走到現(xiàn)在才是linus更厲害的地方。
咳咳,就這么說吧。
作為一個(gè)三流程序員,多少次下定決心看一遍這個(gè)初始版本,也沒看完過。
現(xiàn)在那么多程序員,我猜哈,能看過甚至參透這個(gè)初始版本的,不足百分之一,甚至更低。
所以,你就知道有多厲害了。
Linus是一個(gè)天才程序員。
Read The Fucking Source Code,應(yīng)該就是Linus的至理名言。
Linux內(nèi)核是操作系統(tǒng)的根本,能搞出操作系統(tǒng),這不是一般人能做到的。在當(dāng)時(shí)有兩大操作系統(tǒng)Windows和Unix,不過他們都是有版權(quán)的。
Linux可能是參考了一些Unix的知識(shí),不過肯定是原創(chuàng)的。
基本上是以一人之力,攪得操作系統(tǒng)江湖天翻地覆。
Linus就軟件技術(shù)而言,是頂級(jí)的,本人一生吹。
Linux操作系統(tǒng)有多強(qiáng),現(xiàn)在應(yīng)用最廣泛的移動(dòng)操作系統(tǒng)安卓就是建立在Linux系統(tǒng)之上的。
最關(guān)鍵的一點(diǎn),就是Linux操作系統(tǒng)免費(fèi),這一點(diǎn)Linus就該被刻在榮譽(yù)殿堂。
你以為Linus只搞了一個(gè)操作系統(tǒng)就完事了?
聽說過Git嗎?
版本管理工具。
他寫的。
Git的價(jià)值和作用真的不弱于Linux操作系統(tǒng),給所有的IT技術(shù)公司帶來了便利。
所以,Linus是一個(gè)大佬,軟件領(lǐng)域的大佬。
即使是Linux最初的版本,就技術(shù)而言,也是大佬級(jí)別的。
最后我的建議是,如果你真的喜歡軟件,就把這個(gè)最初的Linux版本、Git,二者的源碼讀一遍,受益會(huì)是終身的。
喜歡的朋友點(diǎn)個(gè)贊哦,也可以點(diǎn)個(gè)關(guān)注支持下。
承認(rèn)別人優(yōu)秀,一直都很困難
--鍵盤俠
首先當(dāng)時(shí)的計(jì)算機(jī)算力很低,可能相當(dāng)于現(xiàn)在的單片機(jī),但是當(dāng)時(shí)環(huán)境和資料不如現(xiàn)在,打個(gè)比方,現(xiàn)在做一個(gè)企業(yè)站,只需要幾百塊,但是90年代,一個(gè)頁面5000,很可能找不到人。
現(xiàn)在為啥就那么便宜呢?網(wǎng)絡(luò)上到處可以搜索到學(xué)習(xí)資料,開源系統(tǒng),簡(jiǎn)單處理就可以用。但是90年代不行,很多東西沒有資料的時(shí)候,主要靠自己看硬件資料,結(jié)合軟件理論,自己去嘗試,這個(gè)過程可能1次,可能100次,可能更多。
單片機(jī)對(duì)于現(xiàn)在很多人來說太簡(jiǎn)單了,但是看問題要有代入感,如果是你,在當(dāng)時(shí)的環(huán)境,你能做出來什么。
有人說,現(xiàn)在很多程序員都是面向百度編程,離了網(wǎng)絡(luò)什么都不會(huì)了。那么如果你在linus那個(gè)年代,你還可以編程嗎?
有些人可能技術(shù)很厲害,但是缺乏毅力,和耐心。世界上比linus厲害的人多很多,但是堅(jiān)持下來做事的又有多少。
linus 牛
可以這么說,學(xué)習(xí)過操作系統(tǒng)的學(xué)生,一般過的去的,都可以完成。
沒有貶低的意思。
換個(gè)說法吧,其實(shí)當(dāng)時(shí)的操作系統(tǒng),比如DOS,UNIX,LINUX,早期版本,一個(gè)人在兩可接受的時(shí)間內(nèi)都能完成。
這里面存在一個(gè)歷史機(jī)遇,就是unix走向封閉,教學(xué)用的東西極度稀缺,minux做的松垮,linux一下填補(bǔ)了一個(gè)重要的需求,社區(qū)很快就形成了
最初linus的編程水平多優(yōu)秀不敢說,但是能在大學(xué)就寫出內(nèi)核,至少說明他對(duì)CPU及其周邊設(shè)備搞的很明白,所有設(shè)備的編程都搞通了,這是難得的牛B。
要知道硬件的驅(qū)動(dòng)編程比一般的商務(wù)流程編程要難的多,一會(huì)中斷、一會(huì)DMA,因?yàn)榛緵]有debug可用,看不到寄存器狀態(tài),只能信賴技術(shù)手冊(cè),一個(gè)bit的錯(cuò)誤的結(jié)果就是死機(jī),沒人告訴你如何解決,因?yàn)槟菚r(shí)也沒有互聯(lián)網(wǎng)可以搜索解決辦法,一切靠自己。
另外,linus的編程除了大部分的C語言,還有大量的匯編代碼,雖然那時(shí)的x86指令不多,但是匯編系統(tǒng)也不智能,一切靠大腦,不是靠網(wǎng)絡(luò)。
現(xiàn)在Linus一會(huì)噴Java、一會(huì)噴C++,其實(shí)所有系統(tǒng)底層的開發(fā),必須搞清楚代碼的一切細(xì)節(jié),即便不是每一個(gè)指令,但代碼的結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)是必須清清楚楚的,否則無法保證程序的可靠運(yùn)行,java甚至C++是有很多盲區(qū)的,根本不知道到底用了多少代碼空間,多少棧空間深度,多少堆空間,不知道這些,系統(tǒng)的資源就會(huì)失控,也就別說系統(tǒng)的可靠運(yùn)行了。系統(tǒng)運(yùn)行在實(shí)存(物理內(nèi)存),棧、堆溢出的結(jié)構(gòu)就是死機(jī)。
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答