999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

采用混合時鐘模式提高Linux時鐘精度的方法

2011-01-22 03:35:58劉青昆王異奇
網絡安全與數據管理 2011年3期
關鍵詞:系統

張 健,劉青昆,王異奇,周 嬌

(遼寧師范大學 計算機與信息技術學院,遼寧 大連 116081)

采用混合時鐘模式提高Linux時鐘精度的方法

張 健,劉青昆,王異奇,周 嬌

(遼寧師范大學 計算機與信息技術學院,遼寧 大連 116081)

時鐘精度直接影響到實時任務能否被及時響應和調度,數控系統要求其軟件平臺能提供微秒級的時鐘精度。Linux操作系統由于其開放源代碼的特點,非常適合開發具有自主產權的全軟件數控系統,但是其毫秒級時鐘精度明顯過于粗糙。結合上述方法,提出一種混合多種時鐘模式的動態時鐘系統,提高Linux的時鐘精度。通過仿真測試證明能滿足數控系統的要求。

數控;Linux系統;時鐘精度;定時器

數控技術(CNC)已經成為現代制造業的核心技術之一,開放式數控系統相對于傳統數控系統在功能、靈活性、成本等方面的優勢,使得開放式數控成為數控系統未來發展的主要趨勢。目前,開放式數控系統主要有三種結構,即專用 CNC+PC、通用 PC+運動控制器和軟數控系統。其中軟數控系統采用多任務實時操作系統,將運動控制部分與管理部分集成到一個硬件平臺上,滿足數控系統在功能方面和非功能方面(主要表現在實時性)的要求[1]。開放式數控系統的理想軟件平臺是實時多任務操作系統,目前,商業實時多任務操作系統有很多,比較著名的有 VxWORKS、iRMX、QNX等,但這些操作系統產品大多成本高、開放性差。Linux是一種發展十分迅速的類UNIX系統,已被廣泛地運用到服務器、桌面系統以及嵌入式應用領域。Linux由于其開放源代碼的特點,可以在此基礎上開發具有自主知識產權的數控系統。但是Linux最初的設計目標是一個分時操作系統,追求系統效率和公平性,在對實時性要求高的領域應用受到限制。雖然2.6內核的Linux時鐘粒度提高到了1 ms,但仍遠不能滿足數控系統對定時精度的要求。

近年來的研究以細化時鐘粒度來提高Linux的實時應用能力提出了一些方案和設想,主要有KURT-Linux系統、RT-Linux系統。 本文對 KURT_Linux、RT-Linux提高時鐘精度的方法進行分析,考慮在強周期性應用或者在某個時段內有大量高精度定時器將超時的情況下,采用一種動態的多模式時鐘機制來提高Linux的時鐘精度,并通過分析測試證明該方案確實可行。

1 Linux時鐘機制與改進

1.1 Linux時鐘機制

時鐘和定時器對Linux系統來說是至關重要的。首先,內核要管理系統的運行時間以及墻上時間;其次,內核中大量的任務是基于時間驅動,其中有些任務是周期執行,如對調度程序中運行隊列進行平衡調整或對屏幕進行刷新,而有些任務需要推后執行的I/O操作則需要等待一個相對時間后才運行。

系統時鐘是定時器硬件和系統軟件的結合,在X86體系結構中,使用最普遍的定時器硬件是Intel8254可編程定時器芯片(PIT),它產生的中斷就是時鐘中斷(tick)。時鐘中斷是特定的周期性中斷,對應中斷服務程序,完成更新系統時間以及任務的管理、調度等工作;系統在每次時鐘中斷處理中更新jiffies,維護系統定時器鏈表timer_list,對超時的定時器進行處理。

與系統定時器相對的是動態定時器,是用來調度事件在將來某個時刻發生的機制。它依賴于系統時鐘中斷,在時鐘中斷服務程序的下半部,系統檢查是否有超時的動態定時器并進行處理。linux2.6內核的系統時鐘頻率為 1 000 Hz,即時鐘中斷的觸發周期為 1 ms,中斷服務程序最快每1 ms執行一次。動態定時器隨時都可能超時,但只有在中斷服務處理程序執行時才會檢查、執行超時的動態定時器,所以動態定時器的平均誤差大約為半個系統時鐘周期。

