色色一区二区三区,一本大道道久久九九AV综合,国产香蕉97碰碰视频va碰碰看,综合亚洲国产2020

    <legend id="mljv4"><u id="mljv4"><blockquote id="mljv4"></blockquote></u></legend>

    <sub id="mljv4"><ol id="mljv4"><abbr id="mljv4"></abbr></ol></sub>
      <mark id="mljv4"></mark>
      人文藝術(shù) > 我想寫一個自己的操作系統(tǒng),比如Unix或Linux,最起碼我需要具備

      我想寫一個自己的操作系統(tǒng),比如Unix或Linux,最起碼我需要具備

      2020-07-25 23:21閱讀(65)

      我想寫一個自己的操作系統(tǒng),比如Unix或Linux,最起碼我需要具備些什么?然后我需要怎么做?:什么都不需要準(zhǔn)備,能提出這個問題,充分說明你沒有寫操作系統(tǒng)的可能

      1

      什么都不需要準(zhǔn)備,能提出這個問題,充分說明你沒有寫操作系統(tǒng)的可能性。

      2

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

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

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



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

      更重要的是,當(dāng)時還是486電腦當(dāng)?shù)赖臅r代,操作系統(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語言前身B語言的作者,Unix的發(fā)明人之一,程序員們的祖師爺。



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

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

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

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

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

      3

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

      4

      不請自來。

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

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

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

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

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

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

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

      5

      1.取個響亮的名字,比如鴻蒙。

      2.githab下載linux源碼。

      3.找個半吊子c coder改ui.

      搞定

      6

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

      7

      操作系統(tǒng)也有大有小,有簡單有復(fù)雜。大的如桌面級的,小的如路由器,單片機(jī)。

      所以你應(yīng)該首先知道自己的第一步目標(biāo)該怎么走了吧?

      別看大部頭的教科書,那只會讓你心態(tài)奔潰掉。

      先給自己一個小目標(biāo):搞定一個單片機(jī)或者把你自己的路由器搞定。

      匯編會嗎?C語言呢?不會的話先從基礎(chǔ)語言學(xué)起。這個難度不是太高,比較未來你是要搞定操作系統(tǒng)的大神。

      那開始從單片機(jī)開始吧,自己網(wǎng)上買點(diǎn)基礎(chǔ)的開發(fā)板,這個也不貴。找些資料,代碼也不多。網(wǎng)上買板子,很多資料會附送。

      到這一步,你就開始擼吧。實(shí)戰(zhàn)才是轉(zhuǎn)化腦動力的唯一途徑。當(dāng)你感覺擼的差不多干凈了,就開始進(jìn)入下一階段吧。我相信經(jīng)過這場實(shí)戰(zhàn),你應(yīng)該已經(jīng)干貨滿滿。對未來充滿憧憬。少年,向更高級別奮斗吧。

      每一階段,你的朋友圈都會刷新一次。打入更高級別的圈子,與更高級別的大神們共同戰(zhàn)斗。

      注意愛護(hù)自己的頭發(fā),它們總有一天會離你而去,因?yàn)樗鼈冊谀隳窃絹碓铰斆鞯哪X袋上,壓力越來越大。

      不要在這種問答類平臺上混,那只會浪費(fèi)你的時間,對于未來的男人,或者女人。時間就是生命。

      對了,把英語一定要學(xué)好。畢竟很多大神和資料都是英語的。

      相信自己,從現(xiàn)在開始,別放棄。翻過所有的高山,你會看到最美的風(fēng)景 >>一位只混到單片機(jī)級別就放棄的失敗者忠告

      8

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

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

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

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

      由于操作系統(tǒng)功能太過復(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),但是由于歷史太過久遠(yuǎn)不要企圖和現(xiàn)在的linux內(nèi)核做對比,中間優(yōu)化迭代的版本太多了多的會讓你懷疑人生,所以不要企圖去了解其中的來龍去脈,還是先從基本的原理入手去解決,對于linux內(nèi)核需要掌握的知識先從基本的編程語言和常見的操作系統(tǒng)運(yùn)行的原理開始著手準(zhǔn)備,希望能幫到你。

      9

      其實(shí)沒那么復(fù)雜,我自己就寫過一款Rtos,簡單實(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ī)制就可

      10

      恭喜你選擇了一個光榮并且艱巨的任務(wù)!

      如果你純粹是玩,這比較簡單,網(wǎng)上很多教程講到怎么構(gòu)建一個操作系統(tǒng),并且有很多開源的代碼可以嘗試閱讀改寫;如果要在實(shí)際中應(yīng)用操作系統(tǒng),形成一個產(chǎn)品,推向市場,這條路是漫長而艱辛的。

      現(xiàn)代計算機(jī)系統(tǒng)由一個或者多個處理器、主存、磁盤、打印機(jī)、鍵盤、鼠標(biāo)、顯示器、網(wǎng)絡(luò)接口以及各種輸入輸出設(shè)備構(gòu)成的。一般而言,現(xiàn)代計算機(jī)系統(tǒng)是一個復(fù)雜系統(tǒng)。如果每位程序員都不得不掌握系統(tǒng)的所有細(xì)節(jié),那就不可能再編寫代碼了,所以計算機(jī)安裝了一層軟件,稱為操作系統(tǒng),操作系統(tǒng)既作為機(jī)器的擴(kuò)展,面向用戶提供抽象的功能,也管理計算機(jī)的軟硬件。


      計算機(jī)的類型,操作系統(tǒng)可以分為大型機(jī)操作系統(tǒng)、服務(wù)器操作系統(tǒng)、多處理器操作系統(tǒng)、個人計算機(jī)操作系統(tǒng)、掌上計算機(jī)操作系統(tǒng)、嵌入式操作系統(tǒng)、傳感器節(jié)點(diǎn)操作系統(tǒng)、實(shí)時操作系統(tǒng)、智能卡操作系統(tǒng)等。

      如果想要自己開發(fā)操作系統(tǒng),首先要對計算機(jī)的硬件結(jié)構(gòu)有大體的掌握,對處理器、存儲器、硬盤、I/O設(shè)備、總線有比較深刻的理解,熟悉進(jìn)程、地址空間、文件、輸入/輸出、保護(hù)、SHELL、系統(tǒng)調(diào)用等操作系統(tǒng)的基本概念,另外還要掌握數(shù)據(jù)結(jié)構(gòu)和算法的基本邏輯。當(dāng)然,懂匯編語言和C語言是必須的。

      在掌握這些之后,就可以開發(fā)操作系統(tǒng)了。


      第一,設(shè)計操作系統(tǒng)的目標(biāo)。即為什么要設(shè)計這個操作系統(tǒng),要解決什么樣問題,用在什么地方,要具備什么性能,客戶是誰。

      第二,功能模塊的設(shè)計和接口的設(shè)計。編寫一個操作系統(tǒng)并不容易,從接口開始是最好的起點(diǎn),除了主要的系統(tǒng)調(diào)用接口,還有其他的接口。比如某些程序員需要編寫插入到操作系統(tǒng)中的設(shè)備驅(qū)動程序這樣的接口設(shè)計。

      第三、系統(tǒng)的實(shí)現(xiàn)。系統(tǒng)的結(jié)構(gòu),機(jī)制與策略、正交性、命名、綁定的時機(jī)、靜態(tài)與動態(tài)的結(jié)構(gòu)都是需要考慮的問題。

      第四、還要考慮系統(tǒng)的性能,考慮什么應(yīng)該優(yōu)化,空間-時間的權(quán)衡,高速緩存、安全性等等。

      第五,考慮開發(fā)團(tuán)隊(duì)的管理與協(xié)調(diào)。帶領(lǐng)團(tuán)隊(duì)開發(fā)操作系統(tǒng)。

      操作系統(tǒng)是大型、復(fù)雜和長壽命的程序。LINUX和WINDOWS操作系統(tǒng)的源代碼有500萬行,相當(dāng)于16K,1000頁厚的一本書,所以要開發(fā)一個產(chǎn)品級別的大型操作系統(tǒng)絕非易事。

      祝你在學(xué)習(xí)的路上不斷成功,不斷努力實(shí)現(xiàn)自己的夢想,實(shí)現(xiàn)人生價值。

      熱點(diǎn)關(guān)注

      華裔女賭王就此沒落,生前讓所有 濃情端午粽飄香,青浦邀你“云體 上海:“云端”展現(xiàn)端午節(jié)文化內(nèi) “甜咸大戰(zhàn)”!明星藝人們喜歡什 如何做一個男人喜歡的情人(如何 當(dāng)你和你同時出現(xiàn)在同一個場景中 如何在昏暗的光線下設(shè)置快門速度 教育在生活中的價值是什么? 世上做壞事的人死后會面臨什么因 拜登就任總統(tǒng)后的第一步是什么? 同意/不同意:人生最重要的目標(biāo) 二戰(zhàn)后,德國在調(diào)和分歧方面做得 亞伯·林肯恨白人嗎? 一個編輯能把你的故事毀得有多嚴(yán) 現(xiàn)在的iPhone6還能堅(jiān)持再用一年 曹操為什么不殺司馬懿? 現(xiàn)在買房是不是最便宜的時候,現(xiàn) 我身邊的農(nóng)業(yè)銀行營業(yè)廳關(guān)了,AT 歐洲媒體評選CBA最有實(shí)力球員, 榮耀play的6+128和榮耀8X的6+128 螞蟻集團(tuán)是科技公司還是金融公司 請問機(jī)友華為mate30P與華為mate3 聽說老詹修剪一次指甲需要5小時 為什么說寶寶“一月睡二月哭三月 戴笠人稱戴老板,這個是怎么叫出 沒有工作能一次性補(bǔ)繳社保么? 我想知道定向師范生和免費(fèi)師范生 肺癌引起的咳嗽是怎樣的呢? 5000mAh電池的5G手機(jī)推薦嗎?要 恒大亞冠表現(xiàn)“差強(qiáng)人意”,你覺