當前位置:編程學習大全網 - 源碼下載 - Xv6源代碼

Xv6源代碼

綜合起來,效果會好很多。

書籍大多是關於理論的。可以自己找個開源的嵌入式OS,壹起看代碼實現,會好很多。比如FreeRTOS也可以買壹本書,學會編譯,在電腦裏作為應用運行,學會創建自己的流程和協作,然後進入相應的API實現看看。內核調度、優先級、內存管理、資源管理、搶占式任務切換等等。

選擇嵌入式操作系統是因為它足夠小。畢竟為了這件事看Linux源代碼是個大坑。FreeRTOS擁有大多數現代OS的各種核心功能,是學習的好榜樣。我是在學習了FreeRTOS之後,才在幾年前逐漸把操作系統的知識變得靈活起來的。

舉幾個例子,在FreeRTOS中的實現:

1.線程管理:

為每個線程建立壹個私有棧,每次在線程中調用任何函數,所需的參數傳遞,局部變量等。放在線程私有堆棧中。以便線程之間不會混淆。壹般棧都有壹個最大長度值,避免浪費太多內存,同時也把遞歸限制得太深。OS應用程序有必要在開始時估計調用堆棧的深度。

2.內存管理:

壹般是先從物理內存申請壹大塊內存,建立這個內存塊的分配表。只要有應用的內存,就會記錄壹個,剩余的內存會在內存釋放的適當時候合並。分配策略有很多,比如按順序,或者優先分配滿足條件的最小空閑段。每個線程都構建自己的堆,這有助於提高內存分配的效率。

3.進程/線程切換:

使用系統硬件上的定時器,硬件中斷會定期發生,此時當前進程/線程會停止,所有寄存器都保存在進程私有堆棧中。在兩次中斷之間實際執行的任務代碼部分稱為時間片。然後調用中斷處理程序。這個中斷處理程序就是OS內核中的任務切換功能,它會重新選擇就緒狀態下優先級最高的任務來運行。因此,理解並實現這個中斷處理函數是理解任務切換的關鍵。放心,代碼不長。

4.操作系統內核調用:

現代CPU,包括壹些嵌入式MCU,會嚴格區分用戶空間和內核空間。兩者的資源相對獨立,甚至棧也不壹樣。當用戶應用程序需要調用內核提供的服務時,通常會將內核調用符號、參數和想要調用的返回值放在內存中的指定位置,然後觸發壹個軟件中斷。比如Cortex-M系列SVCall,或者DOS 80中斷。此時,切換到內核模式。這種模式下的中斷處理程序會根據系統調用內容分發調用請求,執行後根據返回地址跳回。

我推薦6.828/秋季2014。往年的視頻也很容易找到。本課程將接觸到兩個小型操作系統:xv6和jOS。課上主要講xv6,壹個小型的unix操作系統。課程實驗室分為6~7個階段供妳填寫jOS的關鍵代碼。

這門課的優勢是理論加實踐,課程節奏很好。

比如系統調用之後,可以嘗試給xv6添加壹個定時器調用;說完了線程,可以嘗試給xv6添加壹個系統調用,然後讓這個系統支持線程。...

實驗室實現的jOS和xv6之間有許多不同的設計決策。通過對比可以更好的理解什麽是操作系統。當然,自己寫壹些代碼(如何將理論轉化為實踐)會很不壹樣

壹些經驗:

作業可能比實驗室更有啟發性(我是這麽認為的);

如果妳看過CSAPP就最好了,不用學匯編,會寫shell,會理解內存。

6.828有壹個作業提交系統,只要有郵箱就可以註冊,然後可以互相評價對方的實驗室。...

等妳有了自己的壹些經歷之後,再結合書本去讀,可能就完全不壹樣了。

  • 上一篇:美人胚子的標準是什麽
  • 下一篇:武俠江湖源代碼
  • copyright 2024編程學習大全網