用一個創業故事串起操作系統原理(一)


第一回:小馬創業選園區,開放標准是第一

小馬最終還是決定走出大公司,自己去創業了。

 

他之所以這樣決定,兩個原因,一方面大企業多年的工作經驗讓他練就了從前端到后端,從Web到App,從產品設計到測試交付的全棧能力他很自信,靠着這些能力,闖盪江湖應該沒什么問題另外一方面,他聽說“的,創業成功概率好像比較大

 

創業先要注冊公司注冊公司需要有一個辦公地點所以小馬需要選擇一個適合創業的環境。他找了很多地方,發現有的地方政策傾斜大型企業,有的地方傾斜本地企業,有的地方鼓勵金融創新小馬感覺這些地方都不太適合他這個IT男。

 

直到有一天,小馬來到了位於杭州濱江的x86創業園區。他被深深吸引住了,當然首要吸引他的就是園區工作人員的熱情。

 

 

園區的工作人員向小馬介紹了以下信息。

 

“首先,咱們這個x86園區,主要有三大特點,一是標准,二是開放,三是兼容。像您這種創業者還是非常多的初次創業不一定有經驗,園區提供標准的企業運行流程輔導。

 

另外我們園區秉承完全開放的態度對待各種各樣的企業。不封閉,不保守只要您符合國家的法律法規,我們都接納而且整個園區一種開放合作的生態,也有利於不同企業之間的協作。“

 

再就是兼容我們園區的流程和規則的設計都會兼容歷史上的既有政策,既不會朝令夕改,也不會因為變化而影響您公司的運轉。總而言之,來了咱們園區,您就埋頭干業務就可以啦!“

 

小馬顯然對於x86園區的開放性十分滿意,於是追問道:您剛才說的企業運行流程輔導,能詳細介紹一下嗎將來我這個企業在這個園區,應該怎么個運轉法

 

工作人員接着咱們這個園區毗鄰全國知名高校,每年都有大量的優秀畢業生來園區找工作,這是企業非常重要的人才來源。葛優說了,二十一世紀了,人才是核心嘛。每年我們園區都會招聘大量的畢業生,先進行一個月的培訓,合格畢業的可以推薦給您這種企業。這些人才啊,就是咱們企業的CPU。

 

 

經過我們園區培訓過的CPU人才‘,具備了三種老板喜歡的核心競爭力

 

第一,實干能力強,干活快,我們稱為運算才能——也即指令執行能力

 

第二,記憶力好,記得又快又准,我們稱為數據才能——也即數據寄存能力

 

第三,聽話,自控能力強,可以多任務並發執行,我們稱為控制才能——也即指令寄存能力

 

到時候,你可以根據需求,看雇佣多少個CPU人才

 

另外人才得有個辦公的地方,這一片呢,就是我們的辦公區域,稱為也就是內存區域您可以包幾個工位,或者一片區域,或者幾個會議室,讓您公司的人才在里面做項目就可以了。這里面有的是地方,同時運行多少各項目都行。

 

 

着工作人員的介紹,小馬走在x86園區中,看着這一片片的內存辦公區,腦子里已經浮現出將來熱火朝天的辦公場景了。

 

 

也許不到半年的時間,我肯定能夠接兩三個大項目,招聘十個八個CPU員工。那項目A的員工就坐在這片內存辦公區,項目B的員工就坐在那片內存辦公區。我根據積累的人脈,將接到的項目寫成一個一個的項目執行計划書,里面是一行行項目執行的指令這些指令操作數據產生一些結果,我們就可以叫程序”小馬這么想着。

 

“然后呢,我把不同的項目執行計划書交給不同的項目組去執行。那項目組就叫進程吧兩個項目組進程A和B,會有獨立的內存辦公空間,互相隔離,程序會分別加載到進程A和進程B的內存辦公空間里面,形成各自的代碼段。要操作的數據和產生的結果,就放在數據段里面。

 

“除此之外,我應該找一個或者多個CPU員工來運行項目執行計划書,我只要告訴他下一條指令在內存辦公區中的地址,經過訓練的CPU員工就會很自覺地、不停地將代碼段的指令拿進來進行處理。

 

指令一般是分兩部分,一部分表示做什么操作,例如是加法還是位移;一部分是操作哪些數據。數據的部分CPU員工會從數據段里面讀取出來,記在腦子里,然后進行處理,處理完畢的結果,在寫回數據段。當項目執行計划書里面的所有指令都執行完畢之后,項目也就完成了,可以等着收錢啦。

 

小馬沉浸在思緒中久久不能自拔,直到工作人員打斷了他的思緒:您覺得園區如何?要不要入住呀?先租幾個工位,招聘幾個人呢?

 

小馬想了想,說園區我很滿意,以后就在您這里創業了,創業開始,我先不招人,自己先干吧。

 

第二回:啟動公司有手冊,獲取內核當寶典

 

工作人員說:感謝您入駐咱們創業園區,由於您是初次創業,這里有一本《創業指導手冊》,在這一本叫BIOS的小冊子上,有您啟動一家公司的通用流程,你只要按照里面做就可以了。

 

 

小馬接過BIOS小冊子,開始按照里面的指令啟動公司了。

 

創業初期,小馬的辦公室肯定很小,只有有1M的內存辦公空間。在1M空間最上面的0xF0000到0xFFFFF這64K映射給ROM,通過讀這部分地址,可以訪問這個BIOS小冊子里面的指令。

 

創業指導手冊第一條,BIOS要檢查一些系統的硬件是不是都好着呢。創業指導手冊第二條,要有個辦事大廳,只不過小馬自己就是辦事員。因為一旦開張營業,就會有人來找到這家公司,因而基本的中斷向量表和中斷服務程序還是需要的,至少要能夠使用鍵盤和鼠標。

 

BIOS這個手冊空間有限,只能幫小馬把公司建立起來,公司如何運轉和經營,就需要另外一個東西——《企業經營寶典》,因而BIOS還要做的一件事情,就是幫助小馬找到這個寶典,然后讓小馬以后根據這個寶典里面的方法來經營公司,這個《企業經營寶典》就是這家公司的內核。

 

 

 運營一個企業非常的復雜,因而這本《企業經營寶典》很厚,BIOS手冊無法直接加載出來,而需要從門衛開始問起,不斷打聽這本內核的位置,然后才能加載他。

 

門衛只有巴掌大的一塊地方,在啟動盤的第一個扇區,512K的大小,我們通常稱為MBR(Master Boot Record,主引導記錄/扇區)這里保存了boot.img,BIOS手冊會將他加載到內存中的0x7c00來運行。

 

boot.img做不了太多的事情。能做的最重要的一個事情就是加載grub2的另一個鏡像core.img。

 

引導扇區就是小馬找到的門衛,雖然他看着檔案庫的大門,但是知道的事情很少。他不知道寶典在哪里,但是,他知道應該問誰。門衛說,檔案庫入口處有個管理處,然后把小馬領到門口。

 

core.img就是管理處,他知道的和能做的事情就多了一些。core.img由lzma_decompress.img、diskboot.img、kernel.img和一系列的模塊組成,功能比較豐富,能做很多事情。

 

boot.img將控制權交給diskboot.img后,diskboot.img的任務就是將core.img的其他部分加載進來,先是解壓縮程序lzma_decompress.img,再往下是kernel.img,最后是各個模塊module對應的映像。

 

管理處聽說小馬要找寶典,知道他將來是要做老板的人。管理處告訴小馬,既然是老板,早晚都要雇人干活的。這不是個體戶小打小鬧,所以,你需要切換到老板角色,進入保護模式,把哪些是你的權限,哪些是你可以授權給別人的,都分清清楚楚。

 

 

這些,小馬都銘記在心,此時此刻,雖然公司還是只有他一個人,但是小馬的眼界放寬了,能夠管理的內存空間大多了,也開始區分哪些是用戶態,哪些是內核態了。

 

接下來,kernel.img里面的grub_main會給小馬展示一個《企業經營寶典》的列表,也即操作系統的列表,讓小馬進行選擇。經營企業的方式也有很多種,到底是人性化的,還是強紀律的,這個時候你要做一個選擇。

 

 

