{eval=Array;=+count(Array);}

成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

問(wèn)答專欄Q & A COLUMN

我想寫一個(gè)自己的操作系統(tǒng),比如Unix或Linux,最起碼我需要具備些什么?然后我需要怎么做?

周國(guó)輝周國(guó)輝 回答0 收藏1
收藏問(wèn)題

10條回答

lncwwn

lncwwn

回答于2022-06-27 17:20

Unix和Linux屬于大型操作系統(tǒng),憑個(gè)人之力,根本不可能完成。以Linux系統(tǒng)為例,它的版權(quán)人林納斯.托瓦茲(Linux之父)是個(gè)天才程序員,沒日沒夜忙了差不多半年,寫出Linux的0.01版,也就是初級(jí)版本,你猜源代碼有多少?大概有1萬(wàn)行。

Linux0.01版發(fā)布后,林納斯和全球成千上萬(wàn)黑客(和現(xiàn)在喜歡在網(wǎng)上偷雞摸狗的黑客不同,那時(shí)的黑客都是程序員大牛,主要以改進(jìn)電腦軟硬件性能為樂(lè)趣)一起修改完善。從1991年0.01版發(fā)布,到1994年Linux1.0正式版發(fā)布,三年時(shí)間,參與的程序員能輕松坐滿一個(gè)足球場(chǎng),你猜代碼有多少行?一共17萬(wàn)多行。

林納斯.托瓦茲(Linus Torvalds),Linux系統(tǒng)之父。你的手機(jī)、你家的電視機(jī)頂盒、你常取款的 ATM上的系統(tǒng),都是基于 Linux 系統(tǒng)改造而來(lái),沒有這個(gè)人,就不會(huì)有現(xiàn)在的開源軟件。



除非你認(rèn)為自己的編程天賦和勤奮努力程度能碾壓上述大牛,那么可以試試以個(gè)人之力,寫一個(gè)Linux級(jí)別的操作系統(tǒng)。

更重要的是,當(dāng)時(shí)還是486電腦當(dāng)?shù)赖臅r(shí)代,操作系統(tǒng)遠(yuǎn)沒有今天復(fù)雜,那怕是iOS和安卓這樣的公司化運(yùn)作的操作系統(tǒng)項(xiàng)目,也并沒有從0寫起,而是“踩在前人的肩膀上爬梯子”,iOS的內(nèi)核是Unix,安卓系統(tǒng)的內(nèi)核是Linux,蘋果公司和谷歌公司在原有系統(tǒng)上“改擴(kuò)建”,搞成了自己的東西。

肯·湯普森(Kenneth Thompson),C語(yǔ)言前身B語(yǔ)言的作者,Unix的發(fā)明人之一,程序員們的祖師爺。



當(dāng)然,如果不是要寫Linux這樣的大型操作系統(tǒng),就是想寫來(lái)玩玩,比如搞個(gè)mini的,還是有可操作性的:

  1. 建議從最基礎(chǔ)的玩起,先寫監(jiān)控程序(操作系統(tǒng)的原型),僅具有加載程序和運(yùn)行程序的功能。
  2. 監(jiān)控程序玩熟練之后,可以寫用于單片機(jī)的微型操作系統(tǒng),包含控制程序、編譯器和簡(jiǎn)單的應(yīng)用程序。

個(gè)人要熟練寫操作系統(tǒng),大致說(shuō)來(lái)需要具備下列素質(zhì):

  1. 熟練運(yùn)用C語(yǔ)言編程;
  2. 會(huì)匯編語(yǔ)言;
  3. 了解基本的硬件知識(shí);
  4. 會(huì)寫硬件驅(qū)動(dòng)程序;
  5. 會(huì)軟件架構(gòu)設(shè)計(jì);

不過(guò),上面這些都精通了,隨便去互聯(lián)網(wǎng)大廠拿個(gè)七八十萬(wàn)年薪的offer是分分鐘的事,何苦自己折騰!

評(píng)論0 贊同0
  •  加載中...
mushang

mushang

回答于2022-06-27 17:20

