linux 0 11 原始碼學習(九)

2022-02-21 01:29:17 字數 799 閱讀 4649

fork.c

fork.c 是建立程序的功能實現,其核心函式式copy_process,被系統函式sys_fork(定義在system_call.s中)呼叫。因此原始碼學習從sys_fork開始,**如下:

sys_fork:

call

find_empty_process //是否還能夠建立程序,0.11預設最大程序數為64

testl %eax,%eax

js1f

push

%gs pushl %esi

pushl %edi

pushl %ebp

pushl %eax

call

copy_process //呼叫copy_process

addl $

20,%esp //考慮入參在堆疊的長度

1: ret

copy_process函式原型:

int copy_process(int nr,long ebp,long edi,long esi,long gs,long

none,

long ebx,long ecx,long

edx,

long fs,long es,long

ds,

long eip,long cs,long eflags,long esp,long ss)

主要工作如下:

遺留問題:類似copy_process這樣的系統呼叫,引數是怎麼傳的??

linux 0 11 原始碼學習(六)

main.c main函式其實是核心的初始化,如果把核心功能比作業務軟體的話,就相當於是業務的初始化,從該檔案的資料夾歸屬 init資料夾 也可以看出這一點。main主函式很短,從 中可以基本看出整個核心的功能模組,如下 void main void for pause 注 在linux中fork乙...

linux 0 11 原始碼學習(五)

head.s head.s 是系統模組的入口,其編譯器已經是gnu彙編,但從功能上將仍然屬於核心啟動階段,主要的功能是對386 cpu的初始化,如使用者堆疊 idt gdt和頁表。因此從資料夾的歸屬看,它仍然放在boot資料夾中,與bootsect和setup一塊。head.s的核心功能 簡單的暫存...

linux 0 11 原始碼學習(十三)

字元裝置驅動 在linux 0.11版本中,字元裝置驅動原始碼分為三塊 向上暴露的字元裝置驅動介面tty io.c與tty ioctl.c,與塊裝置驅動一樣,在字元驅動檔案 read write.c 操作中被呼叫 實現串列埠的驅動rs io.s和serial.c 實現鍵盤驅動的keyboard.s以...