1、微處理機作業系統微處理機作業系統架構的演進 微處理機作業系統特色 n記憶體空間需求小且整體效率高 n良好的省電功能 n與PC溝通的功能 n開放應用程式撰寫環境與動態載入應用程式 n通訊功能 行程與執行緒n為了方便管理應用程式,微處理機作業系統會分別以一個執行單位來看待一項工作或是一個程式,這個執行單位在不同的微處理機作業系統中會有不同的名稱與意義,大多為行程與執行緒應用程式執行單位A single execution unitmain().a_task();.void a_task().行程代表著不同的應用程式 Process 3/*program 1*/main()program1();vo
2、id program1()/*program 2*/main()program2();void program2()/*program 3*/main()program3();void program3()Process 2Process 1/*program 4*/main()program4();void program4()Process 4行程(process)/執行緒(thread)/工作(task)n通常作業系統會配給行程(process)裡一塊記憶體空間,放著該行程所有的程式碼與資料,以及一些系統服務的紀錄資料,例如檔案開啟的紀錄表、虛擬記憶對應表等,當然還包含了該行程每次執行時
3、,微處理機的執行狀態n但對於這個行程內的執行緒(thread)/工作(task)而言,分配到的可能是位於該行程內的一段記憶體空間,紀錄著該執行緒/工作的程式碼與資料,以及每次微處理機的執行狀態,而那些屬於全域性的紀錄資料,並不會複製到每一個執行緒/工作內,像是上述的檔案開啟的紀錄表、虛擬記憶對應表等。行程、記憶體與微處理器的關係 CPUMemoryProcess 1 data,codeProcess 2 data,codeProcess 3 data,codeProcess 4 data,codeProcess 1 recordProcess 2 recordProcess 3 recordP
4、rocess 4 recordProgram counterRegister Files執行緒/工作、記憶體與微處理器的關係 CPU Status in Thread 1 of Process 1MemoryProcess 1 code,dataProcess 1 recordProgram counterRegister FilesCPU Status in Thread 2 of Process 1Program counterRegister FilesC/OS-IIs Task Control Block 資料結構typedef struct os_tcb OS_STK *OSTCBS
5、tkPtr;#if OS_TASK_CREATE_EXT_ENvoid *OSTCBExtPtr;OS_STK *OSTCBStkBottom;INT32U OSTCBStkSize;INT16U OSTCBOpt;INT16U OSTCBId;#endifstruct os_tcb*OSTCBNext;struct os_tcb*OSTCBPrev;#if(OS_Q_EN&(OS_MAX_QS=2)|OS_MBOX_EN|OS_SEM_ENOS_EVENT *OSTCBEventPtr;#endif#if(OS_Q_EN&(OS_MAX_QS=2)|OS_MBOX_ ENvoid *OSTC
6、BMsg;#endifINT16U OSTCBDly;INT8U OSTCBStat;INT8U OSTCBPrio;INT8U OSTCBX;INT8U OSTCBY;INT8U OSTCBBitXINT8U OSTCBBitY;#if OS_TASK_DEL_ENBOOLEAN OSTCBDelReq;#endif OS_TCB;排程 n排程可以說是作業系統核心中最重要工作之一,因為CPU只有一個,所以在一個多工的系統中,核心必須適當的安排分配每個程式的執行時間,讓整各系統看起來就像是有許許多多的程式同時在執行一樣。通常核心會以分時(Time Slicing)的觀念來讓大家共享CPU資源。
7、把CPU執行的時間,分成一段段的,每個程式就分配到這些時間來執行任務。這一段一段的時間,在不同的作業系統中,有的長,可能是200個分時,有的短,也有只有20個分時,有的是固定的,也有可以調整的,而每一段的執行時間到了,就必須輪替換下一個程式執行,那要輪到哪一個,就必須要由核心的排程器來決定。排程 Process 1Process 4Process 3Process 2即時系統nReal time in operating systems:the ability of the operating system to provide a required level of service in a
8、 bounded response time.本文切換 n當透過作業系統的排程器的選擇機制,決定下一個CPU的使用權是交給那一個工作來執行之後,作業系統就必須要做切換的動作。有個專有名詞來描述這種切換的動作,稱為本文切換(context switch)。n做本文切換的時候,必須要將目前的工作狀態(task context)全部記錄起來,包括了程式指標(program counter/instruction pointer)、堆疊指標(stack pointer)及所有微處理器的其他暫存器內容。C/OS 本文切換(context switch)步驟一步驟一C/OS本文切換(context swi
9、tch)步驟二步驟二C/OS 本文切換(context switch)步驟三步驟三C/OS本文切換(context switch)步驟四步驟四C/OS 本文切換(context switch)步驟五步驟五C/OS 本文切換(context switch)步驟六步驟六C/OS本文切換(context switch)步驟七步驟七C/OS本文切換(context switch)步驟八步驟八C/OS本文切換(context switch)步驟九步驟九內部行程通訊n在有些特殊需求的時候,會有至少一個以上的行程(process)來完成單一應用程式。但這些不同的行程或是執行緒享有的系統資源往往是獨立的,無法
10、直接分享,因此作業系統核心必須要提供所謂的內部行程通訊IPC(Inter-Process Communication),讓這些不同的行程間可以互相交換訊息,也可以藉此知道彼此的意圖來做出相對應的行為 內部行程通訊方法 n透過作業系統中的記憶體子系統,也就是一般所說的共用記憶體(share memory)。Mail Box、Message Queue也是利用相同的觀念所設計出來的通訊機制。n透過作業系統中的檔案系統。n透過作業系統所提供的虛擬溝通機制。例如管道(pipe)。n透過作業系統所提供的信號(signal)機制。共用記憶體機制 檔案系統共用機制 作業系統提供的虛擬溝通管道 信號型態的行程間通訊 WinCE.Net Symbian OS VxWorks Nucleus 總結 n本章內容由行程與執行緒、排程、本文切換、記憶體管理、內部行程通訊等主題讓大家了解微處理機作業系統的運作原理,行程或執行緒乃為系統程式的執行單位,之間的排程選擇、切換流程皆為微處理機作業系統的重點,n除此之外,記憶體管理、內部行程通訊,對於系統的執行效能也是非常之重要。另外也帶入了在微處理機作業系統中一個重要的研究方向即時系統,讓讀者了解即時系統的定義。