CN103902371B - 一种用户态程序获取内核jiffies的方法和系统 - Google Patents
一种用户态程序获取内核jiffies的方法和系统 Download PDFInfo
- Publication number
- CN103902371B CN103902371B CN201410096597.4A CN201410096597A CN103902371B CN 103902371 B CN103902371 B CN 103902371B CN 201410096597 A CN201410096597 A CN 201410096597A CN 103902371 B CN103902371 B CN 103902371B
- Authority
- CN
- China
- Prior art keywords
- kernel
- internal memory
- jiffies
- user space
- kphy
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000000151 deposition Methods 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 13
- 230000009286 beneficial effect Effects 0.000 description 1
- JEIPFZHSYJVQDO-UHFFFAOYSA-N ferric oxide Chemical compound O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本发明提供了一种用户态程序获取内核jiffies的方法,其特征在于,该方法包括:S1.在内核中申请一块内存,用来存放内核全局变量jiffies的数值,设所述内存起始地址为kmem,每当内核发生一次时钟中断,jiffies的值加1,每当jiffies发生变化时,内核就将jiffies的值写到kmem中;S2.内核将所述内存的虚拟起始地址kmem转换为物理起始地址kphy;S3.用户态程序获取所述内存的物理起始地址kphy;S4.用户态程序将所述内存的物理起始地址kphy转换为用户态程序用的虚拟起始地址uvir;S5.用户态程序通过读取所述虚拟起始地址uvir,得到内核存储在kmem地址中的内核全局变量jiffies的值。本发明能够在用户态程序方便快捷地获取内核jiffies,进而快速获取系统时间。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种用户态程序获取内核jiffies的方法和系统。
背景技术
Linux内核具有一个名为jiffies的全局变量,它代表从机器启动时算起的时间节拍数。这个变量最初被初始化为0,每次时钟中断时都会加1。内核通过编程预设系统定时器的频率(即节拍率tick rate),每一个周期称作一个节拍,内核频率通常是1000Hz,也就是每秒钟1000个节拍。通过jiffies和tick rate可以计算时间和相对时间。比如2秒这个时间段可以2*tick rate来表示,那么两秒以后的时间就可以表示为jiffies+2*tick rate,由此可见,通过jiffies可以到当前时间以及N秒以后的时间,这样就为当前要触发或者N秒后要触发的事项提供了可以精确衡量的基准时间。用户态的程序也需要一个基准时间,用来管理用户态程序要处理的事项,因此用户态程序需要一个方法获取基准时间。
目前用户态程序获取基准时间的方式通常是使用标准的编程接口time或localtime(会精确到年月日时分秒),然后通过此时间来计算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。
其中,所述用户态模块中获取所述内存的物理起始地址kphy包括:用户态程序通过ioctl方法获取所述内存的物理起始地址kphy。
其中,所述用户态模块中将所述内存的物理起始地址kphy转换为用户态程序用的虚拟起始地址uvir包括:用户态程序通过标准编程接口mmap将所述内存的物理起始地址kphy转换为用户态程序用的虚拟起始地址uvir。
本发明至少具有如下的有益效果:
在本发明中,从内核申请的起始地址为kmem的内存,内核通过kmem对应到具体的物理地址kvir,用户态程序通过uvr对应到具体的物理地址kphy。也就是说当内核向该申请的内存写入任何数据时,用户态程序都可以通过uvir读取到。jiffies对于内核来讲就是一个全局变量,每当发生一次内核的时钟中断时,就会将jiffies进行加1,每次jiffies变化时,内核就将jiffies的数值写到kmem中,这样用户态程序就可以随时通过读取uvir来得到内核jiffies的数值了。该方法利用读写共享内存的方式获取系统时间,不需要通过time或local time编程接口,省去了对系统进行频繁调用的麻烦,节省了时间,提高了系统性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1中用户态程序获取内核jiffies方法的流程图;
图2是本发明实施例2中用户态程序获取内核jiffies系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例提出了一种用户态程序获取内核jiffies的方法,参见图1,包括如下步骤:
步骤101:在内核中申请一块内存,用来存放内核全局变量jiffies的数值,设所述内存起始地址为kmem,每当内核发生一次时钟中断,jiffies的值加1,每当jiffies发生变化时,内核就将jiffies的值写到kmem中。
在本步骤中,在内核中通过内核函数kmalloc在内核中申请一块内存,该内存用来存放内核全局变量jiffies,所述kmalloc函数返回该内存起始地址kmem,每当内核发生一次时钟中断,jiffies的值加1,每当jiffies发生变化时,内核就将jiffies的值写到kmem中。
步骤102:内核将所述内存的虚拟起始地址kmem转换为物理起始地址kphy。
在本步骤中,利用内核提供的宏_pa将所述内存的虚拟起始地址kmem转换为物理起始地址kphy。
步骤103:用户态程序获取所述内存的物理起始地址kphy。
在本步骤中,用户态程序通过ioctl方法获取所述内存的物理起始地址kphy。
步骤104:用户态程序将所述内存的物理起始地址kphy转换为用户态程序用的虚拟起始地址uvir。
在本步骤中,用户态程序通过标准编程接口mmap将所述内存的物理起始地址kphy转换为用户态程序用的虚拟起始地址uvir。
步骤105:用户态程序通过读取所述虚拟起始地址uvir,得到内核存储在kmem地址中的内核全局变量jiffies的值。
在本步骤中,内核将jiffies的数值写到kmem中,这样用户态程序就可以随时通过读取uvir来得到内核jiffies的数值了
在本实施例中可以看到对于从内核申请到得这块内存,内核通过kmem对应到具体的物理地址kphy,用户态程序通过uvir对应到具体的物理地址kphy。也就是说当内核向该申请的内存写入任何数据时,用户态程序都可以通过uvir读取到。jiffies对于内核来讲就是一个全局变量,每当发生一次内核的时钟中断时,就会将jiffies进行加1,每次jiffies变化时,内核就将jiffies的数值写到kmem中,这样用户态程序就可以随时通过读取uvir来得到内核jiffies的数值了。该方法利用读写共享内存的方式获取系统时间,不需要通过time或local time编程接口,省去了对系统进行频繁调用的麻烦,节省了时间,提高了系统性能。
实施例2
本发明实施例2还提出了一种用户态程序获取内核jiffies的系统,参见图2,该系统包括内核模块201和用户态模块202,其中,
内核模块201,用于在内核中申请一块内存,存放内核全局变量jiffies,设所述内存起始地址为kmem,每当内核发生一次时钟中断,jiffies的值加1,每当jiffies发生变化时,内核就将jiffies的值写到kmem中;内核将所述内存的虚拟起始地址kmem转换为物理起始地址kphy;
用户态模块202,用于获取所述内存的物理起始地址kphy,将所述内存的物理起始地址kphy转换为用户态程序用的虚拟起始地址uvir,通过读取所述虚拟起始地址uvir,得到内核存储在kmem地址中的内核全局变量jiffies的值。
其中,所述内核模块中在内核中申请一块内存,存放内核全局变量jiffies包括:通过内核函数kmalloc在内核中申请一块内存,该内存用来存放内核全局变量jiffies,所述kmalloc函数返回该内存起始地址kmem。
其中,所述内核模块中将所述内存的虚拟起始地址kmem转换为物理起始地址kphy包括:利用内核提供的宏_pa将所述内存的虚拟起始地址kmem转换为物理起始地址kphy。
其中,所述用户态模块中获取所述内存的物理起始地址kphy包括:用户态程序通过ioctl方法获取所述内存的物理起始地址kphy。
其中,所述用户态模块中将所述内存的物理起始地址kphy转换为用户态程序用的虚拟起始地址uvir包括:用户态程序通过标准编程接口mmap将所述内存的物理起始地址kphy转换为用户态程序用的虚拟起始地址uvir。
在本实施例中可以看到对于从内核申请到得这块内存,内核通过kmem对应到具体的物理地址kphy,用户态程序通过uvir对应到具体的物理地址kphy。也就是说当内核向该申请的内存写入任何数据时,用户态程序都可以通过uvir读取到。jiffies对于内核来讲就是一个全局变量,每当发生一次内核的时钟中断时,就会将jiffies进行加1,每次jiffies变化时,内核就将jiffies的数值写到kmem中,这样用户态程序就可以随时通过读取uvir来得到内核jiffies的数值了。该方法利用读写共享内存的方式获取系统时间,不需要通过time或local time编程接口,省去了对系统进行频繁调用的麻烦,节省了时间,提高了系统性能。
以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种用户态程序获取内核jiffies的方法,其特征在于,该方法包括:
S1.在内核中申请一块内存,用来存放内核全局变量jiffies的数值,设所述内存起始地址为kmem,每当内核发生一次时钟中断,jiffies的值加1,每当jiffies发生变化时,内核就将jiffies的值写到kmem中;
S2.内核将所述内存的虚拟起始地址kmem转换为物理起始地址kphy;
S3.用户态程序获取所述内存的物理起始地址kphy;
S4.用户态程序将所述内存的物理起始地址kphy转换为用户态程序用的虚拟起始地址uvir;
S5.用户态程序通过读取所述虚拟起始地址uvir,得到内核存储在kmem地址中的内核全局变量jiffies的值。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1包括:在内核中通过内核函数kmalloc申请一块内存,该内存用来存放内核全局变量jiffies,所述kmalloc函数返回该内存起始地址kmem,每当内核发生一次时钟中断,jiffies的值加1,每当jiffies发生变化时,内核就将jiffies的值写到kmem中。
3.根据权利要求1所述的方法,其特征在于,所述步骤S2包括:利用内核提供的宏_pa将所述内存的虚拟起始地址kmem转换为物理起始地址kphy。
4.根据权利要求3所述的方法,其特征在于,所述步骤S3包括:用户态程序通过ioctl方法获取所述内存的物理起始地址kphy。
5.根据权利要求4所述的方法,其特征在于,所述步骤S4包括:用户态程序通过标准编程接口mmap将所述内存的物理起始地址kphy转换为用户态程序用的虚拟起始地址uvir。
6.一种用户态程序获取内核jiffies的系统,其特征在于,该系统包括内核模块和用户态模块,其中,
内核模块,用于在内核中申请一块内存,存放内核全局变量jiffies,设所述内存起始地址为kmem,每当内核发生一次时钟中断,jiffies的值加1,每当jiffies发生变化时,内核就将jiffies的值写到kmem中;内核将所述内存的虚拟起始地址kmem转换为物理起始地址kphy;
用户态模块,用于获取所述内存的物理起始地址kphy,将所述内存的物理起始地址kphy转换为用户态程序用的虚拟起始地址uvir,通过读取所述虚拟起始地址uvir,得到内核存储在kmem地址中的内核全局变量jiffies的值。
7.根据权利要求6所述的系统,其特征在于,所述内核模块中在内核中申请一块内存,存放内核全局变量jiffies包括:通过内核函数kmalloc在内核中申请一块内存,该内存用来存放内核全局变量jiffies,所述kmalloc函数返回该内存起始地址kmem。
8.根据权利要求6所述的系统,其特征在于,所述内核模块中将所述内存的虚拟起始地址kmem转换为物理起始地址kphy包括:利用内核提供的宏_pa将所述内存的虚拟起始地址kmem转换为物理起始地址kphy。
9.根据权利要求8所述的系统,其特征在于,所述用户态模块中获取所述内存的物理起始地址kphy包括:用户态程序通过ioctl方法获取所述内存的物理起始地址kphy。
10.根据权利要求9所述的系统,其特征在于,所述用户态模块中将所述内存的物理起始地址kphy转换为用户态程序用的虚拟起始地址uvir包括:用户态程序通过标准编程接口mmap将所述内存的物理起始地址kphy转换为用户态程序用的虚拟起始地址uvir。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410096597.4A CN103902371B (zh) | 2014-03-14 | 2014-03-14 | 一种用户态程序获取内核jiffies的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410096597.4A CN103902371B (zh) | 2014-03-14 | 2014-03-14 | 一种用户态程序获取内核jiffies的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103902371A CN103902371A (zh) | 2014-07-02 |
CN103902371B true CN103902371B (zh) | 2017-11-28 |
Family
ID=50993709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410096597.4A Active CN103902371B (zh) | 2014-03-14 | 2014-03-14 | 一种用户态程序获取内核jiffies的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103902371B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108182081A (zh) * | 2017-12-04 | 2018-06-19 | 东软集团股份有限公司 | 用户态定时器的处理方法、装置、存储介质和电子设备 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105468400A (zh) * | 2015-08-03 | 2016-04-06 | 汉柏科技有限公司 | 一种基于linux用户态调用定时器的方法及系统 |
CN108810181A (zh) * | 2017-05-03 | 2018-11-13 | 普天信息技术有限公司 | 一种基于Intel DPDK的地址转换方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7207045B2 (en) * | 2000-12-21 | 2007-04-17 | Airbus France | Real time multi-task process and operating system |
CN102147748A (zh) * | 2011-03-01 | 2011-08-10 | 汉柏科技有限公司 | 用户空间中断服务方法及系统 |
CN103269284A (zh) * | 2013-05-17 | 2013-08-28 | 汉柏科技有限公司 | 实时网络数据的捕获方法 |
CN103389913A (zh) * | 2013-07-30 | 2013-11-13 | 武汉邮电科学研究院 | 一种用于Linux系统的实时中断处理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7725694B2 (en) * | 2004-12-21 | 2010-05-25 | Denso Corporation | Processor, microcomputer and method for controlling program of microcomputer |
CN101872312A (zh) * | 2009-04-21 | 2010-10-27 | 张纪胜 | VMM动态获取客户机Linux中进程描述符的方法 |
-
2014
- 2014-03-14 CN CN201410096597.4A patent/CN103902371B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7207045B2 (en) * | 2000-12-21 | 2007-04-17 | Airbus France | Real time multi-task process and operating system |
CN102147748A (zh) * | 2011-03-01 | 2011-08-10 | 汉柏科技有限公司 | 用户空间中断服务方法及系统 |
CN103269284A (zh) * | 2013-05-17 | 2013-08-28 | 汉柏科技有限公司 | 实时网络数据的捕获方法 |
CN103389913A (zh) * | 2013-07-30 | 2013-11-13 | 武汉邮电科学研究院 | 一种用于Linux系统的实时中断处理方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108182081A (zh) * | 2017-12-04 | 2018-06-19 | 东软集团股份有限公司 | 用户态定时器的处理方法、装置、存储介质和电子设备 |
CN108182081B (zh) * | 2017-12-04 | 2021-03-12 | 东软集团股份有限公司 | 用户态定时器的处理方法、装置、存储介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103902371A (zh) | 2014-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA3048740A1 (en) | Blockchain-based data processing method and device | |
CN103744713A (zh) | 基于fpga的嵌入式双核系统的自主配置方法 | |
CN103902371B (zh) | 一种用户态程序获取内核jiffies的方法和系统 | |
US8601206B1 (en) | Method and system for object-based transactions in a storage system | |
US9338057B2 (en) | Techniques for searching data associated with devices in a heterogeneous data center | |
CN110781016B (zh) | 一种数据处理方法、装置、设备及介质 | |
JP6739513B2 (ja) | Dmb操作を伴うロード/ストア操作を使用するロード獲得/ストア解放命令の実装 | |
WO2019047901A1 (zh) | 一种数据存放方法 | |
CN107315657A (zh) | 一种数据备份的方法及装置 | |
CN103365926A (zh) | 在文件系统中用于保存快照的方法和装置 | |
CN106354661A (zh) | 一种针对存储软件的内存分配方法及装置 | |
WO2016041398A1 (zh) | 一种移动终端电池电量信息保存方法及移动终端 | |
CN106648567B (zh) | 数据获取方法及装置 | |
CN105094742B (zh) | 一种写数据的方法和设备 | |
CN103942149A (zh) | 用户态程序与内核交互报文的方法及系统 | |
JP2020099510A5 (zh) | ||
US9965491B2 (en) | Method and device for recording system log | |
CN103425058B (zh) | 一种计时方法、中央处理器及电子设备 | |
CN101950256A (zh) | 一种嵌入式系统及嵌入式系统重新启动的方法 | |
JP2017045144A5 (zh) | ||
CN106201612B (zh) | 一种信息处理方法及电子设备 | |
CN106990998B (zh) | 虚拟机监控方法及装置 | |
CN109086099A (zh) | 一种启动虚拟机的方法、装置、设备以及存储介质 | |
US11226966B2 (en) | Journaling of streaming anchor resource(s) | |
CN105631505B (zh) | 一种支持java卡补丁函数的智能卡 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PP01 | Preservation of patent right | ||
PP01 | Preservation of patent right |
Effective date of registration: 20180528 Granted publication date: 20171128 |
|
PD01 | Discharge of preservation of patent |
Date of cancellation: 20240528 Granted publication date: 20171128 |
|
PP01 | Preservation of patent right |
Effective date of registration: 20240528 Granted publication date: 20171128 |