[發明專利]一種用戶態程序獲取內核jiffies的方法和系統有效
| 申請號: | 201410096597.4 | 申請日: | 2014-03-14 |
| 公開(公告)號: | CN103902371B | 公開(公告)日: | 2017-11-28 |
| 發明(設計)人: | 李鵬 | 申請(專利權)人: | 漢柏科技有限公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48 |
| 代理公司: | 北京路浩知識產權代理有限公司11002 | 代理人: | 李迪 |
| 地址: | 300384 天津市華*** | 國省代碼: | 天津;12 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 用戶 程序 獲取 內核 jiffies 方法 系統 | ||
技術領域
本發明涉及計算機技術領域,具體涉及一種用戶態程序獲取內核jiffies的方法和系統。
背景技術
Linux內核具有一個名為jiffies的全局變量,它代表從機器啟動時算起的時間節拍數。這個變量最初被初始化為0,每次時鐘中斷時都會加1。內核通過編程預設系統定時器的頻率(即節拍率tick rate),每一個周期稱作一個節拍,內核頻率通常是1000Hz,也就是每秒鐘1000個節拍。通過jiffies和tick rate可以計算時間和相對時間。比如2秒這個時間段可以2*tick rate來表示,那么兩秒以后的時間就可以表示為jiffies+2*tick rate,由此可見,通過jiffies可以到當前時間以及N秒以后的時間,這樣就為當前要觸發或者N秒后要觸發的事項提供了可以精確衡量的基準時間。用戶態的程序也需要一個基準時間,用來管理用戶態程序要處理的事項,因此用戶態程序需要一個方法獲取基準時間。
目前用戶態程序獲取基準時間的方式通常是使用標準的編程接口time或local time(會精確到年月日時分秒),然后通過此時間來計算N秒以后的時間。
現有用戶態程序需要通過time或local time編程接口獲取基準時間,但這些接口都會產生系統調用,如果頻繁的獲取時間的話,那么整個用戶態程序性能、效率就會變得異常低。
發明內容
針對現有技術的不足,本發明提供一種用戶態程序獲取內核jiffies的方法和系統,能夠在用戶態程序方便快捷地獲取內核jiffies,進而快速獲取系統時間。
為實現上述目的,本發明通過以下技術方案予以實現:
一種用戶態程序獲取內核jiffies的方法,該方法包括:
S1.在內核中申請一塊內存,用來存放內核全局變量jiffies的數值,設所述內存起始地址為kmem,每當內核發生一次時鐘中斷,jiffies的值加1,每當jiffies發生變化時,內核就將jiffies的值寫到kmem中;
S2.內核將所述內存的虛擬起始地址kmem轉換為物理起始地址kphy;
S3.用戶態程序獲取所述內存的物理起始地址kphy;
S4.用戶態程序將所述內存的物理起始地址kphy轉換為用戶態程序用的虛擬起始地址uvir;
S5.用戶態程序通過讀取所述虛擬起始地址uvir,得到內核存儲在kmem地址中的內核全局變量jiffies的值。
其中,所述步驟S1包括:在內核中通過內核函數kmalloc申請一塊內存,該內存用來存放內核全局變量jiffies,所述kmalloc函數返回該內存起始地址kmem,每當內核發生一次時鐘中斷,jiffies的值加1,每當jiffies發生變化時,內核就將jiffies的值寫到kmem中。
其中,所述步驟S2包括:利用內核提供的宏_pa將所述內存的虛擬起始地址kmem轉換為物理起始地址kphy。
其中,所述步驟S3包括:用戶態程序通過ioctl方法獲取所述內存的物理起始地址kphy。
其中,所述步驟S4包括:用戶態程序通過標準編程接口mmap將所述內存的物理起始地址kphy轉換為用戶態程序用的虛擬起始地址uvir。
一種用戶態程序獲取內核jiffies的系統,該系統包括內核模塊和用戶態模塊,其中,
內核模塊,用于在內核中申請一塊內存,存放內核全局變量jiffies,設所述內存起始地址為kmem,每當內核發生一次時鐘中斷,jiffies的值加1,每當jiffies發生變化時,內核就將jiffies的值寫到kmem中;內核將所述內存的虛擬起始地址kmem轉換為物理起始地址kphy;
用戶態模塊,用于獲取所述內存的物理起始地址kphy,將所述內存的物理起始地址kphy轉換為用戶態程序用的虛擬起始地址uvir,通過讀取所述虛擬起始地址uvir,得到內核存儲在kmem地址中的內核全局變量jiffies的值。
其中,所述內核模塊中在內核中申請一塊內存,存放內核全局變量jiffies包括:通過內核函數kmalloc在內核中申請一塊內存,該內存用來存放內核全局變量jiffies,所述kmalloc函數返回該內存起始地址kmem。
其中,所述內核模塊中將所述內存的虛擬起始地址kmem轉換為物理起始地址kphy包括:利用內核提供的宏_pa將所述內存的虛擬起始地址kmem轉換為物理起始地址kphy。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于漢柏科技有限公司,未經漢柏科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410096597.4/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種新型機器仿生魚
- 下一篇:虛擬機磁盤鏡像跨存儲熱遷移實現方法和虛擬機系統