也不是潑冷水,不同的操作系統(tǒng)有不同的應(yīng)用領(lǐng)域,它是一個(gè)復(fù)雜的系統(tǒng)工程,只靠一個(gè)人的能力是無(wú)法實(shí)現(xiàn)的,精力能力都有限,需要掌握硬件,軟件的知識(shí)非常廣,例如,工程,通信,網(wǎng)絡(luò),個(gè)人等等,至今為止沒有一個(gè)操作系統(tǒng)是一個(gè)人來(lái)完成的,也許你會(huì)破例。

評(píng)論0 贊同0
  •  加載中...
smartlion

smartlion

回答于2022-06-27 17:20

不請(qǐng)自來(lái)。

要寫操作系統(tǒng),你需要的是大量基礎(chǔ)知識(shí),比如操作系統(tǒng)原理、保護(hù)模式、計(jì)算機(jī)組成原理、處理器架構(gòu)、匯編語(yǔ)言、鏈接與裝載等等。

具體怎么BOOT啟動(dòng),怎么跳20號(hào)地址線,怎么切換到保護(hù)模式之類就不說(shuō)了,你需要對(duì)操作系統(tǒng)有個(gè)全面的架構(gòu)設(shè)計(jì),中斷怎么響應(yīng),進(jìn)程/線程怎么調(diào)度,內(nèi)存怎么管理……,慢慢地,你會(huì)搞出一個(gè)操作系統(tǒng)雛形出來(lái)了,當(dāng)然這里是指內(nèi)核。

等到這差不多了,重頭戲來(lái)了,你要開發(fā)一些驅(qū)動(dòng)程序,沒錯(cuò),那些硬件廠商可不會(huì)隨便為新的操作系統(tǒng)開發(fā)驅(qū)動(dòng)的(或者適配)。什么顯卡驅(qū)動(dòng),什么文件系統(tǒng)(當(dāng)然是創(chuàng)新的,不是NTFS,也不是EXT4之類),什么網(wǎng)卡驅(qū)動(dòng)……又要拜托你開發(fā)了。

好了,經(jīng)過(guò)多年不懈努力,假設(shè)你終于完成驅(qū)動(dòng)層了。

系統(tǒng)也跑起來(lái)沒藍(lán)屏了(假設(shè)內(nèi)核吐核時(shí)有藍(lán)屏)。

好的,重頭戲又來(lái)了,你這個(gè)操作系統(tǒng)還沒有一個(gè)應(yīng)用軟件。比如上面沒有Photoshop,沒有Chrome,沒有QQ……沒有任何軟件啊,這可怎么辦呢?那些軟件廠商可不會(huì)隨便為新的操作系統(tǒng)開發(fā)軟件的(或者適配),咦,這句話好熟悉的感覺。

對(duì)了,這就是所謂的操作系統(tǒng)的“生態(tài)”系統(tǒng),現(xiàn)在,已經(jīng)不是編程能力的問(wèn)題了,你面對(duì)的,是海量的生態(tài)。

評(píng)論0 贊同0
  •  加載中...
gaara

gaara

回答于2022-06-27 17:20

能問(wèn)這個(gè)問(wèn)題,就代表你就寫不出來(lái)了,不是打擊你,建議放棄,浪費(fèi)時(shí)間,你先看懂了Linux 內(nèi)核早期版的源代碼后(網(wǎng)上有下載)再談這個(gè)話題。

評(píng)論0 贊同0
  •  加載中...
Jeffrrey

Jeffrrey

回答于2022-06-27 17:20

其實(shí)沒那么復(fù)雜,我自己就寫過(guò)一款Rtos,簡(jiǎn)單實(shí)現(xiàn)任務(wù)調(diào)度,任務(wù)間的通信,全部大概5000行代碼,操作系統(tǒng)現(xiàn)在分為微內(nèi)核和巨內(nèi)核,像Linux實(shí)現(xiàn)了用戶區(qū)和內(nèi)核區(qū)隔開,內(nèi)存機(jī)制需要Mmu支持,就非常復(fù)雜,想鴻蒙就實(shí)現(xiàn)了微內(nèi)核,就做操作系統(tǒng)而言并不像外面人認(rèn)為那樣門檻高,熟悉普遍的操作系統(tǒng)的一些機(jī)制就可