CNC數控系統的工作過程通常是首先內建一個定時器(由操作系統完成),然后周期性地執行控制程序,周期通常為幾十微秒到十幾毫秒。在每個周期內要完成狀態監測、譯碼、刀具補償計算、插補計算、PLC管理、位置控制等工作。可見,在加工工件過程中,CNC要求的實時性非常高,必須在很短、很精確的周期內完成一系列的計算和輸入輸出,否則加工精度無法得到保障。標準2.6內核Linux定時器精度遠遠達不到數控系統周期實時任務要求的微秒級定時精度。

1.2 提高時鐘精度的辦法

近年來人們對Linux進行實時化改造提出了一些方案和設想,主要有 KURT-Linux、RT-Linux等[2]。下面分別進行介紹。

KURT_Linux[3]由 kansas大學開發,通過對 Linux內核內部進行改造來滿足實時應用需求。在時鐘精度方面,KURT-Linux將Linux的時鐘中斷固定模式改為單次觸發模式(one-shot mode),即每次給時鐘芯片設置一個超時時間,然后等到該超時事件發生,在時鐘中斷處理過程中再次根據需要設置一個超時時間。通過這種變長時鐘模式,將Linux時鐘精度提高到μs級。既保證了特定實時任務的精度要求,又避免了不必要的調度負擔。

RT-Linux是新墨西哥工學院研制的一個基于Linux的硬實時系統。它采用雙內核方法,在原有Linux基礎上設計一個專門處理實時進程的內核,然后把整個Linux作為實時內核上運行的一個低優先級進程。在時鐘精度方面類似KURT_Linux,將系統實時時鐘設置為單次觸發狀態,然后利用TSC提供高達CPU時鐘頻率的定時精度。

Monta Vista Linux是由James Ready領導開發的嵌入式Linux,通過對Linux內核進行內部改造,直接修改原有Linux內核的數據結構等來滿足實時需要。在高精度時鐘方面,拋開傳統的周期中斷CPU的方法,使定時器在需要的任何一個μs產生中斷,但不在每個μs產生中斷,將系統的定時精度提高到μs級。

Linux-SRT是劍橋大學David Ingram的博士論文項目,它簡單地修改了Linux中 Hz的定義,將 Linux時鐘頻率由100 Hz提高到1 024 Hz。這種方式實現起來很簡單,但是由此帶來頻繁的定時中斷使得系統開銷很大。

借鑒KURT-Linux的one-shot思想來提高時鐘精度,并利用高級可編程中斷控制器(APIC)[4]或通過附加的硬件資源實現一個與系統時鐘并行的高精度實時時鐘,在系統中維護一個高精度實時時鐘和一個低精度系統時鐘[5-7],是一種普遍采用的提高時鐘精度的方法。但是在缺乏附加硬件支持或APIC使用受限的應用環境下,只能利用PIT芯片作為高精度時鐘源,在每次中斷處理時要重新計算下一次中斷時間和對PIT進行編程。由于PC的兼容性,PIT芯片位于低速的ISA總線上,頻繁設置定時器硬件也需要耗費大量的時鐘周期。因此one-shot模式時鐘中斷處理時間可能達到標準Linux時鐘中斷處理時間的 7~15倍[8-9]。在強周期應用或有大量定時器集中在某個時段內時超時,需要采取一種不同于one-shot的時鐘模式。

如果系統中沒有任何實時定時器,則系統每隔1 ms會有一次周期性jiffies時鐘中斷,采用one-shot模式使得系統性能下降大約1.5%。如果系統中沒有任何實時定時器,則需要重新將時鐘設置為RTL CLOCK MODE PERIODIC工作模式,并且時鐘周期和標準Linux下時鐘周期一致,使Linux能在系統中不存在實時任務的情況下高效地工作。

2 動態高精度時鐘設計和實現

動態高精度時鐘設計方案借鑒了KURT-Linux思想,但與其不同的是提供一個與標準Linux核心時鐘并行的具有精密刻度的實時時鐘,并與原核心時鐘區別開。采用X86體系CPU提供的TSC作為高精度的時間標度,權衡一定時間段(如一個jiffies)內高精度定時器的數量,設置Linux時鐘中斷模式為標準模式、one-shot模式或高頻周期時鐘模式。實現了μs級定時精度的同時,降低了頻繁計算和設置時鐘芯片的時間代價。

