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