?? 00000002.htm
字號:
<?xml version="1.0" encoding="gb2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>psos的簡單介紹。 turbolinux </title></head><body><center><h1>BBS 水木清華站∶精華區</h1></center><a name="top"></a>發信人: doot (ltt), 信區: Embedded <br />標 題: psos的簡單介紹。 <br />發信站: BBS 水木清華站 (Wed Oct 25 11:42:14 2000) <br /> <br />是別人翻譯的。xixi <br />pSOS系統結構 <br /> pSOS是一個由標準軟組件組成的,可剪裁的實時操作系統。其系統結構如圖2.1所示 <br /> <br />,它分為內核層、系統服務層、用戶層。 <br />1. 內核層 <br /> pSOS內核負責任務的管理與調度、任務間通信、內存管理、實時時鐘管理、中斷服 <br /> <br />務;可以動態生成或刪除任務、內存區、消息隊列、信號燈等系統對象;實現了基于優 <br /> <br />先級的、選擇可搶占的任務調度算法,并提供了可選的時間片輪轉調度。pSOS Kernel還 <br /> <br />提供了任務建間通信機制及同步、互斥手段,如消息、信號燈、事件、異步信號等。 <br /> pSOS操作系統在Kernel層中將與具體硬件有關的操作放在一個模塊中,對系統服務層 <br /> <br />以上屏蔽了具體的硬件特性,從而使得pSOS很方便地從支持Intel 80x86系列轉到支持MC <br /> <br />68XXX系列,并且在系統服務層上對不同應用系統不同用戶提供標準的軟組件如PNA+、 <br />PHILE+等。 <br />2. 系統服務層 <br /> pSOS系統服務層包括PNA+、PRPC+、PHILE+等組件。PNA+實現了完整的基于流的TCP <br /> <br />/IP協議集,并具有良好的實時性能,網絡組件內中斷屏蔽時間不大于內核模塊中斷屏蔽時 <br /> <br />間。PRPC+提供了遠程調用庫,支持用戶建立一個分布式應用系統。PHILE+提供了文件系 <br /> <br />統管理和對塊存儲設備的管理。PREPC+提供了標準的C、C++庫,支持用戶使用C、C++語言 <br /> <br />編寫應用程序。 <br /> 由于pSOS內核屏蔽了具體的硬件特性,因此,pSOS系統服務層的軟組件是標準的、與 <br /> <br />硬件無關的。這意味著pSOS各種版本,無論是對80X86系列還是MC68XXX系列,其系統服務 <br /> <br />層各組件是標準的、同一的,這減少了軟件維護工作,增強了軟件可移植性。 <br /> 每個軟組件都包含一系列的系統調用。對用戶而言,這些系統調用就象一個個可重入 <br /> <br />的C函數,然而它們卻是用戶進入pSOS內核的唯一手段。 <br />3. 用戶層 <br /> 用戶指的是用戶編寫的應用程序,它們是以任務的形式出現的。任務通過發系統調 <br /> <br />用而進入pSOS內核,并為pSOS內核所管理和調度。 <br /> pSOS為用戶還提供了一個集成式的開發環境(IDE)。pSOS_IDE可駐留于UNIX或DOS <br /> <br />環境下,它包括C和C++優化編譯器、CPU和pSOS模擬仿真和DEBUG功能。 <br />pSOS內核機制 <br />§3.1 幾個基本概念 <br />3.1.1 任務 <br /> 在實時操作系統中,任務是參與資源競爭(如CPU、Memory、I/O devices等) <br />的基本單位。pSOS為每個任務構造了一個虛擬的、隔離的環境,從而在概念上,一個任務 <br /> <br />與另一個任務之間可以相互并行、獨立地執行。任務與任務之間的切換、任務之間的通 <br /> <br />信都是通過發系統調用(在有些情況下是通過ISR)進入pSOS Kernel,由pSOS Kernel完 <br /> <br />成的。 <br /> pSOS系統中任務包括系統任務和用戶任務兩類。關于用戶任務的劃分并沒有一個固 <br /> <br />定的法則,但很明顯,劃分太多將導致任務間的切換過于頻繁,系統開銷太大,劃分太少又 <br /> <br />會導致實時性和并行性下降,從而影響系統的效率。一般說來,功能模塊A與功能模塊B是 <br /> <br />分開為兩個任務還是合為一個任務可以從是否具有時間相關性、優先性、邏輯特性和功 <br /> <br />能耦合等幾個方面考慮。 <br />3.1.2 優先級 <br /> 每個任務都有一個優先級。pSOS系統支持0~255級優先級,0級最低,255級最高。0級 <br /> <br />專為IDLE任務所有,240~255級為系統所用。在運行時,任務(包括系統任務)的優先級 <br /> <br />可以通過t_setpri系統調用改變。 <br />3.1.3 任務狀態 <br /> pSOS下任務具有三種可能狀態并處于這三個狀態之一。只有通過任務本身或其他任 <br /> <br />務、ISR對pSOS內核所作的系統調用才能改變任務狀態。從宏觀角度看,一個多任務應用 <br /> <br />通過一系列到pSOS的系統調用迫使pSOS內核改變受影響任務而從運行一個任務到運行另 <br /> <br />一任務向前發展的。 <br /> 對于pSOS kernel,任務在創建前或被刪除后是不存在的。被創建的任務在能夠運行 <br /> <br />前必須被啟動。一旦啟動后,一個任務通常處于下面三個狀態之一: <br />①Executing (Ready)就緒 <br />②Running運行 <br />③Blocked阻塞 <br /> 就緒任務是未被阻塞可運行的,只等待高優先級任務釋放CPU的任務。由于一個任務 <br /> <br />只能由正運行的任務通過調用來被啟動,而且任何時刻只能有一個正在運行的任務,所 <br /> <br />以新任務總是從就緒態開始。 <br /> 運行態任務是正在使用CPU的就緒任務, 系統只能有一個running任務。一般runni <br /> <br />ng任務是所有就緒任務中優先級最高的,但也有例外。 <br /> 任務是由自身特定活動而變為阻塞的,通常是系統調用引起調用任務進入等待狀態 <br /> <br />的。所以任務不可能從ready態到blocked態,因為只有運行任務才能執行系統調用。 <br />3.1.4 任務控制塊 <br /> 任務控制塊TCB是pSOS內核建立并維護的一個系統數據結構,它包含了pSOS Kernel調 <br /> <br />度與管理任務所需的一切信息,如任務名、優先級、剩余時間片數、當前寄存器狀態等。 <br /> <br /> 在有的RTOS中,任務的狀態與任務TCB所處的隊列是等同的。pSOS操作系統將二者分 <br /> <br />為兩個概念,例如任務處于阻塞狀態,但它的TCB卻處于消息等待隊列、信號燈等待隊列、 <br /> <br />內存等待隊列、超時隊列之一。 <br /> pSOS啟動時,將根據Configuration Table中的參數kc_ntask建立一個包含kc_ntask <br /> <br />個TCB塊的TCB池,它表示最大并行任務數。在創建一個任務時,分配一個TCB給該任務,在 <br /> <br />撤銷一個任務時,該TCB將被收回。 <br />3.1.5 對象、對象名及ID號 <br /> pSOS Kernel是一個面向對象的操作系統內核,pSOS系統中對象包括任務、memory <br />regions、memory partitions、消息隊列和信號燈。 <br /> 對象名由用戶定義(4位ASCII字符),并且在該對象創建時作為系統調用obj_CREAT <br />E <br />的一個人口參數傳給pSOS Kernel。pSOS Kernel反過來賦予該對象一個唯一的32位ID號 <br /> <br />。除obj_CREATE和obj_IDENT外,所有涉及對象的系統調用都要用到對象ID號。 <br /> 創建對象的任務通過obj_CREATE就已經知道了該對象的ID號,其余任務可通過obj_ <br />IDENT或通過全局變量(如果已經為該任務的ID號建立了一個全局變量的話)獲取該對象 <br /> <br />的ID號。對象ID號隱含了該對象控制塊(如TCB、QCB)的位置信息,這一位置信息被pSO <br />S <br />Kernel用于對該對象的管理和操作,如掛起/解掛一個任務、刪除一個消息隊列等。 <br />3.1.6 任務模式字Mode word. <br /> 每個任務帶有一個mode word,用來改變調度決策或執行環境。主要有以下四個參 <br /> <br />數 <br /> Preemption Enabled/Disabled. <br /> Roundrobin Enabled/Disabled <br /> Interupts Enabled/Disabled. <br /> ASR Enabled/Disabled: 每個任務有一個通過as-catoh建立起來的異步信號服務例 <br /> <br />程ASR。異步信號類似于軟件中斷。當ASR位為1時as-catch所指向的任務將會被改變執行 <br /> <br />路徑,先執行ASR,再返回原執行點。 <br />§3.2 任務調度 <br />3.2.1 影響動態調度效果的兩個因素 <br /> pSOS采用優先級+時間片的調度方式。有兩個因素將影響動態調度的效果:一是優先 <br /> <br />級可變(通過t_setpri系統調用改變任務的優先級);二是任務模式字中的preemption <br /> <br /> bit位和roundrobin bit位。preemption bit位決定不同優先級的任務是否可搶占,并和 <br /> <br />roundrobin bit位一起決定任務的時間片輪轉是否有效。 <br />3.2.2 引起任務調度的原因及結果 <br /> pSOS系統中引起調度的原因有兩條: <br />1. 在輪轉方式下時間片到 <br />2. pSOS系統調用引發任務調度。該系統調用可能是ISR發出的,也可能是某個任務發出的 <br />。 <br /> pSOS任務調度的結果有兩種: <br />1. 引起運行任務切換,這指的是 <br />2. 不引起運行任務切換,這指的是 <br /> 不論任務調度是否引發運行任務切換,都有可能引起一個或多個任務狀態變遷。 <br />3.2.3 運行任務的切換 <br />一、何時切換 <br />1. 在時間片輪轉方式下(此時任務模式字的roundrobin bit與preemption bit均為 <br />enable),運行任務Task A的時間片用完,且Ready隊列中有相同優先級的其它任務,則 <br /> <br />Task A退出運行。 <br />2. 在運行任務Task A的Mode word的preemption bit位為enable的前提下,若Task A發出 <br /> <br />的某條相同調用引發一個優先級高于Task A的任務Task B從Block狀態進入Reary狀態,則 <br /> <br />將Task B投入運行。 <br />3. ISR使用I_RETURN系統調用,則ISR退出運行,pSOS Kernel選擇Ready隊列中優先級最高 <br /> <br />的任務投入運行(這一任務并不一定是被ISR打斷的前運行任務)。 <br />二、如何切換 <br /> 上述三類運行任務的切換,其具體的pSOS Kernel運作過程并非完全一樣,但彼此之間 <br /> <br />差別不大。為了簡單起見,我們以 <br />為例對切換過程作一簡單敘述。這一過程可細分為4個步驟: <br />1. 任務A運行信息保存(_t_save proc far) <br /> 這一過程主要完成修改系統工作標志,保存切換點地址及運行信息、任務A棧調 <br />整
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -