乙個正在執行的程式例項。它由兩部分組成:
乙個核心物件,作業系統用核心物件管理程序,核心物件是儲存程序統計資訊的地方。
乙個位址空間,它包含所有exe,dll模組的**和資料,還有動態記憶體分配,比如執行緒堆疊和堆的分配。
乙個程序內的所有執行緒,都在程序的位址空間中同時指向**。執行緒有一組cpu暫存器和它的堆疊。
當系統建立乙個程序的時候,會自動為程序建立第乙個執行緒,即主線程(main函式開始)。當執行緒執行完**,執行緒就結束,主線程結束,系統會銷毀程序收回位址空間。
系統為執行緒的執行分配cpu時間,系統核心排程管理執行緒。
系統在春感覺乙個程序時,會傳乙個命令列給它。
每個程序都有乙個與它關聯的環境塊,是在程序位址空間裡分配的一塊記憶體,其中包含鍵值對的字串。
getcurrentdirectory 程序所在的硬碟目錄;
建立乙個程序核心物件,來管理每個程序
如何利用與程序關聯的核心物件來操縱該程序
程序的特性(屬性),如何查詢和更改這些特性
如何建立新程序
四種終止程序的方式:
只有這樣,才能保證主線程的所有資源都被正確清理。
exitprocess和exitthread函式,就作業系統而言,這樣做沒有什麼問題,程序和執行緒的所有作業系統資源都會被正確清理。 不過,立即結束,c++執行庫也許不能執行清理工作。也許會造成記憶體洩漏和其他資源洩漏。不能將記憶體資料flush刷到磁碟上。但是程序結束後,****存資源都會被作業系統收回。
雖然程序沒有機會執行清理工作。但作業系統彙總程序終止後,徹底清理。確保不會洩漏任何作業系統資源。這意味著程序使用的所有記憶體都會被釋放。所有開啟的檔案都會被關閉,所有核心物件的使用計數都將遞減。所有使用者物件和gdi物件都會被銷毀。
一旦程序終止,不管怎麼終止的,系統都會保證不留下它的任何部分。程序在終止後絕對不會洩漏任何東西。
terminateprocess函式是非同步的,函式返回時,只代表已經告訴系統,不代表程序已經被系統終止,如果要等待需要呼叫waitforsingleobject。
wondows提供了:
動態資料交換dde,ole,管道,郵件槽等方式,在不同程序間傳遞資料。
用getexitcodeprocess得到子程序的退出碼。
這意味著,父程序不再與子程序通訊。父程序不用關心它建立的程序,等待它結束後再執行。、
為了斷絕關係,父程序必須呼叫closehandle來關閉新程序及其主線程的控制代碼。:
bool fsuccess = createprocess(... , &pi);
if(fsuccess ){
closehandle(pi.hthread);
closehandle(pi.hprocess);
windows的提權只能在程序邊界上提公升。
uac如何判斷該採取什麼操作?
應用程式的可自行檔案,嵌入了一種特殊資源:rt_manifest,清單檔案,lecel有三個值。.manifest檔案。
手動提公升許可權,使用shellexcuteex函式建立程序提權。
令牌gettokeninfomation函式獲取令牌。
作業系統(Linux與Windows)的程序管理
描述和管理程式的 執行過程 程序 定義 程序是程式在某個資料集合上的一次執行活動 程序狀態的變遷 程序的掛起和解掛操作 掛起 使用者或os將程序有意暫停 解掛 將掛起的程序繼續 阻塞 禁止阻塞 阻塞時掛起 和活動阻塞 正常阻塞 就緒 禁止就緒 就緒時掛起 和活動就緒 正常就緒 1.描述程序狀態 資源...
windows作業系統
1.檢視埠 netstat ano netstat ano find 2檢視程序 tasklist 3.刪除程序 tskill 4.開啟程序管理器 taskmgr 5.ping 6.ipconfig all 7.f 8 cd cd.9.mkdir rmdir linux rm rf 10.dir 列...
作業系統 程序
在作業系統中,作業系統將記憶體,網路,檔案系統抽象為資源的統一抽象表示。1 什麼是程序 程序就是進入記憶體中正在執行的程式。把程序當做一組元素組成的實體。程序包括兩個部分,一部分是 部分,另一部分是 相關的資料集合。程序控制塊 每乙個程序,在核心中都對應著乙個程序控制塊。程序控制塊中儲存著程序的所有...