評(píng)論0 贊同0
  •  加載中...
defcon

defcon

回答于2022-06-27 17:20

大家好,我是十年linux程序員,我認(rèn)為:操作系統(tǒng),說(shuō)大可大,說(shuō)小可小。

往大了說(shuō),一個(gè)操作系統(tǒng)并不單單是一個(gè)操作系統(tǒng),而是一個(gè)生態(tài)。在這個(gè)生態(tài)的后面,包含了芯片生產(chǎn)產(chǎn)商、底層內(nèi)核軟件提供者、還有各大發(fā)行版軟件公司。這些公司構(gòu)成了一個(gè)完整的生態(tài),在不同的層面上支持了操作系統(tǒng)的健康、穩(wěn)定的向前發(fā)展。

但是往小了說(shuō),操作系統(tǒng)也沒有那么神秘,因?yàn)樗褪且粋€(gè)具有特權(quán)模式的應(yīng)用程序。linux最新的源碼因?yàn)榧尤肓颂囿w系兼容的代碼,比較復(fù)雜,所以,不太容易看的出來(lái)。但是如果真想自己寫一個(gè)操作系統(tǒng),可以參考linux0.11內(nèi)核或者ucosII。

linux0.11內(nèi)核是linux的創(chuàng)始版本,里面都是linux的核心,而沒有太多的驅(qū)動(dòng)架構(gòu)、KVM等非核心功能。所以,更適合研究、學(xué)習(xí)和模仿;而ucosII則更加精簡(jiǎn),只有幾十K,但是卻具備了一個(gè)操作系統(tǒng)的所有功能,ucosII的內(nèi)核體系結(jié)構(gòu)如下:


結(jié)合以上來(lái)看,如果要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的操作系統(tǒng),需要:

  1. 實(shí)現(xiàn)中斷部分,中斷是系統(tǒng)的核心,時(shí)鐘的產(chǎn)生需要中斷,而時(shí)鐘
  2. 實(shí)現(xiàn)時(shí)鐘部分,時(shí)鐘是操作系統(tǒng)的心臟和脈搏。人無(wú)心臟則怠,操作系統(tǒng)無(wú)時(shí)鐘則運(yùn)不轉(zhuǎn);
  3. 實(shí)現(xiàn)內(nèi)存管理部分,這樣程序才有了運(yùn)行的載體。
  4. 進(jìn)程調(diào)度器,這是應(yīng)用程序運(yùn)行的基礎(chǔ)
  5. 存儲(chǔ)+文件系統(tǒng)
  6. (可選)外設(shè)驅(qū)動(dòng)架構(gòu),如果你的操作系統(tǒng)要支持各種各樣的外設(shè),那么可能要為不同類型的外設(shè)編寫不同的驅(qū)動(dòng)架構(gòu)或者模型,這個(gè)部分非核心功能,所以是可選的。

以上這些功能都是操作系統(tǒng)的必要組成部分,如果要自己寫一個(gè)操作系統(tǒng),則至少要實(shí)現(xiàn)以上這些部分。坦白來(lái)講,這個(gè)任務(wù)一點(diǎn)都不簡(jiǎn)單,你需要具備的知識(shí):

  • 匯編知識(shí)(x86匯編和arm匯編不同)
  • 處理器體系架構(gòu)知識(shí)(不同處理器,對(duì)中斷等的實(shí)現(xiàn)是不同的)
  • 精通C語(yǔ)言(基于效率考慮,操作系統(tǒng)幾乎全部都是C寫的)
  • 精通操作系統(tǒng)知識(shí),此處細(xì)節(jié)繁多,可參考任何一本關(guān)于操作系統(tǒng)原理的書籍

總之,自己寫一個(gè)操作系統(tǒng)挑戰(zhàn)是很大的,如果是基于學(xué)習(xí)的目的去寫一個(gè)操作系統(tǒng),我認(rèn)為是值得鼓勵(lì)的;但是如果是基于商業(yè)的考慮去自己寫一個(gè)操作系統(tǒng),那么我認(rèn)為是沒有意義的。

