fbpx

從零開始開發一個多執行緒的核心!

用互動式 shell 建構一個多工的作業系統和核心!

報名參加課程更新 coupon code

從這 28 小時的課程,你會學到

  • 如何從頭開始建立一個核心
  • 如何建立一個多工的核心
  • 如何處理作業系統中的惡意或有問題的程式。如果它們行為不端,就終止它們
  • 電腦中的記憶體如何工作
  • 核心地區、使用者地區和構成現代計算的保護環之間的區別
  • Linux 核心本身使用的核心設計模式
  • 你將學習所有關於虛擬記憶體的知識,以及如何將虛擬位址對映到實體位址上
  • 你將學習如何使核心理解行程和任務
  • 你將學習如何載入ELF檔案
  • 你將學習如何除錯反組譯過的機器程式碼
  • 你將學習如何用 GDB 在模擬器上除錯你的核心。

要求

  • 你必須瞭解C語言程式設計
  • 有一些組合語言的基礎知識是明智的
  • 你應該有一個Linux作業系統,可以從網際網路上免費安裝(本課程中我們使用Ubuntu)。

課程說明

本課程旨在教你如何從頭開始建立自己的多工作業系統和核心。假設你沒有核心程式設計的經驗,你將從頭開始學習。

真實模式( real mode )的開發

真實模式是所有英特爾處理器中的一種傳統模式,它使處理器以一種傳統的狀態啟動,它的效能就像以前的8086英特爾處理器那樣。

在課程的 “真實模式開發 “部分,我們首先學習了啟動流程和記憶體的工作原理,然後我們繼續建立我們自己的啟動載入器,並在我們的真實機器上進行測試。這個 Boot Loader 將向螢幕輸出一個簡單的 “Hello World!”資訊,我們用純組合語言編寫這個 Boot Loader。

在這一節中,我們還從硬碟上讀取了一個扇區(512位元組),並學習了所有關於真實模式下的中斷以及如何建立它們。

這一節給你提供了一個很好的核心開發的嘗試,但沒有給你提供過多的資訊。你會學到基礎知識和足夠多的關於傳統處理器的知識,從而能夠在本課程中進一步進入更現代的核心開發。

受保護模式的開發

在這一節中,我們建立一個32位元的多工核心,它具有FAT16檔案系統。我們的核心將使用英特爾內建的記憶體保護和安全機制,使我們能夠指示處理器保護我們的核心,防止使用者程式破壞它。

這一節是非常深入的,你會學到所有關於分頁和虛擬記憶體的知識。我們利用英特爾處理器中聰明的指令,讓所有行程共享相同的記憶體地址,這被稱為記憶體虛擬化。我們將記憶體地址對映到不同的實體記憶體地址,以創造一種錯覺,即每個正在執行的行程都在同一地址載入。這是核心開發中非常常見的技術,也是交換檔案的工作方式(那些用於補償當你用完可用記憶體的檔案)。

我們建立了自己的虛擬檔案系統層,採用了與Linux核心相似的設計。將要教給你的這個聰明的抽象是受導師過去編寫Linux核心驅動程式的知識啟發。

我們會教你FAT16檔案系統的設計,以及FAT16檔案系統是如何被分解成群組的,並且它們可以連鎖起來。然後,我們實現我們自己的FAT16檔案系統驅動程式,允許檔案誕生

我們為任務和行程實現功能,並編寫我們自己的鍵盤驅動程式。

在本課程中,你還可以瞭解到記憶體管理是如何工作的,我們實現了 “malloc “和 “free “函式,建立了我們自己的 heap,旨在跟蹤正在使用的記憶體。記憶體管理在任何作業系統和核心中都是必不可少的。

讓我們不要忘記,我們甚至建立了一個ELF檔案載入器,我們將把所有的作業系統程式編譯成ELF檔案,並允許載入二進位制程式或ELF程式。ELF檔案包含很多描述我們程式的資訊,例如,我們的程式應該被載入到哪裡,以及程式的不同部分。

在本課程結束時,你將擁有一個功能齊全的32位多工核心,可以同時執行許多行程和任務。你還將擁有一個我們可以使用的工作外殼。

組合語言獎勵

如果你對本課程中的組合語言有一點掙扎,這是一個額外的部分,旨在將你的除錯技能提升到新的水平。然而,我們建議你在學習本課程時要有組合語言的經驗,我們確實使用它,而且它很重要。儘管如此,如果你想在沒有除錯經驗的情況下參加這個課程,那麼本節將幫助你指出正確的方向,這樣你就能把你學到的東西應用到核心中。

由一位在工作中專業建立Linux核心模組的專家講授。

目標受眾

  • 想學習如何建立核心的初級核心開發者

講師簡介

Daniel McCarthy 業餘時間的編譯器開發者

我是一名軟體工程師,已經有14年以上的程式設計經驗。我的經驗非常豐富,包括從 Web 開發到編譯器和直譯器的開發。我還開發了可以從FAT(檔案分配表)檔案系統啟動的載入程式和核心。

我已經開發了兩種自己的程式語言。一種是叫 Craft 語言。另一個叫 Marble,是一種類似於PHP的網路語言。我目前正在開發一個C語言編譯器。

我有以下程式語言的經驗。C, C++, Java, x86組合語言, PHP, HTML5, JAVASCRIPT, CSS, Craft, Marble

我還曾在工作場所對Linux核心模組進行專業程式設計。

這些天,我專注於為學生提供我多年的專業知識,幫助他們成長為專業的軟體工程師。

英文字幕:有

  • 想要了解如何將英文字幕自動翻譯成中文? 請參考這篇 How-To

報名參加課程更新 coupon code

Sponsored by Udemy


追蹤 Soft & Share

✍ 不受社群推薦演算法影響,建議 Telegram/Discord/e-mail

幫我們個小忙!

Comments are closed.

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: