CreateProcess 流程
Stage 1: opening the image to be executed
1. 開啟 image file,看看它要由哪個 subsystem 處理 (Win32 or POSIX or OS/2)
2. 建立一個 section object 對應到該 image file
Stage 2: creating the windows executive process object
呼叫 NtCreateProcess 來建立 windows executive process object,這個步驟會設定 EPROCESS 及 KPROCESS block,產生 process address space…等
Stage 3: creating the initial thread and its stack and context
產生 ETHREAD block,並分配 stack
Stage 4: notifying the windows subsystem about the new process
由於 process 由各 subsystem 管理,這個步驗會將 process exception port 設成 subsystem 的 general function port,如此 subsystem 就可以知道 process exception。這邊還會分別產生 subsystem 的 process block 及 thread block?
Stage 5: starting execution of the initial thread
這個時候 process environment 已經好了,process/thread 的資源也已建立,subsystem 也知道這個 new process。此時原本呼叫 CreateProcess 的 thread 恢復執行
Stage 6: performing process initialization in the context of the new process
當 context switch 到 new process 時,process (thread) 就會開始執行,它就會去檢查是否已有 prefetch 過、載入相關 DLL…等的工作
留言
張貼留言