這是一種不可能完成的任務钥庇。
一個人不能完成智嚷,一個公司也不能完成。
首先糠悯,你的操作系統(tǒng)是準備模仿Linux還是Windows帮坚?先模仿再超越是我們慣用的方法。現(xiàn)代人構建操作系統(tǒng)的方法逢防,一般是在Linux的內核上叶沛,進行各種風騷的操作蒲讯。增加圖形界面忘朝,增加新的硬件驅動。連Google這樣大的公司判帮,在推出Android的時候局嘁,也沒有重新編寫一個操作系統(tǒng),而是在Linux的基礎上進行改裝晦墙。
從系統(tǒng)的核心說起悦昵,你的操作系統(tǒng)準備支持幾種CPU?Intel的和AMD的都要支持嗎晌畅?Arm處理器是否也要支持但指?還是準備制造自己的CPU?那更是一個浩大無比的工程抗楔。我們知道棋凳,現(xiàn)在的處理器是從以前8位的進化到16位,進化到32位连躏,再進化到64位剩岳。那么,你的系統(tǒng)是否還要兼容以前32位的程序入热?或者說拍棕,干脆不兼容世界上已有的任何程序晓铆?那么這樣的系統(tǒng)還有什么用處呢?
除非你準備把所有的硬件都重新設計一遍绰播,否則你的操作系統(tǒng)就必然要模仿Linux骄噪,或者在linux的基礎上開發(fā)〈缆幔或者你有辦法弄到Windows的源代碼腰池,在windows的基礎上開發(fā)∶γⅲ看看Windows走過的路示弓,你就會知道開發(fā)操作系統(tǒng)這條路是多么的艱辛:先有了Dos,然后是Win95呵萨,Win98,Win200,WinXP...Win8,Win10奏属。人們一直在抱怨Windows的不穩(wěn)定,有Bug潮峦,但人們一直在用囱皿。所以,你開發(fā)新的操作系統(tǒng)忱嘹,必須有足夠多的人來使用嘱腥,幫你反饋系統(tǒng)中有什么Bug,然后再修補拘悦,再提高齿兔。希望一下子構建一個操作系統(tǒng),能夠媲美WinXP都不是一件簡單的事情础米。要知道分苇,XP已經是近20年前的系統(tǒng)了。你要在很短的時間內把別人20年走過的路重新走一遍屁桑,這是多么的不現(xiàn)實医寿。
操作系統(tǒng)要干些什么呢?首先蘑斧,要和鍵盤鼠標打交道靖秩。那么,你們團隊里就要有人了解鍵盤和鼠標如何驅動竖瘾。單單驅動鍵盤都不是一件容易的事情沟突,按鍵發(fā)出的信息如何送到系統(tǒng)內,系統(tǒng)對此作出什么反應准浴?鼠標按下的時候事扭,看似是單擊,但可能已經發(fā)出了成百上千次點擊信號乐横,你的系統(tǒng)怎樣分辨出這是一次單擊還是拖動求橄?如果你的系統(tǒng)還要在平板電腦和手機上使用今野,那么,用戶點擊觸摸屏的操作是否也要支持罐农?你的團隊里還要有人懂得觸摸屏如何驅動条霜。
然后要和顯示器打交道。現(xiàn)代的操作系統(tǒng)不可能是單純的字符界面涵亏。那么你要在顯示器上顯示圖形宰睡。你的團隊中要有人精通顯示器如何驅動。如果用顯卡气筋,顯卡的驅動由廠商提供拆内,那么問題來了:你的操作系統(tǒng)還沒做出來,廠商怎么會知道如何為你的系統(tǒng)寫驅動呢宠默?所以最早的驅動麸恍,必然是你的團隊的人自己編寫。
CPU要訪問內存的數(shù)據搀矫。那么你的內存怎樣管理抹沪?不同的程序都在同時執(zhí)行,怎樣保證各自使用各自的內存瓤球?有些程序要使用系統(tǒng)內的同一個組件融欧,那么你的系統(tǒng)怎樣分辨出誰在使用?你是否要使用線程卦羡、進程的概念噪馏?是否要使用c語言來編寫底層的系統(tǒng)?如果還是用c語言虹茶,那么c語言所有的陷阱你都要遇到逝薪,不止一次,而是會千百次蝴罪、上萬次的遇到。程序依然在該溢出的時候溢出步清,毫不客氣要门。資源依然回在該鎖死的時候鎖死,毫不手軟廓啊。也就是說欢搜,前人經歷的所有坑,你都要經歷一遍谴轮,再把它們依次填平炒瘟。
數(shù)據要存儲在硬盤或者U盤上,那么第步,你的團隊里要有人懂得如何編寫硬盤和U盤的管理程序疮装。硬盤的扇區(qū)劃分是否要分的和以往有不同缘琅?文件怎樣存儲在硬盤上,才能條理整齊廓推,同時讀寫高效刷袍?是否要支持權限管理?是否要加密和解密樊展?是否要保護系統(tǒng)文件呻纹?要知道,Linux系統(tǒng)下的“rm -rf /* ”刪庫跑路已經不是一個說說而已的笑話专缠,而是真實發(fā)生過很多次的事情雷酪。假如你的系統(tǒng)模仿Linux,是否連這個最脆弱的特征也要模仿涝婉?外部存儲器的容量越來越大太闺,從最早的1.44M軟盤到現(xiàn)在幾個T的硬盤,其間經歷了些什么嘁圈?你的團隊全部要經歷一遍嗎省骂?從最早的MBR到現(xiàn)在的gpt,經歷的不是簡單的磁盤分區(qū)表變化而已最住。多少位的機器钞澳,能夠訪問多大的存儲,不是人們簡單的設定涨缚,也并非當時的人沒有能力編寫大容量硬盤訪問程序的能力轧粟。歷史必須完整的重演一遍,你才能知道其中的技術含量脓魏。
不光這些兰吟,單單識別一下外設都不是一件容易的事情:你插一個東西到USB接口上,現(xiàn)在一個簡單的任務是:識別這是個啥茂翔?可能是鍵盤混蔼,鼠標,U盤珊燎,手寫筆惭嚣,移動硬盤,打印機悔政,手機...你的操作系統(tǒng)要能識別出來吧晚吞?然后找到驅動,讓設備正常運行起來谋国。
網絡接口槽地,用戶界面,硬件驅動,操作系統(tǒng)的每一件事情都是相當艱深的課題......
你的系統(tǒng)要使用漢字嗎捌蚊?那么GB2312,GBK,GB18030都要能按照次序兼容吧集畅?UTF8是否也要兼容?這里面的坑有多深逢勾?你Google/百度一下“亂碼”牡整,就可以發(fā)現(xiàn)數(shù)以萬計的記錄。這些記錄都是別人經歷過坑溺拱。
如果你在Linux的基礎上開發(fā)逃贝,請大膽的說出來,像Google公司那樣迫摔,不要害羞沐扳,這不丟臉。請不要像當年的漢芯一樣句占,拿別人的東西隨便mark一下沪摄,就說是自己的東西,這樣才丟了全國人民的臉纱烘。
從頭編寫一個操作系統(tǒng)是很難很難的事情杨拐。單靠一兩家公司是不可能實現(xiàn)的。要想成功擂啥,只有一種方法可行:拿出當年制造原子彈的決心和勇氣哄陶,舉全國人民之力,召集全世界優(yōu)秀的人才哺壶,先制造出自己的芯片屋吨,然后編寫自己的系統(tǒng),軟件硬件一起搞山宾,從硬件的層面就支持漢字至扰,讓人們用起來,在反饋中改進和提高资锰。