在這里,小馬毫不猶豫選擇了《狼性文化》操作系統,至此grub才開始啟動《狼性文化》操作系統內核。

 

拿到了寶典的小馬,開始越來越像一個老板了。他要開始以老板的思維,來建立這家公司。

 

第三回:初創公司有章法,請來兄弟做臂膀

 

這注定是一個不眠夜,辦公室里面一片漆黑中,唯一亮着的台燈下,小馬獨自捧着《企業經營寶典》仔細研讀,讀着讀着,小馬若有所思,開始書寫公司內核的初始化計划。

 

 

 

 公司首先應該有個項目管理部門,咱們將來肯定要接各種各樣的項目,因此,項目管理體系和項目管理流程首先要建立起來。雖然現在還沒有項目,但是小馬還是弄了一個項目模板init_task這是公司的第一個項目(進程),是項目管理系統里面的項目列表中的第一個,我們能稱為0號進程這個項目是虛擬的,不對應一個真實的項目(也就是進程)。

 

項目需要項目管理進行調度,還需要制定一些調度策略。

 

另外為了快速響應客戶需求,為了各個項目組能夠方便使用公司的公共資源,還應該有一個辦事大廳。這里面可以設置了很多中斷門(Interrupt Gate),用於處理各種中斷,以便快速響應突發事件;還可以提供系統調用,為項目組服務。

 

如果項目接多了,為了提高研發效率,對項目內容進行保密,需要封閉開發,所以將來會有很多的會議室,因而需要一個會議室管理系統。

 

項目的執行肯定會留下很多文檔,這些是公司的積累,將來的核心競爭力,一定要好好管理,因而應該建立一個項目檔案庫,也即文件系統。

 

隨着思緒的展開,小馬奮筆疾書,已經寫了滿滿的幾頁紙,小馬頓感經營一個公司還是挺復雜的,一旦項目接多了肯定忙不過來俗話說好,一個好漢三個幫小馬准備找兩個兄弟來一起創業。

 

 小馬想到的第一個人,是自己的大學室友,外號周瑜“。大學一畢業,周瑜就轉項目管理了,在一家大公司管理着大型項目將來外部接了項目,可以讓他來管。小馬想到的第二個人,是自己上一家公司的同事,外號張昭,是他們總經理的好幫手,公司的流程人事財務打理得都輕輕楚楚,將來公司內部要運行的井井有條,也需要這樣一個人。

 

 

第二天,小馬請周瑜和張昭吃飯,邀請他們加入他的創業公司。小馬說,公司要正規運轉起來,應該分清內外,外部項目需要有人幫忙管理好——也就是用戶態,內部公司的核心資源也需要管理好——也就是內核態現在我一個人忙不過來,需要兩位兄弟的加入,周瑜主外,張昭主內,所謂內事不決問張昭,外事不決問周郎嘛。

 

三個人相談甚歡,談及往日友誼未來前景上市敲鍾……

 

 

第三天,周瑜早早來到公司,開始了他的事業。小馬拜托周瑜做的第一件事情是調用kernel_init運行1號項目進程)。這個1號項目會在用戶態運行init項目進程)。這是第一個以外部項目的名義運行的,之所以叫init,就是做初始化的工作,周瑜根據自己多年的項目管理經驗,將這個init項目立為標桿,以后所有外部項目的運行都要按照他來,是外部項目的祖先項目。

 

下午,張昭也來到了公司,小馬拜托張昭做的第一件事情是調用kthreadd運行2號項目進程)。這個2號項目是內核項目的祖先。將來所有的項目都有父項目祖先項目,會形成一棵項目樹。公司大了之后,周瑜和張昭做的公司VP級別的任務,就可以坐在塔尖上了。

 

 

好了,這一節小馬終於將公司的架子搭起來了,兄弟三人如當年桃園三結義一樣,開始自己的創業生涯,小馬的這家公司能不能順利接到項目呢?欲知后事,聽下回分解。

 

 

歡迎關注個人公眾號《劉超的通俗雲計算》

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM