進程的基本組成

來源:互聯網
上載者:User

 在進階程式設計語言程式中,直接使用了變數與資料類型,很少再去關心記憶體的處理與結構.編譯好之後的程式在初次運行時將會被初始化裝入虛擬記憶體中,並且,作業系統把每個進程的虛擬記憶體空間都進行了分隔處理,非同一進程不允許相互操作對方進程空間裡的記憶體資料.

 

在外掛設計中,為了能夠達到操控目標程式,除了視窗控制代碼外,進程ID是記憶體是操作至關重要的,本章的教材將圍繞著記憶體操作的這一主題進行

??? 本節的內容是對記憶體方面與周邊的一些名詞術語進行簡要說明

    進程 在一個EXE可執行程式軟體被運行時,Windows作業系統為這個程式初始化一個進程的結構用於運行和管理用。一個進程裡有包含了很多的資訊與資料,Windows作業系統上可以同時運行很多的軟體,所以,系統為每個建立的進程結構都會有些不同,而且為了防止進程之間會產生相互幹擾,為每個進程都進行了隔離操作。

 

    進程ID 或稱進程標識,進程ID是用來代表一個進程,指向這個進程用的.可以通過一個進程ID得到該進程的一些相關資訊

 

    進程控制代碼 作業系統把每個進程都進行隔離處理,如果想要操作別的進程則需要開啟那個進程ID,得到一個可以操作那個進程的控制代碼,即.進程控制代碼

 

    進程許可權 在一個程式被初始化運行時,作業系統會根據情況給它設定了一種許可權,這種許可權將直接關係到這個進程可以去做哪些事務不可以做哪些事務,如一個普通許可權的進程,是無法開啟另一個高許可權的進程去擷取他的進程控制代碼.一所做出來的程式軟體都是這種普通許可權的。

 

    線程ID 進程只是一個結構,就像是一個容器,用來裝載資料與一些資訊用.真正在執行代碼功能的叫線程,線程ID或線程標識就是指這個線程.同樣的,在一個進程裡會至少有一個線程或同時有多個線程。只一個線程的叫做單線程,若進程裡同時有多個線程存在的話叫做多線程。對於多線程的情況下,其中有一個是主線程。

 

    線程控制代碼 若想對一個線程進行操作,如開始,暫停,結束一個線程的話,則必需要得到這個線程的控制代碼才可以進行這些操作

 

    虛擬記憶體 一個軟體執行後,會用到很多的資料,這些資料都是被裝載在該程式的進程空間的虛擬記憶體中.虛擬記憶體實際上也是在硬碟上的,作業系統會根據當前正需要處理到需要的資料時,再把這些資料裝入實體記憶體中進行操作。操作完後,再存回到虛擬記憶體中。使用這種方式,可以在有限的實體記憶體電腦上運行體積超過實體記憶體的那些遊戲或其它軟體

 

    記憶體指標 一個軟體在初始化運行時,作業系統為會該軟體的進程分配4GB的虛擬記憶體空間用來存放資料.在這麼大的一個虛擬記憶體中,是用記憶體指標來進行定位的,可以通過記憶體指標所指向的記憶體位址方便的找到虛擬記憶體中需要的資料

 

    變數指標 進階程式設計語言裡都是通過變數來管理軟體運行時記憶體中的資料,並不直接提供這個變數在虛擬記憶體中居體的位置,這裡我們可以使用一些手段,得到一個變數在虛擬記憶體中的位置,可以把這個位置稱為變數指標

 

    子程式指標 在程式碼中編寫的子程式,在軟體運行時裝入虛擬記憶體後,該子程式的第一條指令處所在的虛擬記憶體地址,也被稱為子程式指標

 

    模組控制代碼 這裡的模組不是指外掛作坊模組,這裡的模組是指在被裝入虛擬記憶體中的一些檔案,如那個執行程式EXE檔案或其它的一些DLL檔案,這些檔案在這個進程的虛擬內中的記憶體位址也是模組控制代碼相同的

 

    函數入口 函數入口與子程式指標同一個意思

 

    記憶體位移量 簡稱位移量或記憶體位移等.位移量是相對於原一個記憶體位址而言,一個記憶體位址+位移量=另一個記憶體位址, 如有兩個記憶體位址分別是 65560 與 65800  計算 65800-65560=240 這裡的240就是位移量,因為它並不是一個直接指向某處記憶體的記憶體位址,它需要與一個記憶體進行進行相加而得到另一個記憶體位址 如 65560 + 240 = 65800 即 記憶體位址 + 位移量 = 另一個記憶體位址   或  65800 - 240 = 65560 即 記憶體位址 - 位移量 = 另一個記憶體位址

 

上面的(記憶體指標,變數指標,子程式指標,模組控制代碼,函數入口)指的都是記憶體中的某處地址,即記憶體位址,該地址是一個佔用4位元組長(4位元組=32位)的正整數型數值

 

在記憶體操作裡,要注重的是某項資料在記憶體中的長度。一般常見的長度可以參考下面的

1GB = 1024MB

1MB = 1024KB

1KB = 1024位元組

1位元組 = 8位

上面是一些常見的資料間的進位長度

 

在進階語言裡並不讓我們直接對記憶體中的資料以這樣的長度進行管理,而是直接使用資料類型進行管理與組織,常見的一些資料類型在記憶體中所佔的長度可以見下面

位元組型 = 1位元組 = 8位

短整數型 = 2位元組 = 16位

整數型 = 4位元組 = 32位

長整數型 = 8位元組 = 64位

雙精確度小數型 = 8位元組 = 64位

文本型 通常沒有固定的長度,是以位元組 0 為結尾

位元組集型 通常也沒有固定的長度,長度由軟體自動管理

也有些自訂的資料類型與陣列變數在記憶體中的佔用長度是按每個成員的資料類型長度加起來的

座標型 = 8位元組 = 64位 是由兩個整數型變數橫與縱所組成的

動態整數型陣列變數將是這個變數的每成員4位元組乘以這個動態數組的數群組成員數

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.