Windows DLL在目標程序中的描述(1)

2021-04-26 13:22:12 字數 1090 閱讀 5550

linux

上每乙個程序都有乙個程序控制塊,與程序或執行緒有關的資訊大都儲存在這個資料結構中。而

windows

則有所不同。首先

windows

的程序和執行緒各有不同的資料結構來描述,從概念上把程序和執行緒分離開。其次,

windows

又把本可集中儲存的程序資料結構也拆分成好幾個物件,有的在系統空間裡,有的在使用者空間裡。

系統空間裡與程序有關的資料結構有: 1.

eprocess

:即struct_eprocess

,表示windows

裡的乙個程序。e表示

executive

,執行體的意思。 2.

kprocess

:是eprocess

內的乙個部分,也就是常說的

pcb。 3.

win32process

:使用者空間有個「

windows

子系統」的服務程序

csrss

。這個服務程序為

windows

中的每個應用程序都維持著乙個資料結構,其中包含了一些與視窗和圖形介面的資訊。而有關視窗和圖形介面的操作,原來也是由

csrss

在客戶程序的請求下完成的。後來為了提高效率,把這部分功能移到了核心中,與此相應的資料結構也移動到了核心中,就成了現在的

win32process。

使用者空間裡與程序有關的資料結構:

1.如上所述,由於將

win32process

移進核心空間以後,

csrss

仍然需要為每個程序保留一些資訊。所以

csrss

內部仍有一些與程序有關的資料結構。 2.

peb:

process environment block

即程序環境塊。其中記錄著程序的執行引數,映像裝入位址等等資訊。

peb在使用者空間中的位置是固定的,總是在

0x7ffdf000。

以上就是

windows

中與程序相關的資料結構。可以看出,與我所研究的

dll載入資訊應該儲存在

peb中。

在程序間切換

在前面了解過,執行在作業系統上的多個程序可以併發執行,而程序的併發就需要程序間進行切換。作業系統完成程序的切換,問題來了 當乙個程序正在執行,作業系統怎麼獲得cpu的控制權 通過yield系統呼叫 這個系統呼叫只是將cpu的控制權交給作業系統。或者當程式發生異常時,會陷入作業系統,作業系統再次控制c...

Mac在終端檢視程序 殺死程序

在不知程式埠號的情況下 這樣搜尋好像會搜尋出另外的同名執行緒,我也不是很清楚 ps axu 本機名 grep 程式名 ps axu shuchan grep mysql 我的本機名是 shuchan,要查詢的程式是mysql,有的程式名區分大小寫 示例 sc shuchan ps axu shuch...

在中軟的工作發展目標

來中軟的第9天,在此梳理一下工作目的和期望收穫 一 架構師方向 1.學習現有的架構核心 2.研究構建工具原理和表單生成器的原理 3.gis方向的開發與應用的了解 4.學習移動終端的開發 5.學習部署linux和unix伺服器以及相關工具 二 設計師方向 1.在專案中所應用到的uml建模設計 2.資料...