winCE嵌入式開發學習(二)續–wince體繫結構涉及作業系統部分

來源:互聯網
上載者:User
線程一個進程擁有的線程理論上是沒有限制的,只與當前可用的記憶體有關,也就是說只要記憶體夠用,就可以建立線程。進程中的線程共用進程所佔有的資源,包括地址空間和代開的檔案等核心對象。線程出了佔有記憶體外,還佔有其他資源,如處理器的寄存器和棧,每個線程都有自己獨立的棧,這些資源構成了線程的上下文。在核心態,線程可以訪問作業系統所有的資源。一般來說,作業系統線程和插斷服務常式運行在核心態,應用程式和裝置驅動程式的插斷服務常式運行在使用者態。wince運行所有的進程運行在核心態,雖然不穩定,但是可以提高效率。建立一個線程:HANDLE CreateThread(

  LPSECURITY_ATTRIBUTES lpThreadAttributes, // 不支援,NULL

  DWORD dwStackSize, // 通常預設值

  LPTHREAD_START_ROUTINE lpStartAddress, // 線程函數地址(很重要,基本上也就是線程要做的事情,可以是下面的ThreadProc,做的事情就在那個線程函數中實現了)

  LPVOID lpParameter, //線程參數(線程要做事情,總得給它傳點東西,否則不知道如何幹)

  DWORD dwCreationFlags, // 線程建立屬性

  LPDWORD lpThreadId // 線程ID(線程的名字了)

  );線程函數定義:DWORD WINAPI ThreadProc(LPVOID lpParamerter//參數指標);調度wince是一個搶佔式多任務作業系統。發送器使用基於優先順序的時間片演算法對線程進行調度。線程優先順序多達256個,0最高,255最低。通常應用程式只須使用248-255的優先順序,比較高的優先順序供驅動程式和核心使用。wince的優先順序映射

優先順序 組件 優先順序 組件
0-19 高於驅動程式的即時 145 ps2鍵盤
20 圖形垂直回描 148 ircomm
99 電源管理喚醒線程 150 tapi
100-108 usb 串口 ohci uhci 248 電源管理
109-129 紅外 ndis 觸控螢幕 249 滑鼠 pnp power wavedev
130 核心無關傳輸層 250 wavapi
131 VMini 251 正常
132 cxport 252-255 應用程式

同步(看些例子很容易懂)1、Mutex2、Semaphore3、Event4、Critical Section5、互鎖函數處理序間通訊wince提供了很多處理序間通訊的方式,在這裡主要說一下檔案對應和點對點訊息佇列。1、剪貼簿:可使用剪下板函數在不同的進程間複製資料。但是一般只適合圖形介面的程式,而且通常剪貼簿都是由使用者操作完成的。2、com/dcom 通過com組件的代理或存根方式進行進程間資料的交換,但是只能在調用介面函數時傳送資料;通過dcom可以在不同主機間傳送資料。3、網路通訊端:通過電腦網路,可在相同主機或不同主機間交換資料。4、WM_COPYDATA訊息:通過向進程發這個訊息,將資料放在參數中給其他進程傳遞資料。只適合視窗訊息佇列的進程。檔案對應:檔案對應又叫記憶體對應檔。通過記憶體對應檔可在進程的共用虛擬位址空間內保留一個地址空間的地區,同時將檔案所在的實體記憶體映射到次地區。這樣只需要對虛擬記憶體做讀寫操作,剩下的就有作業系統做了。wince中記憶體對應檔會被映射到4gb的虛擬位址空間0x42000000-0x7fffffff的進程地區中,因此實現了多個進程之間的通訊。點對點訊息佇列:是常用的系統模組之間進行通訊的方式。它很好地附和了作業系統原理中生產者-消費者的模型。訊息佇列通常是一個先進先出的隊列結構,當一個進程吧訊息寫入隊列,需要此訊息的其他進程,就可從隊列中取得訊息,從而達到處理序間通訊的目的。wince下的訊息佇列實現中,有以下特色:1、訊息可以為任何類型,事實上訊息只是一個任意大小的記憶體緩衝區。這非常有利於在不同進程之間進行資料交換。2、訊息佇列還可以用來進行同步。3、訊息是沒有優先順序的,對於同一個隊列,所有的訊息都嚴格按照先進先出的方式進出4、wince中的訊息佇列是基於點對點操作,它不能用來進行廣播記憶體管理wince採用層次化的結構記憶體管理。從下到上依次分別是實體記憶體、虛擬記憶體、邏輯記憶體和c或c++語言運行庫。記憶體管理的每一層都會向外提供一些編程介面函數,這些編程介面可被上一層使用,也可直接被應用程式使用。實體記憶體:wince中RAM、ROM和Flash Memory都被看做實體記憶體,而不僅僅是傳統意義上的,只有RAM被認為是實體記憶體。RAM 關機後,可以用電池儲存上次的一些狀態,如果開機,可以恢複上次的頁面。ROM可以斷電永久儲存,和硬碟一樣。ROM的替代品flash memory(快閃記憶體)。比ROM最大的優點就是可擦寫。flashmemroy可以分為and、nand、nor、dinor等。其中nand和nor是目前主流類型。nor的缺點是容量小。nand優點是容量大,但是速度慢。虛擬記憶體:wince是32位的作業系統,也有4GB的虛擬定址能力,但是與winXP的每個進程獨享4GB虛擬位址空間不同,wince是共用4GB的空間。wince系統支援兩種頁的大小:1KB和4KB。wince中虛擬記憶體的申請分為保留和提交兩個過程。虛擬位址空間的保留是以64KB為邊界的。也就是說,任何一次虛擬記憶體申請都會返回一個64KB整數倍的地址。但是把虛擬記憶體提交到實體記憶體是以頁為粒度的。管理虛擬記憶體的硬體是記憶體管理單元MMU。MMU負責把虛擬位址映射到物理地址,並提供一定的保護。wince將4GB的虛擬位址空間分為若干個slot,每個32MB,slot編號從0-63.slot0是用於映射當前處理器上執行的進程;slot1有XIP(本地執行)的dll代碼使用。slot2-32是wince每個進程的32MB的虛擬位址空間,其中slot2被filesys.exe佔有。也就是理論上wince可以有30幾個進程,但是使用者可以用的只有不到30個。slot33-63對應的虛擬位址空間0x42000000-0x7fffffff。這塊是有所有進程共用的。slot63是用來儲存dll資源的。從0x80000000開始時wince核心的虛擬位址空間。虛擬位址0x80000000-0x9fffffff一段用來靜態映射所有物理地址。wince會把實體記憶體1:1地映射到這段虛擬位址上。這段地址一共512MB,這也是wince支援的物理地址的最大值是512MB的原因。邏輯記憶體:邏輯記憶體分為堆和棧兩種。對是進程中一塊連續的虛擬位址空間,應用程式可以在堆上動態地進行記憶體申請和釋放。申請堆是以位元組為單位,與頁的大小無關,所以每次可以申請4位元組或者8位元組。wince為每個進程分配了60kb的棧,並把棧頂2KB用來判斷是否棧滿,因此每個線程使用者可用58KB。c或c++語言運行庫:malloc/free new/deletelocalAlloc()等儲存管理和檔案系統Object Storage Service:是一個被filesys.exe控制的記憶體堆,包括:RAM檔案系統註冊表ce資料庫檔案系統:RAM檔案系統:直接掛在根目錄下ROM檔案系統:\windows目錄下。windows目錄中的內容一般就是romimage.exe最終產生的windowsCE運行時鏡像的內容,這也就意味著windows目錄裡面的檔案通常都是唯讀,使用者不能修改和刪除。可安裝檔案系統:註冊表:用來儲存應用程式、驅動程式和使用者設定的一些配置資訊。儲存管理器:主要功能是管理所有的外存裝置。從邏輯上講,它包含裝置驅動管理器、分區管理器、和檔案系統驅動管理器。下面以讀取磁碟上的一個檔案為例,看看wince的儲存管理器是如何對存放裝置進行管理的。1、應用程式readfile請求作業系統讀操作。coredll中斷並被nk截獲,然後到filesys執行。2、filesys會通過Object Storage Service來解析路徑,尋找此檔案的位置,然後發現檔案在外存上。3、filesys通過檔案系統驅動程式在外存上尋找此檔案,如果這個檔案系統包含多個分區,還要調用分區驅動程式在分區上尋找檔案,如果找到,則進行讀寫。4、真正的讀寫是在塊裝置驅動程式進行的。使用者介面與圖形系統gwes的3個關鍵的模組:圖形、視窗、事件

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.