1. Nx bit、privilege權限... 在哪一層page table使用到?
2. 使用 virtual address的優缺點
3. virtual address 和physical address的差異?
4. page frame是甚麼?
5. system call 是甚麼?
6. copy_from_user()和copy_to_user()是甚麼? 怎麼運作的?
7. page fault 甚麼時候會發生
8. process & thread 差異
1. fork() 再kernel裡是用甚麼system call
2. process & thread 差異
3. page frame 是什麼
4. mm_struct在哪裡?marco是甚麼?current->mm
5. make 三條組合包 make & make modules_install & make install
6. page table 在哪?
7. MMU在做什麼?
8.
open()
, read()
, write()
, close()
fork()
, execve()
, exit()
, wait()
fork 本身並不是直接用Macro來定義的,而是通過system call 的方式來實現。fork() 是一個system call,用於創建一個new process,該process是當前進程的copy
kernel 中的fork
SYSCALL_DEFINE0(fork) {
// fork 的內部實現
return do_fork(SIGCHLD, current->mm, current->files, current->fs);
}
do_fork()
function的作用
task_struct
:為新進程分配一個 task_struct
結構體,這是kernel用來表示進程的數據結構。這個結構體包含了進程的 PID、狀態、記憶體資訊等。make localmodconfig
的主要功能是掃描當前運行系統中的已加載模組(loadable module),並根據這些模組生成一個內核配置文件 config
,僅啟用與當前硬體和設備相關的模組。這樣生成的配置文件可以用來編譯出一個精簡的內核。
make
指令會根據 .config
文件的配置編譯 Linux Kernel。make 主要包含:
.config
的設定,編譯出kernel modules所有編譯好的kernel module 安裝到系統的模組目錄中,像是/lib/modules/<kernel-version>/
安裝內核映像、System.map 和配置文件到 /boot,並更新引導加載器的配置,使系統可以引導新內核。