日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux操作系統(tǒng)內核的時鐘中斷機制( 三 )


通道計數(shù)器的最大值是10000h,所對應的時鐘中斷頻率是1193181/(65536)=18.2HZ,也就是說,此時一秒鐘之內將產(chǎn)生18.2次時鐘中斷 。
2、 PIT的I/O端口
在i386平臺上,8254芯片的各寄存器的I/O端口地址如下:

Port Description;
40h Channel 0 counter(read/write);
41h Channel 1 counter(read/write);
42h Channel 2 counter(read/write);
43h PIT control word(write only)
其中,由于通道0、1、2的計數(shù)器是一個16位寄存器,而相應的端口卻都是8位的,因此讀寫通道計數(shù)器必須進行進行兩次I/O端口讀寫操作,分別對應于計數(shù)器的高字節(jié)和低字節(jié),至于是先讀寫高字節(jié)再讀寫低字節(jié),還是先讀寫低字節(jié)再讀寫高字節(jié),則由PIT的控制寄存器來決定 。8254 PIT的控制寄存器的格式如下:
(1)bit[7:6]——Select Counter,選擇對那個計數(shù)器進行操作 ?!?0”表示選擇Counter 0,“01”表示選擇Counter 1,“10”表示選擇Counter 2,“11”表示Read-Back Command(僅對于8254,對于8253無效) 。
(2)bit[5:4]——Read/Write/Latch格式位 ?!?0”表示鎖存(Latch)當前計數(shù)器的值;“01”只讀寫計數(shù)器的高字節(jié)(MSB);“10”只讀寫計數(shù)器的低字節(jié)(LSB);“11”表示先讀寫計數(shù)器的LSB,再讀寫MSB 。
(3)bit[3:1]——Mode bits,控制各通道的工作模式 ?!?00”對應Mode 0;“001”對應Mode 1;“010”對應Mode 2;“011”對應Mode 3;“100”對應Mode 4;“101”對應Mode 5 。
(4)bit[0]——控制計數(shù)器的存儲模式 。0表示以二進制格式存儲,1表示計數(shù)器中的值以BCD格式存儲 。
2.1 PIT通道的工作模式
PIT各通道可以工作在下列6種模式下:
1. Mode 0:當通道處于“Terminal count”狀態(tài)時產(chǎn)生中斷信號 。
2. Mode 1:Hardware retriggerable one-shot 。
3. Mode 2:Rate Generator 。這種模式典型地被用來產(chǎn)生實時時鐘中斷 。此時通道的信號輸出管腳OUT初始時被設置為高電平,并以此持續(xù)到計數(shù)器的值減到1 。然后在接下來的這個clock-cycle期間,OUT管腳將變?yōu)榈碗娖?,直到計?shù)器的值減到0 。當計數(shù)器的值被自動地重新加載后,OUT管腳又變成高電平,然后重復上述過程 。通道0通常工作在這個模式下 。
4. Mode 3:方波信號發(fā)生器 。
5. Mode 4:Software triggered strobe 。
6. Mode 5:Hardware triggered strobe 。
2.2 鎖存計數(shù)器(Latch Counter)
當控制寄存器中的bit[5:4]設置成0時,將把當前通道的計數(shù)器值鎖存 。此時通過I/O端口可以讀到一個穩(wěn)定的計數(shù)器值,因為計數(shù)器表面上已經(jīng)停止向下計數(shù)(PIT芯片內部并沒有停止向下計數(shù)) 。NOTE!一旦發(fā)出了鎖存命令,就要馬上讀計數(shù)器的值 。
2.3 時間戳記數(shù)器TSC
從Pentium開始,所有的Intel 80x86 CPU就都又包含一個64位的時間戳記數(shù)器(TSC)的寄存器 。該寄存器實際上是一個不斷增加的計數(shù)器,它在CPU的每個時鐘信號到來時加1(也即每一個clock-cycle輸入CPU時,該計數(shù)器的值就加1) 。
匯編指令rdtsc可以用于讀取TSC的值 。利用CPU的TSC,操作系統(tǒng)通??梢缘玫礁鼮榫珳实臅r間度量 。假如clock-cycle的頻率是400MHZ,那么TSC就將每2.5納秒增加一次 。

推薦閱讀