歡迎關(guān)注"技術(shù)簡(jiǎn)說(shuō)",帶你由淺入深、一步一步學(xué)習(xí)linux內(nèi)核源碼。

評(píng)論0 贊同0
  •  加載中...
NicolasHe

NicolasHe

回答于2022-06-27 17:20

首先你要活一百年,為什么這么說(shuō)呢?我告訴你吧,windos系統(tǒng)一共有1億行代碼,而且還是全球5萬(wàn)開發(fā)人員花了5年才寫出來(lái)的,如果你一個(gè)人想寫出這樣的系統(tǒng)至少需要100年的時(shí)間,而且你還得24小時(shí)不休息,這點(diǎn)你能做到嗎?

不過(guò)你想學(xué)習(xí)相關(guān)編程技術(shù)我建議你可以先學(xué)Java或者是C語(yǔ)言今后會(huì)對(duì)你職業(yè)生涯有幫助。

評(píng)論0 贊同0
  •  加載中...
liaoyg8023

liaoyg8023

回答于2022-06-27 17:20

想要寫一個(gè)操作系統(tǒng)的人大部分都是帶著興趣玩,畢竟現(xiàn)在主流的操作系統(tǒng)windows,蘋果系統(tǒng),linux系統(tǒng)屬于目前比較常見的系統(tǒng),其中l(wèi)inux內(nèi)核屬于開源可以看到其全部的代碼,很多研究操作系統(tǒng)都是以linux為參考的模型,畢竟開源的代碼研究起來(lái)也方便,但是對(duì)于個(gè)人來(lái)講要去寫一個(gè)操作系統(tǒng)難度可想而知了,曾經(jīng)有個(gè)北京的同事已經(jīng)工作了十幾年主要的精力就是在研究底層,是個(gè)瘋狂的linux內(nèi)核研究者只要是是家里沒事就會(huì)呆在公司加班研究linux內(nèi)核,有時(shí)候一起吃飯討論研究linux內(nèi)核的主要在哪塊,他講到其實(shí)linux內(nèi)核已經(jīng)不是當(dāng)初設(shè)計(jì)的樣子了,現(xiàn)在的代碼的更新速度之快讓人發(fā)指,在全球范圍內(nèi)真正對(duì)于核心內(nèi)核代碼具備修改能力的非常有限,而且已經(jīng)被國(guó)外巨頭公司收到自己的公司作為儲(chǔ)備資源。

說(shuō)到linux內(nèi)核非常的關(guān)鍵代碼就是內(nèi)存管理,這塊也是linux內(nèi)核非常關(guān)鍵的代碼,每次和同事一起講到內(nèi)存管理他就會(huì)兩眼放光,曾經(jīng)有一次公司組織讓他給大家講下linux內(nèi)核的內(nèi)存管理,結(jié)果一口氣講了3個(gè)小時(shí)中間沒有任何的停歇,講的大家都快睡著了他還在激情澎湃在講著,說(shuō)到內(nèi)存管理他能一口氣講3天3夜,說(shuō)到linux代碼的貢獻(xiàn)者,大部分可能是對(duì)一些驅(qū)動(dòng)細(xì)節(jié)或者測(cè)試用例的提交,這些本身的技術(shù)含量不是很大但是需要遵守里面的代碼規(guī)范,一旦不規(guī)范連基本的機(jī)器檢測(cè)都通過(guò)不了,雖然看起來(lái)是開源的社區(qū)對(duì)于代碼規(guī)范要求也是極其嚴(yán)格的。

說(shuō)到每次研究linux內(nèi)核的心得,最大的快樂(lè)在于看懂一行里面核心代碼的設(shè)計(jì)意圖,能夠看懂linux核心代碼的為什么要這么實(shí)現(xiàn)就已經(jīng)代表水平非常不錯(cuò)的人了,倒不是linux內(nèi)核代碼有多深?yuàn)W,關(guān)鍵需要對(duì)于內(nèi)核的工作原理以及常見的知識(shí)有足量的儲(chǔ)備,當(dāng)然如果長(zhǎng)期跟蹤代碼實(shí)現(xiàn)的規(guī)律可能研究起來(lái)就比較順暢了,如果短時(shí)間內(nèi)想徹底的看明白還是存在非常大的難度的,所以想要研究一個(gè)linux內(nèi)核的代碼,建議現(xiàn)在linux內(nèi)核社區(qū)浸泡一段時(shí)間,然后了解周圍的基本知識(shí),當(dāng)然首先要具備一定程度的編程能力。

