第四章 程序
1、程序通常被定義為乙個正在執行的程式的例項,它由兩個部分組成:
1)乙個是作業系統用來管理程序的核心物件。核心物件也是系統用來存放關於程序的統計資訊的地方。
2)另乙個是位址空間,它包含所有可執行模組或dll模組的**和資料。它還包含動態記憶體分配的空間。如執行緒堆疊和堆分配空間。
2、若要使程序完成某項操作,至少得擁有乙個執行緒,該執行緒負責執行包含在程序的位址空間中的**。當建立乙個程序時,系統會自動建立它的第乙個執行緒,稱為主線程。單個程序可能包含若干個執行緒,每個執行緒都有一組cpu暫存器和堆疊。若要使所有這些執行緒都能執行,作業系統在單個cpu計算機上用一種迴圈方式為各個執行緒提供時間片。
3、windows支援兩種型別的應用程式:一種是基於圖形使用者介面(gui)的應用程式,另一種是基於控制台使用者介面(cui)的應用程式。
1)基於gui:有乙個圖形前端程式。它能建立視窗,擁有選單,可以通過對話方塊與使用者打交道,並可使用所有的標準windows元件,如notepad、calculator和wordpad。鏈結程式開關是
subsystem:windows。
2)基於cui:屬於文字操作的應用程式。它不能用於建立視窗或處理訊息,並且不需要圖形使用者介面。它包含在螢幕上的視窗中,但視窗只包含文字。如命令外殼程式cmd.exe。鏈結程式開關是subsystem:condole。
4、windows應用程式必須擁有乙個在應用程式啟動執行時呼叫的進入點函式:
winmain \ main (需要ansi字元和字串的gui\cui應用程式 嵌入可執行檔案的啟動函式:winmaincrtstartup / maincrtstartup)
wwinmain \ wmain (需要unicode字元和字串的gui\cui應用程式 嵌入可執行檔案的啟動函式:wwinmaincrtstartup / wmaincrtstartup)
作業系統實際上並不呼叫你編寫的進入點函式,它呼叫的是c/c++執行期啟動函式。該函式負責對c/c++執行期庫進行初始化,當所有這些初始化操作完成後,c/c++啟動函式就呼叫應用程式的進入點函式。
5、載入到程序位址空間的每個可執行檔案或dll檔案均被賦予乙個獨一無二的例項控制代碼。可執行檔案的控制代碼作為(w)winmain的第乙個引數hinstanceexe來傳遞。hinstexe引數的實際值是系統將可執行檔案的映象載入到程序的位址空間時使用的記憶體基位址。
6、getmodulehandle函式引數為空時返回主調程序的可執行檔案的基位址,引數傳入指定的可執行檔案或dll檔名稱時返回該檔案映像載入到的基位址。
7、執行緒可以呼叫getcurrentdirectory、setcurrentdirectory函式來獲取和設定其所在程序的當前驅動器和目錄。
8、createprocess被呼叫時,先建立乙個程序核心物件,再為新程序的主線程建立乙個執行緒核心物件,最後主線程執行c/c++執行時的啟動例程,呼叫winmain、wwinmain、main或wmain函式。
9、createprocess函式的第二個引數應傳入非常量字串,在呼叫createprocess函式前應將常量字串複製到乙個臨時緩衝區。
10、當進入點函式返回時,啟動函式便呼叫c執行期的exit函式,將返回值(nmainretval)傳遞給它。exit函式負責下面的操作:
1)呼叫由_onexit函式的呼叫而註冊的任何函式。
2)為所有全域性的和靜態的c++類物件呼叫析構函式。
3)呼叫作業系統的exitprocess函式,將返回值傳遞給它。這使得該作業系統能夠撤消程序+並設定它的exit**。
12、手動提公升程序許可權,需呼叫shellexecuteex函式,lpverb引數需被設為「runas」,lpfile引數設定可執行檔案的路徑。
摘錄 多程序併發
現在是多核時代,併發才能實現更高的吞吐量 更快的響應,但也是把雙刃劍。總結如下幾個用法 這是兩種最常見的多執行緒併發,它們有個天生的缺陷 scalability。乙個機器的效能總是有瓶頸的。兩個場景的邏輯雖然由多個執行緒實現了併發,但是運算量十分有可能是一台機器無法承載的。如果是多程序併發,那麼可以...
UML摘錄筆記
最常用的uml圖包括 用例圖 類圖 序列圖 狀態圖 活 元件圖和部署圖。用例圖 描述了系統提供的乙個功能單元。用例圖的主要目的是幫助開發團隊以一種視覺化的方式理解系統的功能需求,包括基於基本流程的 角色 actors,也就是與系統互動的其他實體 關係,以及系統內用例之間的關係。用例圖一般表示出用例的...
《理解矩陣》 摘錄筆記
理解矩陣 一 孟巖 理解矩陣 二 孟巖 理解矩陣 三 孟巖 目錄 一 二 三 1.空間是什麼?容納運動的乙個物件的集合。一種空間對應一類物件。2.線性空間是什麼?容納向量物件運動的。3.其中的運動 線性變換 如何表述?矩陣是線性空間中運動的描述。運動是瞬時的,因此也被稱為變換。矩陣與向量相乘,就是實...