下面給出關鍵的全局變量:

(1)time_mode:表示當前時鐘工作模式。其中-1代表高頻周期時鐘模式,該模式下,根據需要達到的定時精度,設置時鐘芯片以較高的頻率產生周期性中斷;0代表標準模式,時鐘芯片以標準Linux默認的頻率產生周期中斷;1代表one-shot模式,時鐘芯片被設置為單次觸發狀態,即每次給時鐘芯片設置一個超時時間,超時事件發生時,在時鐘中斷處理程序中根據需要再次給時鐘芯片設置一個超時時間。系統啟動時設置為默認值0。

(2)SCALE:時鐘精度提高比。設置高頻周期模式需要的參數,用來表示所需要達到的時鐘精度相對普通Linux時鐘精度的提高倍數。

(3)Threshold:閾值。如果即將在某一時間段內超時的實時定時器數量大于預設值,系統設置硬件定時器工作在高頻周期時鐘模式。

2.1 時鐘中斷處理

為了加強Linux的實時功能,同時又要保持Linux的完整性,本方案的動態多模式時鐘機制以模塊化的方式實現有關實時部分的功能,并利用接口函數實現實時模塊與Linux核心的聯系。

(1)標準模式。標準模式下的中斷處理首先查詢實時定時器隊列中是否有實時定時器在下一個系統時鐘中斷(jiffies+1)之前超時,即在(jiffies,jiffies+1)內是否有實時定時器要處理,根據實時定時器數量設置時鐘芯片的工作模式,執行do_timer_interrupt()等函數維護系統相關時間,標記下半部。

(2)one_shot模式。one-shot模式下的中斷處理先判斷jiffies時鐘是否到期,如果到期:

①查詢實時定時器隊列中是否有實時定時器在下一個系統時鐘中斷(tick+1)之前超時,即在(jiffies,jiffies+1)內有實時定時器要處理 (其超時時間用sub_jiffies表示),然后根據實時定時器數量設置時鐘芯片工作模式。

②執行do_timer_interrupt()函數等維護與系統有關的時間,并標記下半部。

如果jiffies時鐘未到期,則查詢實時定時器鏈表,根據其最早超時實時定時器的超時時間與當前時間的差值設置時鐘芯片產生下一次中斷的時間。

(3)高頻周期時鐘模式。高頻周期模式下中斷處理先判斷jiffies時鐘是否到期,如果系統時鐘節拍到期,執行上述①、②模式。否則,如果有實時定時器超時,標記中斷下半部;如果沒有實時定時器超時則直接返回。

對超時定時器的處理都留到時鐘中斷下半部(softirq)處理,超時的實時定時器優先得到處理,以盡可能保證實時定時器的及時處理,隨后處理普通Linux的定時器,時鐘中斷處理過程如圖1所示。

2.2 定時器組織

普通Linux系統原有的粗粒度定時器對于內核的穩定和不要求高精度定時的非實時應用仍是合適的,只是針對有高精度定時要求的實時應用組織一個高精度定時器隊列HRT_list,隊列中的定時器按超時時間非降序排列,隊列中第一個定時器的超時時間就是隊列的最早超時時間。

原Linux內核中的定時器是通過稱為CTW(Cascading Timer Wheel)的結構管理和維護,并因此使得對定時器的插入、刪除等操作的時間為0(1)。本文把HRT_list隊列和CTW結合起來以降低定時器處理時間、提高效率。把需要較長時間才超時的實時定時器仍舊插入到原定時器隊列中,借助該隊列維護。在每次系統時鐘中斷處理的下半部處理完超時的實時定時器后,把在下一次系統時鐘中斷前超時的高精度定時器從原隊列移除,并插入到HRT_list隊列中。因此,HRT_list隊列中所需要維護的高精度實時定時器也是有限的,避免了維護一個大規模定時器隊列的開銷,近似實現了0(1)的系統開銷。

3 性能分析與測試

3.1 性能分析

