我們的原始碼選用的是linux0.11版本,因為這個版本簡單好學,我們將以這個版本為基礎學習linux的基本體系結構。
boot為啟動相關的**,用彙編寫的
init是核心啟動的**
fs是虛擬檔案系統
mm記憶體管理
參考核心映像檔案的組成
我們的核心映象檔案儲存在硬碟上,由bootsect.s編譯的二進位制**放在最前面,而且在啟動盤的第乙個扇區(512位元組),接著是setup.s,放在接下來的4個扇區(2kb)中,接著是head.s,接著是核心其他**編譯的二進位制檔案。
bios啟動完畢後,cpu的pc=0x7c00,記憶體0x7c00處存放的是bootsect.s。在這個**裡,其將自己移動到0x90000處,接著跳轉到0x90000處執行,下一步將setup.s和head.s分別載入到0x90200處和0x10000處,接著跳轉到0x90200處開始執行setup.s程式。在setup.s中會用到bios的中斷向量表獲取機器的一些引數,等獲取完這些引數,會將head.s移動到0x0000處。程式跳轉到head.s執行,head.s又呼叫了main.c,繼續執行接下來的核心初始化過程。
過程如下圖:
MySQL(四)原始碼安裝
原始碼安裝 mysql boost 5.7.14.tar.gz 2 安裝開發工具和開發包 root mail yum install gcc c cmake ncurses devel 3 編譯安裝mysq 3.1 解壓 tar xf mysql boost 5.7.18.tar.gz c usr ...
kernel原始碼學習 程序
linux使用上百個雙向鍊錶來儲存核心的各種資料結構,其中包括程序描述符的task struct結構.cpp struct list head 在list.h中,形如 的函式用來操作整個鍊錶,而不是單個鍊錶元素.程序從pid得到程序描述符pd要一種高效的方法,提到高效方法,那就用雜湊表啦.核心在這兒...
Android FM模組學習之四原始碼分析(八)
調整頻率位置狀態構造方法 public presetstation string name,int frequency 設定頻率 public void setfrequency int freq return 構造方法 public presetstation presetstation stat...