我理解之windows的核心物件

2021-05-23 23:37:44 字數 1325 閱讀 3320

作為乙個程式設計師,其實任何東西我都想從程式的角度去思考它.因此,在我看來,核心物件就是乙個結構體,乙個struct.但它又不是普通的結構體,說它不普通是因為:

1.它是由核心維護的.

2.它只能被執行在核心模式下的**訪問,從寫**的角度而言,就是只能通過windows提供的api來訪問它.

我們編寫乙個程式時,有時需要通過一些全域性的變數來達到各個函式共享的目的,其實核心物件在一定程度上就相當於這個全域性變數,把作業系統看作乙個主程式,作業系統核心通過管理這些核心物件來使各個程序正常運作.綜上,核心系統的作用有以下幾個:

(1)為系統資源提供可識別的名字。

(2)在程序之間共享資源和資料。

(3)保護資源不會被未經認可的**訪問。

(4)跟蹤物件的引用情況。這使得系統知道什麼時候乙個物件不再被使用了,以便釋放

要更好地理解核心物件的作用,就需要多動手編寫windows方面的多執行緒程式,個人認為這樣理解起來更容易些

下面通過乙個核心管理的執行緒核心物件來進一步理解核心物件的意義和作用:

執行緒核心物件就是乙個包含了執行緒狀態資訊的資料結構。每一次對createthread 函式的成功呼叫,系統都會在內部為新的執行緒分配乙個核心物件。系統提供的管理執行緒的函式其實就是依靠訪問執行緒核心物件來實現管理的。下面列出了這個結構的基本成員:

執行緒核心物件(thread kernel object)

context (上下文,即暫存器的狀態)

eaxebx

其他cpu 暫存器

usage count 使用計數(2)

suspend count 暫停次數(1)

exit code 退出**(still_active)

signaled 是否受信(false)

建立執行緒核心物件的時候,系統要對它的各個成員進行初始化,上面括號裡的值就是各個成員的初始值.系統就是通過這個核心物件的各個成員來管理線各的.

下面通過講述上下文和使用計數這兩個成員的作用來說明核心物件的作用

1.執行緒上下文context

每個執行緒都有他自己的一組cpu 暫存器,稱為執行緒的上下文。這組暫存器的值儲存在一

個context 結構裡,反映了該執行緒上次執行時cpu 暫存器的狀態。

2.使用計數usage count

usage count 成員記錄了執行緒核心物件的使用計數,這個計數說明了此核心物件被開啟的

次數。執行緒核心物件的存在與usage count 的值息息相關,當這個值是0 的時候,系統就認為

已經沒有任何程序在引用此核心物件了,於是執行緒核心物件就要從記憶體中撤銷。

通過以上分析,可以很容易理解核心物件就是乙個系統定義的用來管理各種資源的使系統正常執行的資料結構而已.

我對SNS我理解

模仿也要做得比真的還好,比如qq,它的業務包括客戶端都是模仿別人的,但能做得像它那樣,的確不容易。sns在國內肯定能火的,不過現在的sns 只是太跟風了,沒有了自己的特點,很多的sns 很難看出它到底還是不是sns,或者它到底去哪個方向?自己都沒有弄清楚。所以sns在國內是很有機遇的。其實在當前經濟...

對windows更多的理解

1.可以通過ssh登陸到windows的命令列,前提條件是安裝了ssh伺服器 2.windows的遠端桌面連線程式,可以讓你登陸到另一台電腦上去。mstsc.exe 在控制面板中可以設定關閉或開啟該功能。3.通過命令列進行網路設定 我一直想知道windows的網絡卡名稱是什麼?最後終於知道了,win...

我對linux理解之input一

我們先看下input的註冊過程 input register device input dev int input register device struct input dev dev if dev getkeycode 如果沒設定,則設定成預設的 dev getkeycode input de...