linux核心分析之fork c

2021-04-20 09:07:35 字數 1072 閱讀 2220

#include

#include

#include

#include

#include

申明外部呼叫函式,驗證位址所指向的頁面是否可寫

extern void write_verify(unsigned long address);

全域性變數,用於產生可用的程序id

long last_pid=0;

對指定起始位址和長度進行驗證

void verify_area(void * addr,int size)

return 0;

}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)

由於子程序複製了父程序的檔案描述符,所以需要將i節點的應用增加1

for (i=0; ifilp[i])

f->f_count++;

if (current->pwd)

current->pwd->i_count++;

if (current->root)

current->root->i_count++;

if (current->executable)

current->executable->i_count++;

在全域性描述符表中設定新程序的任務狀態描述符和區域性描述符表

set_tss_desc(gdt+(nr<<1)+first_tss_entry,&(p->tss));

set_ldt_desc(gdt+(nr<<1)+first_ldt_entry,&(p->ldt));

設定新程序的狀態為可排程的狀態

p->state = task_running; 

return last_pid;

}在任務槽中查詢可用的任務槽

int find_empty_process(void)

linux核心分析之sys c

include include include include include include include 這個檔案中包含了絕大部分系統呼叫函式的實現,如果系統呼叫在該核心版本中沒實現,就直接返回enosys int sys ftime int sys break int sys ptrace ...

Linux核心分析之課程總結

linux 核心分析 mooc課程 簡單總結每個章節掌握到的一些知識點 儲存程式計算機 所有計算機基礎性的邏輯框架 堆疊 高階語言的起點,函式呼叫需要堆疊機制 中斷機制 多道系統的基礎,計算機效率提高的關鍵 system call是linux中所有系統呼叫的入口點,每個系統呼叫都至少需要有乙個引數,...

Linux核心分析

從根本上看,核心是為了管理好程序來設計的,需要建立各種結構體來描述程序管理過程中需要用到的一切。首先,為什麼要劃分核心空間與使用者空間,出於安全的考慮,需要把使用者程式與核心隔離,這就帶來各種複雜性的東西,當然這是值得的。對於模組與模組的互動,使用者通過系統呼叫進入核心,這裡又包含中斷管理,異常管理...