1. RTC(Real Time Clock)
創(chuàng)新互聯(lián)建站自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元池州做網(wǎng)站,已為上家服務(wù),為池州各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
所有PC都有RTC. 它和CPU和其他芯片獨(dú)立。它在電腦關(guān)機(jī)之后還可以正常運(yùn)行。RTC可以在IRQ8上產(chǎn)生周期性中斷. 頻率在2Hz--8192HZ.
Linux只是把RTC用來(lái)獲取時(shí)間和日期. 當(dāng)然它允許進(jìn)程通過(guò)對(duì)/dev/rtc設(shè)備來(lái)對(duì)它進(jìn)行編程。Kernel通過(guò)0x70和0x71 I/O端口來(lái)訪問(wèn)RTC。
2. TSC(Time Stamp Counter)
80x86上的微處理器都有CLK輸入針腳. 從奔騰系列開(kāi)始. 微處理器支持一個(gè)計(jì)數(shù)器. 每當(dāng)一個(gè)時(shí)鐘信號(hào)來(lái)的時(shí)候. 計(jì)數(shù)器加1. 可以通過(guò)匯編指令rdtsc來(lái)得到計(jì)數(shù)器的值。通過(guò)calibrate_tsc可以獲得CPU的頻率. 它是通過(guò)計(jì)算大約5毫秒里tsc寄存器里面的增加值來(lái)確認(rèn)的?;蛘呖梢酝ㄟ^(guò)cat /proc/cpuinfo來(lái)獲取cpu頻率。tsc可以提供比PIT更精確的時(shí)間度量。
3. PIT(Programmable internval timer)
除了RTC和TSC. IBM兼容機(jī)提供了PIT。PIT類似微波爐的鬧鐘機(jī)制. 當(dāng)時(shí)間到的時(shí)候. 提供鈴聲. PIT不是產(chǎn)生鈴聲. 而是產(chǎn)生一種特殊中斷. 叫定時(shí)器中斷或者時(shí)鐘中斷。它用來(lái)告訴內(nèi)核一個(gè)間隔過(guò)去了。這個(gè)時(shí)間間隔也叫做一個(gè)滴答數(shù)。可以通過(guò)編譯內(nèi)核是選擇內(nèi)核頻率來(lái)確定。如內(nèi)核頻率設(shè)為1000HZ,則時(shí)間間隔或滴答為1/1000=1微秒。滴答月短. 定時(shí)精度更高. 但是用戶模式的時(shí)間更短. 也就是說(shuō)用戶模式下程序執(zhí)行會(huì)越慢。滴答的長(zhǎng)度以納秒形式存在tick_nsec變量里面。PIT通過(guò)8254的0x40--0x43端口來(lái)訪問(wèn)。它產(chǎn)生中斷號(hào)為IRQ 0.
下面是關(guān)于pIT里面的一些宏定義:
HZ:每秒中斷數(shù)。
CLOCK_TICK_RATE:值是1,193,182. 它是8254芯片內(nèi)部振蕩器頻率。
LATCH:代表CLOCK_TICK_RATE和HZ的比率. 被用來(lái)編程PIT。
setup_pit_timer()如下:
spin_lock_irqsave(i8253_lock, flags);
outb_p(0x34,0x43);
udelay(10);
outb_p(LATCH 0xff, 0x40);
udelay(10);
outb (LATCH 8, 0x40);
spin_unlock_irqrestore(i8253_lock, flags);
4. CPU Local Timer
最近的80x86架構(gòu)的微處理器上的local apic提供了cpu local timer.他和pit區(qū)別在于它提供了one-shot和periodic中斷。它可以使中斷發(fā)送到特定cpu。one-shot中斷常用在實(shí)時(shí)系統(tǒng)里面。
可以在/etc/crontab文件中添加30 06 * * * mouren mplayer /home/1;就是在每天的六點(diǎn)三十用mplayer 播放/home/1音頻或視頻文件,當(dāng)然是以中間的mouren的權(quán)限來(lái)執(zhí)行shell命令的
at命令用來(lái)安排一個(gè)程序在未來(lái)的做一次一次性執(zhí)行。所有提交的任務(wù)都被放在 /var/spool/at 目錄下并且到了執(zhí)行時(shí)間的時(shí)候通過(guò)atd守護(hù)進(jìn)程來(lái)執(zhí)行。還有不會(huì)的請(qǐng)參考《linux就該這么學(xué)》,針對(duì)各種linux疑難雜癥,幫助linux學(xué)習(xí)者。