《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 面向多媒體應用的嵌入式Linux實時性研究

面向多媒體應用的嵌入式Linux實時性研究

2008-06-10
作者:王建強1,陳建安1,劉鑰婷2

  摘 要: 首先對Linux系統的實時機制作了分析,然后根據多媒體應用" title="多媒體應用">多媒體應用的特點,通過改進Linux系統的實時性" title="實時性">實時性,構建了面向多媒體應用的嵌入式" title="的嵌入式">的嵌入式Linux系統。實驗結果表明,該系統在實時性方面完全可以滿足多媒體應用的需求。
  關鍵詞: 嵌入式系統 實時性 Linux 多媒體應用


  當今信息社會,以多媒體為特征的信息技術和信息產業的發展及應用對人類社會產生的影響和作用愈來愈明顯,愈來愈重要。多媒體技術的發展在很大程度上依賴于多媒體軟件開發的水平。目前不管是支撐多媒體的系統軟件,還是應用軟件,都在能力和數量上難以滿足多媒體飛速發展的需要。特別是多媒體系統軟件的缺乏,一直是制約多媒體產業發展的瓶頸問題之一。
  Linux從1991年誕生之日起至今不過十來年,卻已發展成為一個功能強大、設計完善的操作系統。在嵌入式領域,Linux同樣獲得了飛速發展。Linux具有以下特點:
  (1)Linux操作系統的開放源碼易于定制剪裁,在價格上有竟爭力;
  (2)Linux操作系統的內核小、功能強大、運行穩定、系統強壯、效率高;
  (3)Linux操作系統不僅支持X86 CPU,還可以支持其他數十種CPU芯片;
  (4)Linux支持所有標準的因特網協議,幾乎所有的協議和網絡接口都定制在其中。
  因此,Linux系統是多媒體終端操作系統的首選。
1 通用Linux實時性分析及其在實時性方面的不足
  雖然目前Linux內核在實時性方面有所增強,但由于Linux系統本身是一個面向桌面的系統,所以將它應用于多媒體終端時,在實時性方面仍存在一些問題。
1.1 通用Linux系統的調度策略
  通用Linux系統支持實時和非實時兩種進程,實時進程相對于普通進程具有絕對的優先級。對應地,實時進程采用SCHED_FIFO或者SCHED_RR調度策略" title="調度策略">調度策略,普通的進程采用SCHED_OTHER調度策略。
  SCHED_OTHER調度策略本質上是一種比例共享的調度策略,它的這種設計方法能夠保證進程調度時的公平性:一個低優先級的進程在每一個epoch中也會得到自己應得的那些CPU執行時間,另外它也提供了不同進程的優先級區分,具有高priority值的進程能夠獲得更多的執行時間。
  對于實時進程來說,它們使用基于實時優先級rt_priority的優先級調度策略,但根據不同的調度策略,同一實時優先級的進程之間的調度方法有所不同。
  Linux調度時,要遍歷運行隊列,對隊列中的每一個進程計算goodness值,goodness 最大的進程將被選中運行。根據調度策略的不同,進程的goodness值也要做不同的計算。普通進程的goodness值是在該進程計數值counter基礎上略有浮動,其范圍是0~999。實時進程的goodness值是將該進程實時優先級rt_priority 加上1000。所以實時進程的goodness 總是大于非實時進程,從而保證了實時進程的優先調度權。函數goodness( )如下:
  static inline int goodness(struct task_struct*p,int
  this_cpu,struct mm_struct*this _ mm)
  {int weight;
  weight=-1;
  if(P->policy&SCHED_YIELD) goto out;/*非實時進程*/
  if (p-> policy= =SCHED_OTHER)
  { weight=p一>counter;
  if(! weight)goto out;
  if(P一>mm= =this _ mm!!!p一>mm)
  weight +=1;
  weight +=20一P一>nice;
  goto out;
  }/*軟實時進程*/
  weight= 1000+P一>rt_priority;
  goto out;
  return weight;
  }一
  從上面的goodness()函數可以看出普通Linux內核的進程調度算法只是軟實時的,并不是硬實時的。
1.2 通用Linux實時性方面的缺陷
  (1)Linux系統中的調度單位為10ms,所以它不能夠提供精確的定時;
  (2)當一個進程調用系統調用進入內核態運行時,它是不可被搶占的;
  (3)Linux內核實現使用了大量的封中斷操作會造成中斷的丟失;
  (4)由于使用虛擬內存技術,當發生頁出錯時,需要從硬盤中讀取交換數據,但硬盤讀寫由于存儲位置的隨機性會導致隨機的讀寫時間,這在某些情況下會影響一些實時任務的截止期限;
  (5)雖然Linux進程調度也支持實時優先級,但缺乏有效的實時任務調度" title="任務調度">任務調度機制和調度算法;其網絡子系統的協議處理和其他設備的中斷處理都沒有與它對應的進程的調度關聯起來,并且其自身也沒有明確的調度機制。
2 面向多媒體應用的Linux實時性改進
  提高Linux的實時性一般有兩種方法:一種是對普通的Linux內核的數據結構、調度函數、中斷方式等進行修改,使其能夠處理實時進程。另一種是在Linux內核之外,進行實時性擴展。也就是在普通Linux的基礎之上再設計一個用于專門處理實時進程的內核。為了提高Linux的實時性,并且使之能夠更好地滿足多媒體應用系統的需求,本文采用第一種方法來提高系統的實時性。
2.1 提高系統所支持的時鐘精度
  為了提高Linux系統的實時特性,必須提高系統所支持的時鐘精度。但如果僅僅簡單地提高時鐘頻率,會引起調度負載的增加,從而嚴重降低系統的性能。為了解決這個矛盾, 本文將時鐘芯片設置為單次觸發狀態,即每次給時鐘芯片設置一個超時時間,然后到該超時事件發生時在時鐘中斷處理程序中再次根據需要給時鐘芯片設置一個超時時間。其基本思想是:一個精確的定時意味著時鐘中斷在一個比較精確的時間發生,但并非一定需要系統時鐘頻率達到此精度。它利用CPU的時鐘計數器來提供精度可達CPU主頻的時間精度。
2.2 可搶占式內核設計
  (1)搶占式內核給task struct數據結構增加一個數據項:preempt_count。該數據項由宏preempt_disable()、preempt_enable()、以及preempt_enable_no_resched()所使用。preempt_disable對preempt_count計數進行遞增,preempt_enable對preempt_count進行遞減。preempt_enable宏查看當前進程的preempt_count和need_resched域的內容,如果 preempt_count為0并且need_resched為1,則調用preempt_schedule()函數。該函數將給當前進程的preempt_count項增加一個很大的值,然后調用進程調度函數schedule(),在schedule函數返回后從該進程preempt_count中再減去該值,從而實現內核可搶占。
  (2)修改schedule函數,使它檢測進程的preempt_co-unter是否很大(這是為了屏蔽一些普通調度流程中對于搶占式調度來說是冗余的那些操作),然后執行搶占式調度。同時修改spinlock的代碼。在spin_lock()和spin_try_lock中增加了對于preempt_disable的調用,在spin_unlock()中增加了對于preempt_enable的調用。修改中斷返回的代碼,在其中增加了對于preempt_enable的調用。
  由以上可看出內核的搶占式調度發生在如下情況:在釋放spinlock時,或者當中斷返回時,如果當前執行進程的need_resched被標記,則進行搶占式調度。
2.3 實時任務調度的實現
  在任務切換方面限制Linux不能進入RTOS行列的主要原因是:內核無法及時進行進程調度,即任務調度器schedule()函數不能及時被執行;當中斷返回到內核態時,Linux內核禁止進行進程調度,只有中斷返回到用戶態時,Linux內核才允許進行進程調度。針對這兩點,對Linux內核的相關函數作如下修改:
  (1)當系統從中斷返回到內核態時,強制調用調度函數preemp_schedule(),為此,在arch/i386/kernel/Entry.S中修改如下代碼:
  ……
  #ifdef CONFIG PREEMPT
  cli
  decl preempt count(%ebx)/*恢復內核搶占標志*/
  #endif
  ……
  incl preempt count(%ebx)
  sti
  call SYMBOL_ NAME(preempt_schedule)
  jmp ret_from_intr/*新進程返回ret_from_intr恢復搶占標志后再返回*/
  ……
  (2)對于內核態搶占的任務不要從運行隊列刪除,為此需要對文件kernel/schedule.c作修改,關鍵代碼如下:
  ……
  #ifdef CONFIG PREEMPT
  ctx_sw_off();/*加鎖,禁止內核搶占*/
  #endif
  ……
  #ifdef CONFIG_PREEMPT
  if(prev->state & TASK_PREEMPTED)
  break;/*如果是內核搶占調度,則保留運行隊列*/
  #endif
  ……
  #ifdef CONFIG PREEMPT
  ctx_sw_on_no_preempt();/*解鎖,允許內核搶占*/
  #endif
  ……
  這樣可以解決當中斷返回到內核態時,Linux內核禁止進行進程調度,只有中斷返回到用戶態時,Linux內核才允許進行進程調度的問題,從而增強了任務調度的實時性。
3 嵌入式Linux實時性能測試結果
  測試工具:Linux Trace ToolKit-0.8
  測試環境:Intel Celeron 1.2GHz CPU、256MB SDRAM,通用Linux為Red Hat9.0,RT-Linux為3.0版,Media-Linux即為本文實現的嵌入式Linux。
  測試結果如表1所示。


  可以看出,本文構建的Linux系統的任務響應時間處于十微秒級,完全可以滿足多媒體應用終端的實時性需求。
  根據多媒體應用的特點,在盡可能地保證系統性能的前提下,本文通過提高系統所支持的時鐘精度、設計可搶占式內核、增強實時任務調度改進了通用Linux的實時性(關鍵部分給出了源代碼及數據結構)。實驗結果表明,該系統在實時性方面完全可以滿足多媒體終端應用的需求,具有較好的應用前景。
參考文獻
1 李善平,劉文峰,李程遠.Linux內核2.4版源代碼分析大全[M].北京:機械工業出版社,2001
2 鄒思鐵.嵌入式Linux設計與應用[M].北京:清華大學出版社,2002
3 Yaghmour K著,韓存兵,龔波譯.構建嵌入式Linux系統[M].北京:中國電力出版社,2004
4 Jeffay K.Scheduling Sporadic Tasks with Shared Resources in Hard-Real-Time Systems[J].in Proc.Of the 13th Real-Time Systems Symposuim.Phoenix,Arizona,1992;(12)
5 Embedded Linux nears real time.http://www.edn.com/article/CA450620.html

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久久国产精品一区二区三区| 中文一区字幕| 日韩视频在线一区二区| 亚洲欧美在线视频观看| 日韩视频亚洲视频| 久久久午夜视频| 伊人久久婷婷色综合98网| 国产精品成人观看视频免费| 日韩视频专区| 久久精精品视频| 欧美日韩精品免费观看视频完整| 久久经典综合| 欧美亚洲日本网站| 欧美午夜一区二区三区免费大片| 欧美日韩国产一区二区三区| 欧美色精品天天在线观看视频| 樱桃视频在线观看一区| 欧美影片第一页| 久久免费国产精品| 毛片精品免费在线观看| 巨乳诱惑日韩免费av| 亚洲免费在线视频| 亚洲在线国产日韩欧美| 国产精品一区二区男女羞羞无遮挡| 欧美三级在线视频| 亚洲狼人综合| 欧美成人日韩| 亚洲欧美日韩一区二区三区在线| 欧美福利视频在线| 亚洲尤物影院| 亚洲一区3d动漫同人无遮挡| 久久久久久有精品国产| 国产精品高潮呻吟久久av黑人| 日韩视频中文字幕| 国产精品久久国产愉拍| 亚洲男女自偷自拍图片另类| 亚洲专区一区二区三区| 久久久99精品免费观看不卡| 亚洲天堂黄色| 国产精品视频99| 国产精品视频yy9299一区| 国产一区二区三区黄| 亚洲性av在线| 99pao成人国产永久免费视频| 国产麻豆91精品| 性欧美8khd高清极品| 欧美成人免费一级人片100| 久久精品视频在线观看| 在线亚洲成人| 最新中文字幕一区二区三区| 欧美在线精品免播放器视频| 国产精品成人观看视频国产奇米| 亚洲大片一区二区三区| 欧美激情第1页| 欧美 日韩 国产 一区| 欧美午夜精品理论片a级大开眼界| 久久超碰97人人做人人爱| 欧美电影在线观看| 国产一区久久| 欧美日韩国产精品一卡| 欧美成人免费全部| 在线视频欧美日韩| 99视频精品免费观看| 海角社区69精品视频| 国产视频欧美| 国内成人精品2018免费看| 欧美高清在线一区| 欧美日韩中文字幕在线视频| 欧美gay视频| 亚洲午夜视频在线观看| 午夜精品久久久久久久久| 欧美激情一区二区三区| 国产精品久久9| 欧美日韩一区二区三区在线看| 午夜在线视频观看日韩17c| 精品成人久久| 美女任你摸久久| 欧美日韩中文字幕综合视频| 在线观看国产一区二区| 伊人久久亚洲热| 男人的天堂成人在线| 亚洲欧美一区二区三区久久| 欧美日韩免费视频| 一区二区三区久久精品| 欧美视频亚洲视频| 国产精品一区二区你懂得| 在线成人小视频| 国产精品综合不卡av| 国产精品高潮粉嫩av| 国产精品黄视频| 欧美国产精品久久| 91久久嫩草影院一区二区| 国产麻豆成人精品| 亚洲国产精品女人久久久| 国产精品福利影院| 欧美激情一区二区三区全黄| 午夜精品久久久久| 亚洲九九爱视频| 国产自产2019最新不卡| 国产自产2019最新不卡| 免费观看30秒视频久久| 欧美日韩视频在线第一区| 亚洲国产第一页| 在线中文字幕不卡| 国产精品每日更新在线播放网址| 亚洲国产日韩欧美在线图片| 另类天堂视频在线观看| 欧美在线观看一二区| 欧美三级视频在线播放| 欧美精品久久久久久久| 日韩午夜在线观看视频| 亚洲欧洲日韩在线| 在线日韩电影| 亚洲欧美制服中文字幕| 欧美—级a级欧美特级ar全黄| 亚洲日本一区二区| 久久久久久日产精品| 免费成人高清| 国产亚洲精品bt天堂精选| 亚洲综合欧美日韩| 久久久久一区| 亚洲调教视频在线观看| 欧美日本三级| 欧美精品在线观看一区二区| 欧美日韩极品在线观看一区| 亚洲日韩视频| 亚洲激情图片小说视频| 免费观看一区| 午夜免费在线观看精品视频| 欧美日韩999| 亚洲午夜激情网页| 亚洲黄色精品| 欧美黄网免费在线观看| 亚洲精品视频在线观看免费| 老色鬼精品视频在线观看播放| 国精品一区二区三区| 欧美日韩 国产精品| 亚洲第一精品电影| 欧美另类在线播放| 久久人人爽人人爽爽久久| 久久美女艺术照精彩视频福利播放| 国产在线不卡视频| 国产精品看片你懂得| 国产精品日韩欧美一区| 欧美性久久久| 欧美日韩亚洲综合| 狠狠久久亚洲欧美专区| 伊人久久亚洲热| 性色av一区二区三区红粉影视| 久久精品二区| 亚洲欧美日韩一区在线观看| 在线免费高清一区二区三区| 欧美成人一区二区三区在线观看| 一本色道综合亚洲| 欧美日韩伦理在线| 欧美大色视频| 99精品国产一区二区青青牛奶| 亚洲国产一区二区三区青草影视| 亚洲高清在线播放| 日韩视频在线永久播放| 午夜日本精品| 久久成人国产精品| 国产精品久久久久久久久久久久久久| 久久精品人人做人人爽电影蜜月| 国产精品成人久久久久| 亚洲福利视频二区| 亚洲男女毛片无遮挡| 国产精品久久久久免费a∨| 国外成人在线视频| 香蕉久久夜色精品| 亚洲伦理久久| 国产日产亚洲精品| 蜜臀久久99精品久久久久久9| 亚洲在线视频免费观看| 亚洲欧美美女| 欧美日韩在线不卡一区| 欧美激情亚洲综合一区| 国产精品日韩欧美| 欧美影院在线播放| 欧美精品一区二区三区很污很色的| 国内揄拍国内精品少妇国语| 欧美黑人国产人伦爽爽爽| 欧美色图一区二区三区| 欧美性感一类影片在线播放| 欧美日韩一区二区免费视频| 国产精品亚洲综合一区在线观看| 久久久91精品国产一区二区精品| 久久久蜜桃一区二区人| 免费在线成人av| 国产亚洲福利社区一区| 99re热这里只有精品视频| 欧美伦理91i| 亚洲国产精品成人综合色在线婷婷| 国产综合激情| 亚洲国产成人精品久久久国产成人一区| 欧美日韩aaaaa| 在线视频国内自拍亚洲视频| 亚洲欧洲精品一区二区三区波多野1战4| 久久久久久香蕉网| 亚洲综合首页| 久久综合图片| 亚洲人成在线影院| 久久综合福利| 国产专区精品视频| 欧美黑人多人双交| 欧美日韩精品免费观看| 亚洲一级片在线观看| 亚洲国产老妈| 红桃av永久久久| 欧美乱在线观看| 欧美日韩国产精品一区| 国产欧美一区在线| 久久综合九色综合欧美就去吻| 欧美日韩综合不卡| 一区二区日韩| 欧美亚洲午夜视频在线观看| 在线日韩精品视频| 亚洲福利视频一区二区| 久久久免费观看视频| 久久久久久久久久久成人| 久久久久久久波多野高潮日日| 久久精品国产亚洲高清剧情介绍| 一区二区三区在线高清| 亚洲激情在线播放| 性一交一乱一区二区洋洋av| 国产精品区免费视频| 欧美午夜免费| 欧美日韩视频| 欧美丰满少妇xxxbbb| 一区二区三区高清在线| 99国产精品久久久久老师| 中文欧美日韩| 国产精品久久97| 久久天堂成人| 国产精品网站在线观看| av72成人在线| 在线观看免费视频综合| 欧美成人激情视频| 久久精品青青大伊人av| 久久人人爽人人爽爽久久| 久久久久久97三级| 午夜精品一区二区在线观看| 欧美久久精品午夜青青大伊人| 国产一区二区三区在线观看网站| 国产精品卡一卡二| 一区二区日本视频| 欧美国产精品人人做人人爱| 国产亚洲精品7777| 欧美日韩视频一区二区| 欧美1区免费| 欧美日本免费一区二区三区| 亚洲视频一区在线观看| 久久国产夜色精品鲁鲁99| 久久亚洲视频| 国产精品亚洲一区| 国产精品私拍pans大尺度在线| 欧美四级在线观看| 日韩视频在线一区二区三区| 久久国产视频网| 亚洲视频在线观看网站| 久久久精品免费视频| 女同一区二区| 亚洲精品国久久99热| 久久人人97超碰国产公开结果| 国产一区二区三区的电影| 亚洲一区三区视频在线观看| 亚洲一区二区三区涩| 亚洲精品123区| 国产偷自视频区视频一区二区| 亚洲网站在线看| 欧美在线91| 免费中文字幕日韩欧美| 亚洲自拍高清| 国产精品jizz在线观看美国| 国产精品进线69影院| 亚洲欧美日韩在线不卡| 欧美在线一级va免费观看| 一区二区日韩免费看| 亚洲欧美日韩国产| 久久免费视频在线| 国产精品主播| 欧美日韩国产精品自在自线| 久久综合色影院| 午夜欧美大片免费观看| 亚洲久久一区二区| 国产一区二区三区av电影| 欧美激情精品久久久久久| 欧美ed2k| 亚洲一区二区免费看| 欧美一区二区精品在线| 久久精品视频一| 国产精品电影在线观看| 久久精品99国产精品日本| 欧美婷婷久久| 欧美成人免费小视频| 日韩视频一区二区在线观看| 国产精品久久久久久久第一福利| 国产精品高潮视频| 国产综合色一区二区三区| 国产在线拍揄自揄视频不卡99| 欧美3dxxxxhd| 一区二区三区不卡视频在线观看| 国产日韩欧美三区| 一区二区三区在线视频播放| 国产一区二区三区直播精品电影| 制服诱惑一区二区| 久久亚洲影音av资源网| 国产精品视频精品视频| 亚洲国产精品嫩草影院| 国产在线精品一区二区中文| 亚洲欧美另类综合偷拍| 国产一区二区精品| 国产欧美一区视频| 亚洲视频专区在线| 国产精品jizz在线观看美国| 国产精品久久看| 欧美性大战xxxxx久久久| 欧美高清视频免费观看| 欧美日韩精品欧美日韩精品一| 国内精品模特av私拍在线观看| 在线看欧美视频| 亚洲国产你懂的| 狠狠噜噜久久| 亚洲国产成人tv| 中国成人黄色视屏| 国产精品视频专区| 在线观看成人一级片| 国产亚洲永久域名|