對(duì)于操作系統(tǒng)來(lái)講本質(zhì)還是一個(gè)軟件產(chǎn)品,但是又有其特殊性屬于給別的軟件產(chǎn)品提供開發(fā)的環(huán)境,所以對(duì)于硬件資源支配以及用戶的行為最貼近的軟件系統(tǒng)了,由于用戶體驗(yàn)極強(qiáng)所以其開發(fā)語(yǔ)言需要在性能上極強(qiáng),操作系統(tǒng)主要的開發(fā)語(yǔ)言有C語(yǔ)言和匯編語(yǔ)言,很多人在網(wǎng)絡(luò)上喊著C語(yǔ)言已經(jīng)過(guò)時(shí)了,這些都是只看到表面的現(xiàn)象,只不過(guò)底層的語(yǔ)言不像之前顯得那么重要了,但是很多軟件系統(tǒng)的底層還是離不開C語(yǔ)言,而且像操作系統(tǒng)這么繁雜的工程C語(yǔ)言也是主力軍,可以預(yù)見在未來(lái)C語(yǔ)言在應(yīng)用級(jí)別的開發(fā)在減少,但是對(duì)于底層的維護(hù)能力還是在加強(qiáng),大家都跑去開發(fā)高級(jí)語(yǔ)言了,總得需要有人來(lái)維護(hù)底層的而且對(duì)于維護(hù)和修改能力還是非常高,真正掌握高技巧的C語(yǔ)言能力的人還是照樣在編程市場(chǎng)拿高薪。

由于操作系統(tǒng)功能太過(guò)復(fù)雜所以真要想要玩轉(zhuǎn)linux內(nèi)核建議看一本《linux內(nèi)核完全剖析基于0.12內(nèi)核》的書籍,專門抽取了早期的linux內(nèi)核的版本在逐行講解的一本書,里面詳細(xì)的介紹了linux內(nèi)核主要功能是如何實(shí)現(xiàn)的,以及為什么要這么去實(shí)現(xiàn),但是由于歷史太過(guò)久遠(yuǎn)不要企圖和現(xiàn)在的linux內(nèi)核做對(duì)比,中間優(yōu)化迭代的版本太多了多的會(huì)讓你懷疑人生,所以不要企圖去了解其中的來(lái)龍去脈,還是先從基本的原理入手去解決,對(duì)于linux內(nèi)核需要掌握的知識(shí)先從基本的編程語(yǔ)言和常見的操作系統(tǒng)運(yùn)行的原理開始著手準(zhǔn)備,希望能幫到你。

評(píng)論0 贊同0
  •  加載中...
Developer

Developer

回答于2022-06-27 17:20

看這兩本書,一本《操作系統(tǒng):原理與精髓》,另一本《操作系統(tǒng):設(shè)計(jì)與實(shí)現(xiàn)》。后一本附minix 操作系統(tǒng)源代碼。

評(píng)論0 贊同0
  •  加載中...
vpants

vpants

回答于2022-06-27 17:20

你唯一要做的就是:睡覺。

在睡夢(mèng)中,也許你能出來(lái)個(gè)DreamUnix操作系統(tǒng)。

然后,一炮走紅!

然后,我們天天在你的操作系統(tǒng)里夢(mèng)游!


評(píng)論0 贊同0
  •  加載中...

最新活動(dòng)

您已邀請(qǐng)0人回答 查看邀請(qǐng)

我的邀請(qǐng)列表

  • 擅長(zhǎng)該話題
  • 回答過(guò)該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說(shuō)句感謝的話吧!
付費(fèi)偷看金額在0.1-10元之間
<