當系統中沒有高精度定時器時,PIT仍以Linux系統默認的頻率觸發時鐘中斷,在每一次系統時鐘中斷處理過程中,只需要判斷工作模式以及下一次jiffies中斷前有否實時定時器超時,經測試由此而帶來的處理時間不超過1us,增加系統負擔<0.1%,不會影響系統的性能。當在某個時間段內系統中實時定時器不多于閾值時,系統時鐘工作在類似KURT-Linux的one-shot模式,同時維持普通Linux系統時鐘的穩定。而由此而帶來的系統負擔是可以接受的[3]。

當系統中存在大量實時定時器或在某個時間段內即將超時的實時定時器數量超過一定值(閾值)時,相對于one-shot模式需要頻繁地計算下次中斷時間,并重新編程在低速的ISA總線上的PIT的時間代價是可取的,證明如下:

用Thw表示中斷的硬件處理時間,Tisr表示中斷程序上半部執行時間,n代表某個時段內(一個jiffies內)超時的定時器數量。得到兩種模式下總的時鐘中斷處理時間關系式:

由式(1)得到閾值計算公式:

顯然,當某個時段內超時的定時器數量大于Threshold時,采用高頻周期模式的時間開銷就會小于one-shot模式。

3.2 模擬測試

測試環境為Pentium4 3.0 GHz CPU,1GDDR內存的硬件平臺和2.6.15.6版本內核的Fedora core linux操作系統平臺。

根據數控實時任務的要求設定了周期為0.1 ms、1 ms和100 ms的進程模擬數控實時周期任務[10],統計運行1 000次的數據,比較改進后的高精度定時器和原linux定時器的平均定時偏差,并令閾值為30,設置周期任務數量為4、20、40,使時鐘工作在不同模式下。測試結果如表1所示。

表1 定時器定時偏差比較

由測試數據對比,原linux系統的定時平均偏差為968 μs,改進后系統的定時平均偏差為 34 μs。顯而易見,改進后的定時器定時精度大大提高,達到10 μs級,能滿足數控系統應用的要求。

在原Linux內核和改進后的高精度定時器內核上睡眠50 μs各1 000次,測試實際睡眠時間所得結果與表1類似,50 μs的實際睡眠時間從(2.001~2.116)ms級降到(57~91)μs級。

全軟件數控系統以應用軟件的形式實現運動控制,是開放式數控系統的發展方向。開源的Linux是開發具有自主知識產權數控系統的理想平臺,但是其粗糙的時鐘粒度是普通Linux直接應用于數控系統的最大障礙,因此需要細化Linux的時鐘粒度提高其實時性。

簡單地提高系統時鐘頻率將引起頻繁的中斷處理,導致系統性能的下降。KURT-Linux采用的one-shot方式將周期性的時鐘中斷改進為單次觸發狀態,實現了μs級的定時精度。本文分析了普通Linux時鐘機制和幾種實時Linux操作系統細化時鐘精度的方式,提出了一種混合多種時鐘模式的動態時鐘機制,達到了CNC要求的時鐘精度。最后的性能分析和模擬測試證實了新時鐘機制的技術性能。

[1]李迪,萬加富,葉峰,等.軟數控系統混合任務兩級調度策略[J].機械工程學報,2008,44(12):157-162.

[2]王霞,馬忠梅,何小慶,等.提高嵌入式 linux時鐘精度的方法[J].計算機工程,2006,32(23):70-96.

[3]施映,何嘉.KURT-Linux實時性研究及改進策略[J].計算機科學,2006,33(7):417-420.

[4]丁一,胡封林,李國寬.高級可編程中斷控制系統的研究[J].計算機工程與科學,2005,27(12):97-100.

[5]范劍英,吳巖,賈佳,等.Linux2.6實時性分析與改進方案[J].哈爾濱理工大學學報,2008,13(1):24-28.

[6]於時才,繆東升,孫華,等.Linux2.6調度系統的分析與改進[J].微計算機信息,2007,24(5-3):252-254.

[7]周鵬,周明天.linux內核中一種高精度定時器的設計與實現[J].計算機技術與發展,2006,16(4):73-78.

[8]SRINIVASAN B,PATHER S,HILL R,et al.A firm real-time system implementation using commercial off-theshelf hardware and free software[R].rtas.Fourth IEEE Real-Time Technology and Applications Symposium(RTAS’98),1998.

[9]李小群,趙慧斌,葉以民,等.一種基于時鐘粒度細化的Linux實時化方案[J].計算機研究與發展,2003,40(5):734-740.

[10]姚鑫驊,潘雪增,傅建中,等.數控系統的混合任務模型及其最優調度算法研究 [J].浙江大學學報,2006,40(8):1315-1319.

Mixed-clock mode to improve Linux clock accuracy

Zhang Jian,Liu Qingkun,Wang Yiqi,Zhou Jiao

(School of Computer and Information Technology,Liaoning Normal University,Dalian 116081,China)

Clock-precision affects directly that whether the real-time task can be responded timely and scheduled,CNC system requirements its software platform to provide clock-precision of ms-level.Because the characteristics for Linux operating system is free source,it is an ideal for development of numerical control system with independent property rights,but the ms-level clock precision is too rough.Combination of the above methods,a dynamic-clock system of hybrid multi-clock model is proposed to improve Linux clock-precision.Finally,simulation tests show that the system can meet the requirements of CNC system.

CNC;Linux system;clock precision;timer

TP316.2

A

1674-7720(2011)03-0054-04

2010-07-03)

張健,男,1974年生,碩士研究生,主要研究方向:嵌入式操作系統。

劉青昆,男,1971年生,副教授,博士,主要研究方向:嵌入式操作系統,分布式系統與并行計算。

王異奇,女,1985年生,碩士研究生,主要研究方向:嵌入式操作系統。

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 欧美在线网| 亚洲一区二区约美女探花| 综合色区亚洲熟妇在线| 影音先锋丝袜制服| 亚洲一区无码在线| 黄色污网站在线观看| 日本在线亚洲| 亚洲视频欧美不卡| 国产精品亚洲综合久久小说| 欧美国产日韩在线| 91在线无码精品秘九色APP| 精品久久久久无码| 欧美一级高清片久久99| 黄色国产在线| 国产精品99r8在线观看| 日韩a在线观看免费观看| 国产精品一区在线麻豆| 亚洲综合一区国产精品| 亚洲无码免费黄色网址| 国产精品无码翘臀在线看纯欲| 一本综合久久| 91原创视频在线| 亚洲AV无码乱码在线观看裸奔| 国产人免费人成免费视频| 91精品视频网站| 制服丝袜国产精品| 性色生活片在线观看| 超碰精品无码一区二区| 亚洲视频a| 成年A级毛片| 永久免费无码成人网站| 欧美www在线观看| 91精品啪在线观看国产91九色| 久热精品免费| 国产一二三区视频| 日本免费a视频| 国产免费久久精品99re丫丫一| 91精品啪在线观看国产60岁 | 日韩精品一区二区三区视频免费看| 日本三级欧美三级| 波多野结衣一区二区三区四区视频 | 996免费视频国产在线播放| 久久五月视频| 精品乱码久久久久久久| 伊人久综合| 在线一级毛片| 无码乱人伦一区二区亚洲一| 亚洲91精品视频| 欧美激情视频一区| 成人无码一区二区三区视频在线观看| 尤物国产在线| 国产成+人+综合+亚洲欧美| 最新加勒比隔壁人妻| 成人毛片在线播放| 激情午夜婷婷| 日本五区在线不卡精品| 国产精品福利导航| 婷婷六月综合网| 亚洲国产天堂在线观看| 国产成人艳妇AA视频在线| 91人妻在线视频| AV不卡在线永久免费观看| 欧美日韩综合网| 国产免费人成视频网| 蜜桃视频一区| 中文字幕2区| 黄色成年视频| 一级片免费网站| 久久精品国产免费观看频道| 在线视频亚洲色图| 国产精品视频猛进猛出| 色首页AV在线| 丁香婷婷综合激情| 欧美三级视频网站| 人妻精品全国免费视频| 久久久久人妻一区精品色奶水| 国产亚洲美日韩AV中文字幕无码成人 | 亚洲天堂视频在线免费观看| 无码av免费不卡在线观看| 免费中文字幕在在线不卡 | 国产成人三级在线观看视频| 真人高潮娇喘嗯啊在线观看|