天天看點

minix2.0核心組織結構與公用頭檔案說明

include/目錄包含了作業系統所有的頭檔案(即.h檔案)

src/目錄下包含了作業系統所有的源檔案(.c或.s檔案)

include/目錄下為posix标準頭檔案;

include/sys/目錄下為額外的posix标準頭檔案;

include/minix/目錄下為minix作業系統定義的頭檔案

src/kernel/目錄存放着minix作業系統第一層(程序管理)和第二層(裝置管理)的源代碼;

src/mm/目錄存放着minix作業系統第三層中記憶體管理子系統的源代碼;

src/fs目錄下存放着minix作業系統第三層中檔案管理系統的源代碼;

src/lib目錄下存放着minix作業系統使用的庫例程源代碼(e.g. open,read);

src/tools目錄下存放着init源程式,用于啟動minix;

src/boot目錄下存放着啟動和安裝minix作業系統的源代碼

minix os的主體是以c語言編寫的,在minix2.0的源代碼中,以“.c”結尾的檔案均為c語言源程式

minix的核心源代碼少部分是用彙編語言編寫的,其中大部分是關于中斷與異常處理的底層程式。在minix2.0源代碼中,以“.s”結尾的檔案均為彙編語言源程式

src/commands/ :包含公用程式(e.g. cat, cp, date, ls, pwd)的源代碼

src/test/: 包含有一些被設計用來對新編譯好的minix系統進行完整測試的工具(由于minix是一個用于教學的作業系統,這意味着對它常常要作修改)

src/inet/: 包含了重新編譯minix以使之支援網路的源代碼 

minix的内部結構:

minix被組織成4層,每一層執行一套定義得很完整的功能,這4層如下圖所示:

minix2.0核心組織結構與公用頭檔案說明

第1、2層的代碼位于src/kernel/下。第一層是minix核心的最底層,該層包括完成以下的功能函數:系統的初始化、中斷、消息傳遞以及程序排程。

以下頭檔案均在目錄include/下:

ansi.h: 用來檢測編譯器是否遵循标準c,如果是的話,_ansi就被定義為31415,如果不是的,則_ansi未定義。通過這個宏來診測。

limits.h: 定義語言類型(如整型)和作業系統(如字)的基本尺寸,提高了可移植性

errno.h: 定義了minix作業系統程式執行時可能出現的各種錯誤号

unistd.h: 包含了大量的重要常數和系統調用函數原型。

string.h: 包含了用于字元處理的函數原型

signal.h: 定義了所有的ansi和posix通用信号,minix支援所有的posix信号

fcntl.h: 定義了open()和fcntl()系統調用所需的各種參數和标志, 注意:create()已經過時。但是為了保持向後相容性,而提供。

stdlib.h: 定義了一些共用的宏、類型和函數原型

termious.h: 被controlling終端類型的使用

a.out.h: 描述了可執行檔案的格式

sys/types.h: 包含重要的類型定義

sys/ioctl.h: 聲明裝置的控制操作

sys/sigcontext.h: 定義了sigreturn(2)系統調用的所需的sigcontext結構

sys/sigptrace.h: 包含ptrace(2)系統調用所需的宏定義

sys/stat.h: 定義了stat()和fstat()系統調用所需的結構和宏

sys/dir.h:給出目錄結構的布局

sys/wait.h: 包含wait()系統調用所需的宏定義

minix/config.h: 設定了minix核心、記憶體管理子系統、檔案管理子系統的配置參數

minix/const.h: 定義了minix作業系統各部分共用的常量(宏定義)

minix/type.h: 定義了minix作業系統各部分公用的結構

minix/syslib.h: 聲明了系統庫函數的函數原型

minix/callnr.h: 定義了允許的系統調用号

minix/com.h: 包含記憶體管理子系統、檔案管理子系統和i/o任務所需的一些宏定義以及i/o任務号

minix/boot.h: 包含檔案系統所需的裝置宏定義以及boot程式傳遞給minix作業系統的參數

詳細分析  minix消息機制的核心:

mpx386.s  

start.c              

proc.c

保護模式分析:

src/kernel/exception.c

src/kernel/protect.c                  

src/kernel/klib386.s           

src/kernel/klib.s                               

src/kernel/main.c

src/kernel/misc.c

src/kernel/i8259.c

含了一些debug下的dump機制:

src/kernel/dmp.c

驅動相關代碼分析:

src/kernel/driver.h

src/kernel/driver.c

src/kernel/drvlib.h       

src/kernel/drvlib.c

winchester task 分析:

src/kernel/wini.c 

src/kernel/at_wini.c

時鐘分析:

src/kernel/clock.c

終端任務分析:

src/kernel/tty.h 

src/kernel/tty.c

 鍵盤任務分析:

src/kernel/keyboard.c

 控制台分析:

src/kernel/console.c

fs與kernel的接口以及mm與kernel接口sys_task

 src/kernel/system.c

繼續閱讀