8254
什麼是RTLinux
什麼是RTLinux
是Linux系統的一種嗎?
酷酷的 Linux 即時系統 (KURT)一九九八年初
有一個以 Linux 為基礎之新的即時系統誕生了。
KURT 是軟式的即時作業系統 (soft real-time system)
比如說
排程程式會試著去滿足任務 (task) 執行時所需求的時間
即使有任何任務執行完的時間超過所預期的
也不會造成任何的悲劇。
KURT 的即時性任務可以運用 Linux 所有的公用程式
這一點恰好跟 RT-Linux 的任務相反。
KURT 作業系統的核心程式有一些局部的修正: 改善了系統時鐘的時間解析能力。
當初
在 Linux-i386 的年代
系統時鐘的中斷頻率是每秒 100 次
核心程式就是用這個時間分段來控制 CPU 和量測時間的。
KURT 和 RT-Linux 一樣
採用相同的策略來處理時間的問題。
KURT 替時鐘晶片 (8254) 設計了程式
使得系統時鐘的中斷
成了隨傳隨到
一呼就有
而非固定不變的周期了。
這麼一來
千分之一秒的時間解析度
就再也不是夢了。
排程程式也已經修改過了: 採用新的排程策略
SCHED_KURT。
除此之外
Linux 的核心程式已經實作了一部份
是 POSIX 定義的標準: SCHED_FIFO、 SCHED_RR 和 SCHED_OTHER。
新的系統呼叫函數也已經加入 KURT
以便於利用這個新的即時作業系統之機能。
即時系統的任務都是動態載入的模組。
KURT 最具特色的便是排程策略。
排程程式是循環的
這種型式的排程程式
是運用一張名為計畫表 (plan) 的表格
來儲存所有進入排程的任務的動作:啟動的時刻、 預備執行的任務、 任務的延時等等。
這張表格開機時就會建好
等到任務要執行時
排程程式的工作
就僅剩下依序一項項讀取表中的資料了。
當排程程式讀到表中的尾端時
排程程式會回到表中的最開頭處
繼續處理任務的執行工作 —— 也就是這樣
才把這種排程程式
命名為循環排程程式 (cyclic scheduler)。
循環排程程式有諸多的優點: 容易實作。
相當有效率。
計畫表一旦建好之後
一個系統就可以很快地實作出來(有一些研究人員還堅信
這是唯一保證 STR 得以百分百正確執行的方法)。
最主要的困難點
就在於怎樣去製作計畫表了。
還有
每次只要有任何一項任務的參數做了修正
就必須重建計畫表;同時
儲存計畫表所需的記憶體也大的驚人。
即時系統有什麼好的﹖也許多數人都以為
即時系統的技術只能應用在 NASA
或是導彈、航空器之類的領域裡。
雖然
在多年以前
這的確是個不折不扣的事實
然而
世事原本就滄桑難料
近年來由於資訊系統和電子的整合應用
正逐步大量地引進一般人的日常生活中
情勢已經有了改變。
和我們日常生活息息相關最直接的證據
就是電傳通訊 (telecommunications) 和多媒體的應用領域
比如說
如果我們想要讓電腦
可以重覆播放一個儲存於硬碟裡的音效檔
處理音效的程式就得不斷地(或者更好的
是固定周期的) 去硬碟裡讀取檔案資料
解壓縮
然後把數位資料送出去給音效卡。
假如說
同一時間
我們正在操作一套應用軟體
可能是文書處理程式
或是正在編譯 Linux 的核心程式; 顯然
CPU 處理器會以周期循環的片段時間
來處理其他的任務。
如果不放音效
改在螢幕上重覆播放影像
微處理器分段處理的結果
影像便會有間歇性的停頓。
這種系統便是所謂的「軟式即時系統」(執行期間有中斷的現象並不會造成什麼巨大的災害
不過
這樣的系統的確會降低服務的品質)。
RT-Linux 的應用程式
和一般正常的即時應用程式大異其趣。
對 RT-Linux 而言
我們可以全然掌控 PC 的運作(我會說 PC 而不是電腦
是因為到目前為止
除了微電腦之外
RT-Linux 還沒有移植到其他種的機器架構上去)
如同過去的 MSDOS 一般。
當一個即時系統的任務交給 CPU 去執行時
這個執行中的任務是可以去存取 PC 上所有的位址阜的
例如植入中斷服務常式
暫時關閉中斷服務常式的功能等等。
換句話說
我們可以
留言列表