• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于APIC的高精度定時(shí)器設(shè)計(jì)

      2014-06-06 10:46:47杜承烈
      計(jì)算機(jī)工程 2014年9期
      關(guān)鍵詞:鏈表內(nèi)核線程

      楊 皓,江 南,杜承烈

      (1.西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,西安710129;2.中國船舶重工集團(tuán)公司750試驗(yàn)場(chǎng),昆明650051)

      基于APIC的高精度定時(shí)器設(shè)計(jì)

      楊 皓1,江 南2,杜承烈1

      (1.西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,西安710129;2.中國船舶重工集團(tuán)公司750試驗(yàn)場(chǎng),昆明650051)

      在操作系統(tǒng)開發(fā)過程中需要一定精度的計(jì)時(shí)器支持。在Windows實(shí)時(shí)擴(kuò)展改造過程中,針對(duì)原有定時(shí)精度低和波動(dòng)較大的問題,提出一種基于高級(jí)可編程中斷控制器(APIC)的高精度定時(shí)器設(shè)計(jì)方案。利用CPU片上結(jié)構(gòu)APIC的計(jì)數(shù)寄存器編程,構(gòu)建高精度時(shí)鐘。運(yùn)用內(nèi)核驅(qū)動(dòng)建立內(nèi)核調(diào)度管理,通過內(nèi)存映射提高用戶態(tài)到內(nèi)核態(tài)的數(shù)據(jù)傳輸速度,保證實(shí)時(shí)性能。利用DLL提供一組和內(nèi)核交互的定時(shí)器接口供用戶使用。實(shí)驗(yàn)結(jié)果表明,該方案有效解決了定時(shí)精度和穩(wěn)定性問題,構(gòu)造的定時(shí)器性能穩(wěn)定,具有良好的實(shí)用性。

      高級(jí)可編程中斷控制器;定時(shí)器;高精度;穩(wěn)定性;內(nèi)存映射;實(shí)時(shí)性

      1 概述

      在80x86體系機(jī)構(gòu)上,操作系統(tǒng)內(nèi)核和時(shí)鐘常用到定時(shí)器電路。常見的時(shí)鐘有實(shí)時(shí)時(shí)鐘(RTC)、時(shí)間戳計(jì)數(shù)器(TSC)、可編程定時(shí)器(PIT)、高精度事件定時(shí)器(HPET)、高級(jí)可編程中斷控制器(Advanced Programmable Interrupt Controller,APIC)定時(shí)器以及電源管理定時(shí)器等[1]。而在當(dāng)前的操作系統(tǒng)環(huán)境下,雖然硬件性能達(dá)標(biāo),但系統(tǒng)提供的時(shí)鐘精度往往不高,有些甚至達(dá)不到毫秒級(jí)別。在一些系統(tǒng)底層工程中,如操作系統(tǒng)的實(shí)時(shí)化改造,有時(shí)需要更高級(jí)別精度的定時(shí)器,來實(shí)現(xiàn)更為精密的操控。而多核系統(tǒng)中Local APIC定時(shí)器一般處于閑置狀態(tài)[2]。同時(shí)高級(jí)可編程中斷控制器處理之后硬件支持精度至少可以滿足微秒精度[3]。本文基于APIC提出了Windows系統(tǒng)下自定義高精度實(shí)時(shí)器的實(shí)現(xiàn)方法。

      2 Local APIC

      在x86體系中,每個(gè)邏輯處理器都有自己的local APIC,這屬于片上結(jié)構(gòu)。從Pentium4和Intel Xeon處理器開始,APIC結(jié)構(gòu)進(jìn)一步擴(kuò)展,形成了xAPIC體系,之后又在xAPIC基礎(chǔ)上再進(jìn)一步擴(kuò)展形成了x2APIC體系[4]。結(jié)構(gòu)的升級(jí)帶來的更多的功能,但是基本功能還是保持不變的,其基本結(jié)構(gòu)如圖1所示。

      圖1 Local APIC結(jié)構(gòu)

      每個(gè)local APIC都包含了一組寄存器,用來控制本地和外部中斷的產(chǎn)生、發(fā)送和接收,這些寄存器組均以內(nèi)存映射的形式映射到物理地址空間,因此可以直接訪問內(nèi)存進(jìn)行控制。APIC模式的寄存器則映射到MSR寄存器組,從而代替了內(nèi)存映射。在進(jìn)行操作時(shí)一般使用RDMSR和WRMSR指令完成[4]。

      2.1 APIC計(jì)數(shù)相關(guān)寄存器

      本文以local APIC寄存器映射到物理地址中為例。其寄存器的地址以APIC_BASE作為基地址,每個(gè)APIC寄存器都有自己對(duì)應(yīng)的偏移量,如 local APIC ID寄存器偏移量為20H,那么它的地址就為APIC_BASE+20H。在系統(tǒng)中APIC_BASE的值一般為FEE00000H。

      Local APIC定時(shí)器實(shí)質(zhì)是由LVT timer寄存器編程產(chǎn)生APIC timer中斷來實(shí)現(xiàn)的。這些寄存器主要有以下4種:

      (1)LVT timer寄存器。

      此寄存器偏移量是320H。它是LVT寄存器之一,使用定時(shí)器前,首先需要設(shè)置此寄存器。主要設(shè)置定時(shí)器的觸發(fā)模式。Vector為中斷描述符,寄存器描述如圖2所示。

      圖2 LVT timer寄存器

      (2)Divide configuration寄存器

      此寄存器也叫分頻寄存器,偏移量為3E0H。local APIC計(jì)數(shù)器使用固定的時(shí)鐘頻率,但通過此寄存器可以進(jìn)行分頻操作,從而確定計(jì)時(shí)精度。此基準(zhǔn)時(shí)鐘一般都是系統(tǒng)總線頻率。以Intel處理器來說,也就是 CPU外頻。該寄存器定義如圖3所示。

      圖3 Divide Configuration寄存器

      (3)Initial-count寄存器和Current-count寄存器

      初始計(jì)數(shù)寄存器地址偏移量為380H,當(dāng)前計(jì)數(shù)寄存器偏移量為390H。這2個(gè)寄存器成對(duì)使用。它們均是32位寄存器,計(jì)時(shí)開始前要設(shè)定初始計(jì)數(shù)寄存器的值。一旦此值設(shè)定,APIC timer將會(huì)復(fù)制此值到只讀的當(dāng)前計(jì)數(shù)寄存器(對(duì)用戶而言)。計(jì)時(shí)開始, Current-count值會(huì)遞減,直到為0產(chǎn)生時(shí)鐘中斷。

      2.2 APIC timer計(jì)數(shù)模式

      APIC timer模式設(shè)定由上文可知,主要是對(duì)于LVT timer寄存器的設(shè)定。它有3種計(jì)數(shù)模式,分別是One shot(一次性計(jì)數(shù))、Period(定期計(jì)數(shù))、TscDeadline(達(dá)到tsc值計(jì)數(shù))。

      當(dāng)為One shot模式時(shí),計(jì)數(shù)器在Current-count值為0產(chǎn)生一次時(shí)鐘中斷后,即會(huì)停止工作。除非重新寫入一個(gè)Initial-count值,才會(huì)再次激活定時(shí)。若使用Period模式,當(dāng)Current-count值為0時(shí),產(chǎn)生時(shí)鐘中斷。而APIC會(huì)自動(dòng)再次裝載Initial-count的值到Current-count中,重新開始計(jì)數(shù)。這就會(huì)周期性的產(chǎn)生timer中斷,除非Initial-count設(shè)定為0才會(huì)停止。TSC-deadline模式需要CPU另行支持,只用IA32_TSC_DEADLINE寄存器進(jìn)行計(jì)數(shù)。此寄存器為64位,當(dāng)TSC值大于或等于此寄存器的值時(shí),將產(chǎn)生時(shí)鐘中斷[5]。

      3 Windows下高精度定時(shí)器的設(shè)計(jì)實(shí)現(xiàn)

      本文在Windows系統(tǒng)中基于Local APIC的計(jì)數(shù)器功能,設(shè)計(jì)實(shí)現(xiàn)了一種高精度定時(shí)器。此定時(shí)器在用戶態(tài)提供了Sleep以及觸發(fā)模式定時(shí)器的用戶接口。定時(shí)器精度可以達(dá)到微妙級(jí)別,且具有良好的穩(wěn)定性。

      整個(gè)定時(shí)器系統(tǒng)設(shè)計(jì)為4個(gè)層次,最底層為APIC硬件支持層,其上是內(nèi)核驅(qū)動(dòng)層,內(nèi)核驅(qū)動(dòng)層中包含了APIC的關(guān)鍵操作,同時(shí)定時(shí)器的觸發(fā)和管理主要在此層內(nèi)完成。內(nèi)核驅(qū)動(dòng)之上是DLL交互層,提供一些用戶接口與內(nèi)核交互功能。如設(shè)定精度,注冊(cè)定時(shí)器等,最上層為用戶應(yīng)用層。定時(shí)器系統(tǒng)框架如圖4所示。

      圖4 定時(shí)器系統(tǒng)框架

      3.1 內(nèi)核驅(qū)動(dòng)層設(shè)計(jì)實(shí)現(xiàn)

      內(nèi)核驅(qū)動(dòng)是一個(gè)NT框架的驅(qū)動(dòng)程序,主要是提供了一種內(nèi)核訪問操作的權(quán)限,使得可以映射APIC寄存器進(jìn)行操作。根據(jù)APIC工作方式,設(shè)計(jì)了內(nèi)核工作流程如圖5所示。

      圖5 內(nèi)核驅(qū)動(dòng)層工作設(shè)計(jì)流程

      初始化時(shí)主要是進(jìn)行定時(shí)器相關(guān)數(shù)據(jù)結(jié)構(gòu)初始化。由于定時(shí)器只是一種周期性任務(wù),因此將定時(shí)器設(shè)定為一個(gè)線程內(nèi)核對(duì)象,此對(duì)象應(yīng)主要記錄任務(wù)線程id、句柄以及喚醒時(shí)間等。系統(tǒng)管理數(shù)據(jù)主要包括了一組預(yù)先申請(qǐng)的線程內(nèi)核對(duì)象以及等待和就緒鏈表的鏈表頭。等待鏈表中的內(nèi)核對(duì)象按照等待時(shí)間升序排列,每創(chuàng)建一個(gè)定時(shí)器,即生成一個(gè)內(nèi)核對(duì)象插入此鏈表中。若定時(shí)器已經(jīng)觸發(fā),任務(wù)開始運(yùn)行的對(duì)象則插入就緒鏈表。

      在驅(qū)動(dòng)啟動(dòng)時(shí),首先初始化上述管理數(shù)據(jù)。然后是添加APIC中斷處理例程。目前的操作系統(tǒng)默認(rèn)APIC都是開啟的,Initial count默認(rèn)為0,此時(shí)計(jì)數(shù)器并不工作產(chǎn)生中斷。添加中斷處理需要獲取中斷描述符表(IDT),在其中添加APIC timer中斷處理程序描述符使其優(yōu)先級(jí)最高,這樣可以讓其中斷優(yōu)先得到相應(yīng)[6]。中斷響應(yīng)延遲影響著系統(tǒng)其它方面的實(shí)時(shí)性能[7]。在中斷處理中基本不做有效工作,而是將定時(shí)器管理觸發(fā)的大部分工作放入DPC例程中進(jìn)行。這樣可以有效地保證時(shí)鐘計(jì)時(shí)的準(zhǔn)確性。避免了在中斷狀態(tài)的時(shí)間過長問題。然后等待用戶設(shè)定定時(shí)器精度。一旦用戶設(shè)定精度通過Ioctl傳入內(nèi)核,則根據(jù)傳入精度值設(shè)定寄存器。

      中斷處理添加完成之后,就需要設(shè)定定時(shí)器相關(guān)寄存器,使得APIC計(jì)數(shù)器開始工作。設(shè)定timer相關(guān)寄存器。主要是對(duì)LVT timer寄存器、分頻寄存器和Initial count寄存器進(jìn)行設(shè)置。設(shè)定timer為周期循環(huán)(Period)模式,分頻為1。將Initial-count寄存器設(shè)定為傳入數(shù)據(jù)后,計(jì)數(shù)開始。寄存器設(shè)定代碼示例如下:

      計(jì)數(shù)開始后,中斷處理DPC例程中完成定時(shí)器的管理工作。每次中斷處理中首先判斷下次調(diào)度時(shí)間(當(dāng)前超時(shí)最短任務(wù)時(shí)間)是否到達(dá),若到達(dá)則插入DPC例程,在此例程中遍歷等待鏈表,恢復(fù)喚醒時(shí)間已到的線程對(duì)象。由于此鏈表中的線程對(duì)象是按照喚醒時(shí)間升序排列的,因此遍歷直到第一個(gè)喚醒時(shí)間未到的對(duì)象為止。根據(jù)等待鏈表第一個(gè)對(duì)象的喚醒時(shí)間更新下次調(diào)度時(shí)間,若空則說明沒有任務(wù),將其設(shè)為最大值[8]。

      3.2 DLL交互層的設(shè)計(jì)與實(shí)現(xiàn)

      在完成內(nèi)核驅(qū)動(dòng)之后,需要提供一個(gè)和內(nèi)核交互的DLL交互層,以方便用戶使用定時(shí)器。在此DLL種主要是實(shí)現(xiàn)了定時(shí)器基準(zhǔn)頻率獲取、精度設(shè)定等功能,同時(shí)向用戶提供了定時(shí)器創(chuàng)建、設(shè)置、退出等常用操作?;鶞?zhǔn)頻率獲取是在用戶加載DLL時(shí)自動(dòng)完成的,而精度由用戶設(shè)定。精度設(shè)定接口的實(shí)現(xiàn)可以采用Ioctl進(jìn)行信息交換,利用Windows這種消息傳遞機(jī)制觸發(fā)時(shí)鐘計(jì)數(shù)[9]。此過程中由用戶態(tài)將Initial count寄存器的值傳入,進(jìn)而設(shè)定。定時(shí)器相關(guān)接口則主要是將創(chuàng)建的任務(wù)信息注冊(cè)到定時(shí)器內(nèi)核中,同時(shí)進(jìn)行一些設(shè)定或狀態(tài)更改,可根據(jù)具體的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì)實(shí)現(xiàn)。

      在設(shè)定精度之前,首先要做的是獲取定時(shí)器的基準(zhǔn)頻率。APIC定時(shí)器的基準(zhǔn)頻率是system bus頻率,也就是外頻,通過wmic指令可以直接獲取外頻數(shù)值。但是在實(shí)際應(yīng)用中,由于可能會(huì)出現(xiàn)超頻等現(xiàn)象,而此指令獲取的值只是額定的出廠設(shè)置,因此還需要進(jìn)一步完善。依據(jù)外頻與主頻有固定的倍數(shù)關(guān)系:主頻=外頻×倍頻。獲取CPU出廠的額定主頻后,同上述獲得的原始外頻一起先計(jì)算出倍頻。確定倍頻之后,再次查詢注冊(cè)表或利用rdtsc匯編指令計(jì)算得出當(dāng)前真實(shí)主頻,從而反算得出真實(shí)的外頻,此時(shí)得到的才是系統(tǒng)有效的總線頻率。利用總線頻率就可以設(shè)定Initial-count寄存器的值,也就是本文定時(shí)器精度。具體流程如圖6所示。

      圖6 定時(shí)器精度設(shè)定流程

      在設(shè)置定時(shí)器精度完成之后,需要完成定時(shí)器周期任務(wù)的創(chuàng)建與注冊(cè)。所有的周期任務(wù)均可設(shè)定為一個(gè)標(biāo)準(zhǔn)的線程入口函數(shù),在此函數(shù)中主要是一個(gè)while(1)的循環(huán)語句。在初始化定時(shí)器時(shí),將用戶定義的定時(shí)器任務(wù)入口地址及參數(shù)作為此標(biāo)準(zhǔn)線程的參數(shù)傳入,在while語句中執(zhí)行此函數(shù),這樣就可以達(dá)到重復(fù)執(zhí)行的目的。每執(zhí)行一次,更新此內(nèi)核線程對(duì)象的喚醒時(shí)間,然后掛起線程。這樣在時(shí)鐘中斷到來時(shí),若下一次喚醒時(shí)間已到,在有DPC例程喚醒。定時(shí)器任務(wù)偽代碼lpParaml如下:

      其中,lpParam1為標(biāo)準(zhǔn)線程傳入?yún)?shù)。此DLL交互層主要提供接口包括睡眠(Sleep)、創(chuàng)建定時(shí)器(CreateTimer)、設(shè)定定時(shí)器屬性(SetTimerRelative)、退出定時(shí)器(CancelTimer)、刪除定時(shí)器(DeleteTimer)。睡眠不需要?jiǎng)?chuàng)建定時(shí)器,系統(tǒng)會(huì)自動(dòng)記錄當(dāng)前線程的id等信息,并維護(hù)一個(gè)喚醒時(shí)間和周期,同時(shí)將其加入定時(shí)器管理鏈表中。創(chuàng)建定時(shí)器,實(shí)際上就是利用上述任務(wù)邏輯,創(chuàng)建一個(gè)循環(huán)的標(biāo)準(zhǔn)線程,同時(shí)記錄下相關(guān)信息。設(shè)定接口則主要是維護(hù)定時(shí)器結(jié)構(gòu)中的喚醒時(shí)間和周期記錄數(shù)據(jù)[10]。

      4 定時(shí)器測(cè)試

      4.1 精度測(cè)試

      定時(shí)器精度由當(dāng)前系統(tǒng)總線頻率確定,在分頻為1系統(tǒng)總線頻率為200 MHz的情況下,理論上精度最高分辨率為5 ns[11]。實(shí)際上達(dá)不到這樣的精度。因?yàn)槎〞r(shí)器的處理以及系統(tǒng)上下文切換等會(huì)花費(fèi)一些時(shí)間。在實(shí)際應(yīng)用中建議精度設(shè)定到微妙或毫秒級(jí)別。由于直接采用時(shí)間戳計(jì)數(shù)器,并不穩(wěn)定,因此測(cè)定采用HPET高精度計(jì)時(shí)器進(jìn)行測(cè)定[12]。

      一般Windows下精度只能到達(dá)毫秒精度,且穩(wěn)定性比較差。對(duì)Windows和本文的定時(shí)器進(jìn)行精度測(cè)定,在Sleep函數(shù)執(zhí)行時(shí)睡眠時(shí)間逐次從1 ms開始增加到500 ms停止。記錄此過程中每次睡眠的真實(shí)時(shí)間。圖7是測(cè)試結(jié)果折線。為了更清楚的看清折線,此處選取了前200次記錄作圖。

      圖7 定時(shí)器精度測(cè)試結(jié)果

      從圖7可以看出,Windows定時(shí)功能準(zhǔn)確度較差。15 ms以下精度均不能達(dá)到,而且精度增加過程呈階梯狀。相比APIC定時(shí)器精度可以有效達(dá)到1 ms,精度增加則基本呈線性增長。在使用過程中可以自由的設(shè)定時(shí)長,解決了系統(tǒng)定時(shí)精度差的不足。

      4.2 穩(wěn)定性測(cè)試

      在對(duì)精度進(jìn)行測(cè)試之后,筆者選取了10 ms, 50 ms,100 ms周期,分別在Windows系統(tǒng)和APIC定時(shí)器上進(jìn)行了1 000次連續(xù)測(cè)試。此測(cè)試主要是為了探查2種定時(shí)器在運(yùn)行過程中定時(shí)穩(wěn)定性以及準(zhǔn)確性的。

      筆者對(duì)1 000次測(cè)試結(jié)果進(jìn)行了統(tǒng)計(jì),計(jì)算了測(cè)定周期的平均值和方差。統(tǒng)計(jì)結(jié)果如表1所示??梢钥闯?在準(zhǔn)確度的表現(xiàn)上本文的定時(shí)器遠(yuǎn)遠(yuǎn)優(yōu)于Windows本身定時(shí)器。同時(shí)方差相對(duì)于平均值波動(dòng),APIC定時(shí)器更為穩(wěn)定。

      表1 定時(shí)器穩(wěn)定性測(cè)試統(tǒng)計(jì)結(jié)果

      除統(tǒng)計(jì)結(jié)果外,筆者還選取了前500次測(cè)定結(jié)果作折線圖如圖8所示。從圖8可以看出,本文設(shè)計(jì)的定時(shí)器準(zhǔn)確性高于Windows系統(tǒng)本身。本文設(shè)計(jì)的定時(shí)器在運(yùn)行時(shí),測(cè)定時(shí)間與設(shè)定時(shí)間基本一致,而且波動(dòng)不大。而Windows定時(shí)則不能準(zhǔn)確地到達(dá)設(shè)定周期,準(zhǔn)確率不夠。

      圖8 定時(shí)器穩(wěn)定性測(cè)定結(jié)果

      5 結(jié)束語

      本文在 APIC timer的基礎(chǔ)上,設(shè)計(jì)了一種Windows系統(tǒng)下的自定義的高精度APIC定時(shí)器。以當(dāng)前的系統(tǒng)總線頻率200 MHz計(jì)算,該定時(shí)器精度最高可達(dá)到5 ns。在實(shí)際中因?yàn)闀r(shí)鐘中斷處理等本身需要占有一定時(shí)間,所以會(huì)低于此理論精度,在應(yīng)用時(shí)精度設(shè)定到100 μs或ms以上。由于APIC硬件的支撐,該定時(shí)器準(zhǔn)確率較高,穩(wěn)定性好。因此,自定義精度可以很好地滿足不同時(shí)鐘精度需求,在對(duì)系統(tǒng)進(jìn)行深度開發(fā)、實(shí)時(shí)改造等工作時(shí)可以提供有效的借鑒。

      [1] Bovet D P,Cesati M.深入理解 LINUX內(nèi)核[M].陳莉君,張瓊聲,張宏偉,譯.北京:中國電力出版社,2009.

      [2] 杜旭東,蔣澤軍,王麗芳,等.基于資源重分配的Windows實(shí)時(shí)性改造[J].微電子學(xué)與計(jì)算機(jī),2012, 29(5):193-195.

      [3] 蔣善峰,王麗芳,蔣澤軍.Windows時(shí)鐘機(jī)制的實(shí)時(shí)擴(kuò)展研究[J].微電子學(xué)與計(jì)算機(jī),2012,29(8): 116-119.

      [4] 鄧 志.X86/x64體系探索及編程[M].北京:電子工業(yè)出版社,2012.

      [5] Intel Corporation.Inte@64 and IA-32 Architectures Software Developer's Manual Volume 3B:System Programming Guide,Part 2[Z].2006.

      [6] 潘 漢,莫蘇蘇.基于Local APIC的Windows 2000實(shí)時(shí)化改造[J].電子元器件應(yīng)用,2009,11(10):80-83.

      [7] 吳 訊,馬 媛,董勤鵬.實(shí)時(shí)操作系統(tǒng)實(shí)時(shí)性能測(cè)試技術(shù)研究[J].系統(tǒng)仿真學(xué)報(bào),2013,25(2):313-316.

      [8] Gao Zhigang,Zhang Peifeng,Dai Guojun,et al.A New Implementation Method of Timer for Periodic Tasks[J]. Journal of Embedded Computing,2010,4(1):55-57.

      [9] 林聚偉.Windows內(nèi)核安全編程從入門到實(shí)踐[M].北京:電子工業(yè)出版社,2012.

      [10] 張志明,孫廣清,王 磊.Windows下高精度軟件定時(shí)器的研究與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2003,22(1): 55-57.

      [11] 候 峰,童曉陽.基于APIC時(shí)鐘的嵌入式Linux內(nèi)核實(shí)時(shí)化研究[J].現(xiàn)代電子技術(shù),2010,(14):193-195.

      [12] 廖小勇.基于PC/Windows環(huán)境的實(shí)時(shí)系統(tǒng)研究與實(shí)現(xiàn)技術(shù)[D].上海:同濟(jì)大學(xué),2002.

      編輯 索書志

      Design of High Precision Timer Based on Advanced Programmable Interrupt Controller

      YANG Hao1,JIANG Nan2,DU Cheng-lie1
      (1.School of Computer Science,Northwestern Polytechnical University,Xi'an 710129,China;
      2.750 Testing Ground,China Shipbuilding Industry Corporation,Kunming 650051,China)

      Timer with a certain precision is often required in the process of developing the system.In the Windows real time extending process,aiming at the problem of insufficient original timing accuracy and the fluctuation problem,this paper presents a high precision timer based on local Advanced Programmable Interrupt Controller(APIC).Making use of the counting register programs CPU sheet structure of APIC,it constructs high precision clock effectively,and uses the kernel driver construction scheduling management,memory mapping to improve data transmission speed of user state to guarantee real-time kernel to provide real-time.DLL provides a set of interface for users.Experimental results show that the scheme can effectively solve the problem of timing precision,and it has good usability.

      Advanced Programmable Interrupt Controller(APIC);timer;high precision;stability;memory mapping; real-time

      1000-3428(2014)09-0317-05

      A

      TP391

      10.3969/j.issn.1000-3428.2014.09.063

      國家部委基金資助項(xiàng)目。

      楊 皓(1988-),男,碩士,主研方向:實(shí)時(shí)操作系統(tǒng);江 南,研究員;杜承烈,教授、博士生導(dǎo)師。

      2013-08-05

      2013-10-10E-mail:Email:yanghao525@163.com

      猜你喜歡
      鏈表內(nèi)核線程
      萬物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
      強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      基于二進(jìn)制鏈表的粗糙集屬性約簡(jiǎn)
      跟麥咭學(xué)編程
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
      Linux內(nèi)核mmap保護(hù)機(jī)制研究
      基于鏈表多分支路徑樹的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
      淺談linux多線程協(xié)作
      鏈表方式集中器抄表的設(shè)計(jì)
      Linux線程實(shí)現(xiàn)技術(shù)研究
      东平县| 阳朔县| 襄樊市| 浑源县| 双江| 合水县| 滁州市| 兰州市| 工布江达县| 宣恩县| 大同市| 来安县| 扬中市| 武鸣县| 中宁县| 文化| 滦南县| 靖江市| 格尔木市| 聂拉木县| 平江县| 龙门县| 高唐县| 汝阳县| 闵行区| 泰和县| 靖江市| 剑河县| 彭州市| 吉安市| 泰安市| 绥滨县| 贡山| 广汉市| 封开县| 许昌市| 勃利县| 屯门区| 英山县| 河北区| 布拖县|