windows服務和應用程序?
Windows Service 是主要用于服務器環境而長期運行的應用程序, 這類程序不需要有用戶界面或者任何模擬輸出。 任何的用戶消息通常都是記錄在Windows 事件日志里。Windows Service可以在操作系統啟動的時候開始,一直在后臺運行,當有需要時也可以手動啟動,我們可以通過管理工具里面的服務進行統一管理。 當系統啟動完畢后,windows服務并不需要通過登陸頁面后才能啟動,而我們啟動一般的EXE文件卻要先登陸Windows后才能啟動它。 Windows Service 是一種可隨 Windows 操作系統啟動而啟動的,在后臺運行的,通常不和用戶產生交互的程序。它無法通過雙擊來運行,類似于 Unix 守護進程(daemon processes),當用戶注銷時它也不會停止。 Windows 服務由三部分組成:
1.一個服務可執行文件;
2.一個服務控制程序(SCP);
3.服務控制管理器(SCM),負責在 HKLMSystemCurrentControlSetServices 下創建服務鍵值。用戶可通過 SCP 控制服務的啟動、停止、暫停等,SCP 會通過 SCM 調用服務程序。 Window 標準的exe可執行程序通常有一個用戶界面,Console或GUI,通常由用戶來啟動或停止 Windows服務是運行在windows后臺指定用戶下(默認System)的應用程序,它沒有標準的UI界面,想比標準的EXE程序,Windows服務是在服務開始的時候創建,而在服務結束的時候銷毀,而且可以設置服務是否與操作系統一起啟動,一起關閉。它支持三種方式:1)自動方式 2)手動方式 3)禁用 。自動方式的時候,windows服務將在OS啟動后自動啟動運行,而手動方式則必須手工啟動服務,禁用的情況下服務將不能被啟動。另外標準的EXE默認使用的當前登錄的用戶,而windows服務則默認使用System用戶,這在對系統資源訪問的時候特別需要注意。 Windows上的單個進程所能訪問的最大內存量是多少?它與系統的最大虛擬內存一樣嗎?這對于系統設計有什么影響? 32 位Windows上單個進程所能訪問的最大內存量是4G,單由于操作系統需要給系統核心分配2G的空間,所以一般用戶程序的進程可使用的最大內存為2G。 不一定一樣,32位的操作系統的進程可訪問的最大內存量是4G,這4G包含了虛擬內存,而一個進程可訪問的最大內存量也是4G,所以進程內存訪問量在物理內存大于等于4G的時候跟虛擬內存無關,而當物理內存小于4G時,進程訪問的內存量隨著虛擬內存的增加而增加,直到4G Windows使用一個系統:虛擬尋址系統。該系統把程序可用的內存地址映射到硬件內存中的實際地址上,這些任務完全有Windows后臺管理,其實際結 果是32位處理器上的每個進程都可以使用4GB的內存------無論計算機上有多少硬盤空間(在64位處理器上這個數值會更大)。這個4GB內存實際上 包含了程序的所有部分------包括可執行代碼,代碼加載的所有dll,以及程序運行時使用的所有變量的內容。這個4GB內存稱為虛擬地址空間,或虛擬 內存。 EXE和DLL之間的區別是什么? EXE就是可執行文件,你可要雙擊它, 它就可以運行,而DLL是一個動態鏈接庫文件,就是說,它不可以自己運行,它是須要一個程序的其它功能運行的時候,它才能運行,打個比方,如果你的QQ要升級,那QQ里面有關升級的DLL文件它就會運行. EXE是帶有程序入口(Main)的能被終端用戶直接執行的應用程序,隨著它的啟動系統會產生一個相應的進程。 DLL是動態鏈接庫,不包含程序執行入口,不能被終端用戶直接執行,本身需要附加到現有的進程中才可以運行。 但兩者都是基于PE格式,運行時由磁盤中的映像載入被調用者的內存或者共享空間中執行,包含程序的數據信息,只是EXE還包括程序