【讀書筆記】Windows CE嵌入式系統_【3】_進程、線程與調度


進程

1、進程是程序的一次動態執行實例。有創建、執行、結束完整的生命週期。

2、進程消耗的系統資源只有它所佔用的內存。

3、winCE最多隻支持32個進程同時運行。每個進程佔用32MB的虛擬地址空間。也被稱爲一個s1ot 。

4、WinCE不支持環境變量,也不支持當前目錄。--------------WinCE先查找” \Windows“目錄,然後查找根目錄。如果找不到就報錯。

  ----解決方案1:通過GetModuleFileName()獲取當前執行文件所在的目錄。

        

 eg:

  5、進程的創建

應用程序可以使用CreateProcess()函數創建一個新的進程。


第一個參數 是可執行文件的路徑和名稱。如果路徑未明確指定,則按照如下搜索:
  • Windows目錄 (”\ Windows“)
  •        對象存儲的根目錄 (”\ “)
  •        OEM所制定的搜索目錄 (  註冊表的中
       )第二個參數 指定要傳遞給新進程的命令行參數,須以Unicode字符串形式傳遞。參數fdwCreate 指定進程夾在後的初始狀態。


參數pProcInfo指向一個PROCESS_INFORMATION結構體,PROCESS_INFORMATION結構體返回進程和主線程的句柄以及ID。不需要得到時,可以設置爲空。


6、進程終止方法:

      最佳方法-------從WinMain()函數返回。

    ExitThread()讓進程的主線程退出從而終止進程。

        ExitProcess()和TerminateProcess()函數用來使進程終止。


線程

1、線程是Windows CE中最小的可執行單元。一個進程可以擁有的線程數理論上是沒有限制的。

 進程中所有的線程共享進程所佔有的資源,包括地址空間、打開的文件等內核對象。

2、線程可以運行核心態或用戶態。

操作系統線程和中斷服務例程(ISR,Interrupt Service Routine)運行在覈心態,

應用程序和設備驅動程序的中斷服務線程(IST,Interrupt Service Thread)運行在用戶態。

WinCE允許讓所有的線程都運行在覈心態下,從而增加系統的效率。

3、線程的創建



創建成功,返回新創建線程的句柄。否則,返回NULL。

可以把參數fdwCreate設置成CREATE_SUSPENDED狀態來創建一個起始狀態爲掛起的線程。否則線程創建結束後會立即執行。

4、恢復線程。ResumeThread


5、結束線程。

ExitThread()和TerminateThread()函數使線程結束執行。


調度

1、WinCE是搶佔式多任務操作系統。調度程序基於優先級的時間片算法對線程進行調度。



線程優先級通過GetThreadPriority()函數獲取,SetThreadPriority()函數設置。

BOOL SetThreadPriority( 
  HANDLE hThread, 
  int nPriority
); 
其中,nPriority值爲


默認時間片100毫秒。通過CeGetThreadQuantum()函數獲得。

DWORD CeGetThreadQuantum(
  HANDLE hThread
); 
失敗時,返回MAXDWORD 。


2、線程狀態切換



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章