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

成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

問答專欄Q & A COLUMN

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

周國輝周國輝 回答0 收藏1
收藏問題

10條回答

lncwwn

lncwwn

回答于2022-06-27 17:20

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

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

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



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

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

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



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

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

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

  1. 熟練運用C語言編程;
  2. 會匯編語言;
  3. 了解基本的硬件知識;
  4. 會寫硬件驅動程序;
  5. 會軟件架構設計;

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

評論0 贊同0
  •  加載中...
mushang

mushang

回答于2022-06-27 17:20

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

評論0 贊同0
  •  加載中...
smartlion

smartlion

回答于2022-06-27 17:20

不請自來。

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

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

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

好了,經過多年不懈努力,假設你終于完成驅動層了。

系統(tǒng)也跑起來沒藍屏了(假設內核吐核時有藍屏)。

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

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

評論0 贊同0
  •  加載中...
gaara

gaara

回答于2022-06-27 17:20

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

評論0 贊同0
  •  加載中...
Jeffrrey

Jeffrrey

回答于2022-06-27 17:20

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

評論0 贊同0
  •  加載中...
defcon

defcon

回答于2022-06-27 17:20

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

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

但是往小了說,操作系統(tǒng)也沒有那么神秘,因為它就是一個具有特權模式的應用程序。linux最新的源碼因為加入了太多體系兼容的代碼,比較復雜,所以,不太容易看的出來。但是如果真想自己寫一個操作系統(tǒng),可以參考linux0.11內核或者ucosII。

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


結合以上來看,如果要實現(xiàn)一個簡單的操作系統(tǒng),需要:

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

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

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

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

歡迎關注"技術簡說",帶你由淺入深、一步一步學習linux內核源碼。

評論0 贊同0
  •  加載中...
NicolasHe

NicolasHe

回答于2022-06-27 17:20

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

不過你想學習相關編程技術我建議你可以先學Java或者是C語言今后會對你職業(yè)生涯有幫助。

評論0 贊同0
  •  加載中...
liaoyg8023

liaoyg8023

回答于2022-06-27 17:20

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

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

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

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

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

評論0 贊同0
  •  加載中...
Developer

Developer

回答于2022-06-27 17:20

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

評論0 贊同0
  •  加載中...
vpants

vpants

回答于2022-06-27 17:20

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

在睡夢中,也許你能出來個DreamUnix操作系統(tǒng)。

然后,一炮走紅!

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


評論0 贊同0
  •  加載中...

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關注的人
向幫助了您的網友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<