CN108182081A - 用户态定时器的处理方法、装置、存储介质和电子设备 - Google Patents
用户态定时器的处理方法、装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN108182081A CN108182081A CN201711260756.XA CN201711260756A CN108182081A CN 108182081 A CN108182081 A CN 108182081A CN 201711260756 A CN201711260756 A CN 201711260756A CN 108182081 A CN108182081 A CN 108182081A
- Authority
- CN
- China
- Prior art keywords
- timer
- cpu
- pronucleus
- target user
- operational order
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及一种用户态定时器的处理方法、装置、存储介质和电子设备,所述方法包括:用户态进程通过虚拟文件系统获取内核空间中的时钟中断次数和系统频率;根据所述时钟中断次数和所述系统频率确定所述用户态定时器的时钟信息。在上述技术方案中,用户态进程可以获取内核空间中的时钟中断次数和系统频率,且该系统频率为系统的标准频率,因此,基于该标准频率确定用户态定时器的时钟信息,不会出现像现有技术中由于处理器的频率改变而导致定时器定时不准确的问题。通过上述技术方案,可以准确地确定用户态定时器的时钟信息,从而为定时器的定时提供准确的数据支持。
Description
技术领域
本公开涉及定时器设计领域,具体地,涉及一种用户态定时器的处理方法、装置、存储介质和电子设备。
背景技术
DPDK(Data Plane Development Kit,数据平面开发套件)提出了一种基于用户态轮询的定时器实现方法,虽然在该方法中屏蔽了系统调用,但是仍然存在以下问题:
其一,用户态定时器的时钟来源于CPU的TSC(Time Stamp Counter,时间戳计数器)寄存器,只能用于X86平台,ARM等其他平台不适用。
其二,在处理器开启睿频后,会使得处理器频率改变,则会导致基于处理器的频率进行计数的TSC寄存器每秒内计数不固定,因此在用户态定时器基于TSC寄存器进行计时时,会出现定时不准确的问题。
发明内容
为了解决上述问题,本公开提供一种用户态定时器的处理方法、装置、存储介质和电子设备。
为了实现上述目的,根据本公开的第一方面,提供一种用户态定时器的处理方法,所述方法包括:
用户态进程通过虚拟文件系统获取内核空间中的时钟中断次数和系统频率;
根据所述时钟中断次数和所述系统频率确定所述用户态定时器的时钟信息。
可选地,所述用户态进程通过虚拟文件系统获取内核空间中的时钟中断次数和系统频率,包括:
所述用户态进程从所述虚拟文件系统中获取所述时钟中断次数在内核空间中的存储位置信息;
将虚拟设备对应的地址空间映射到所述用户态进程的地址空间,其中,所述虚拟设备对应的地址空间包括所述时钟中断次数的存储位置;
根据所述存储位置信息从所述用户态进程的地址空间中获取所述时钟中断次数。
可选地,所述存储位置信息通过如下方式存储在所述虚拟文件系统中:
获取所述时钟中断次数在内核空间中的存储位置;
以系统页面大小为除数、对所述存储位置取余,以获得所述存储位置在其所在页面内的页内偏移;
将所述页内偏移确定为所述存储位置信息、并将所述存储位置信息存储至所述虚拟文件系统。
可选地,所述虚拟设备对应的地址空间通过以下方式来确定:
以系统页面大小为除数、对所述存储位置取商,以获得所述存储位置所在页面的起始地址;
将从所述起始地址起、内存大小为系统页面大小的内核地址空间确定为所述虚拟设备对应的地址空间。
可选地,所述方法还包括:
用户态进程在执行对目标用户态定时器的操作指令之前,若所述操作指令是CPU的当前核自身生成的,确定所述目标用户态定时器是否创建于所述当前核,其中,所述CPU为多核CPU,所述CPU的当前核为用户态进程要执行所述操作指令时所在的CPU的核;
在确定所述目标用户态定时器创建于所述当前核、且所述目标用户态定时器存在时,在所述当前核中执行与所述操作指令对应的操作;
在确定所述目标用户态定时器不是创建于所述当前核时,将所述操作指令发送至创建所述目标用户态定时器的CPU的核的指令队列,以由所述创建所述目标用户态定时器的CPU的核响应于所述操作指令,对所述目标用户态定时器执行对应的操作。
可选地,所述方法还包括:
若所述操作指令是从所述当前核的指令队列中获得的、且所述目标用户态定时器存在,则直接响应于所述操作指令,在所述当前核中对所述目标用户态定时器执行对应的操作。
根据本公开的第二方面,提供一种用户态定时器的处理装置,所述装置包括:
获取模块,用于通过虚拟文件系统获取内核空间中的时钟中断次数和系统频率;
第一确定模块,用于根据所述时钟中断次数和所述系统频率确定所述用户态定时器的时钟信息。
可选地,所述获取模块包括:
第一获取子模块,用于从所述虚拟文件系统中获取所述时钟中断次数在内核空间中的存储位置信息;
映射子模块,用于将虚拟设备对应的地址空间映射到所述用户态进程的地址空间,其中,所述虚拟设备对应的地址空间包括所述时钟中断次数的存储位置;
第二获取子模块,用于根据所述存储位置信息从所述用户态进程的地址空间中获取所述时钟中断次数。
可选地,所述存储位置信息通过处理模块存储在所述虚拟文件系统中,所述处理模块包括:
第三获取子模块,用于获取所述时钟中断次数在内核空间中的存储位置;
第一计算子模块,用于以系统页面大小为除数、对所述存储位置取余,以获得所述存储位置在其所在页面内的页内偏移;
存储子模块,用于将所述页内偏移确定为所述存储位置信息、并将所述存储位置信息存储至所述虚拟文件系统。
可选地,所述处理模块还包括:
第二计算子模块,用于以系统页面大小为除数、对所述存储位置取商,以获得所述存储位置所在页面的起始地址;
确定子模块,用于将从所述起始地址起、内存大小为系统页面大小的内核地址空间确定为所述虚拟设备对应的地址空间。
可选地,所述装置还包括:
第二确定模块,用于在执行对目标用户态定时器的操作指令之前,若所述操作指令是CPU的当前核自身生成的,确定所述目标用户态定时器是否创建于所述当前核,其中,所述CPU为多核CPU,所述CPU的当前核为用户态进程要执行所述操作指令时所在的CPU的核;
第一执行模块,用于在确定所述目标用户态定时器创建于所述当前核、且所述目标用户态定时器存在时,在所述当前核中执行与所述操作指令对应的操作;
发送模块,用于在确定所述目标用户态定时器不是创建于所述当前核时,将所述操作指令发送至创建所述目标用户态定时器的CPU的核的指令队列,以由所述创建所述目标用户态定时器的CPU的核响应于所述操作指令,对所述目标用户态定时器执行对应的操作。
可选地,所述装置还包括:
第二执行模块,用于在所述操作指令是从所述当前核的指令队列中获得的、且所述目标用户态定时器存在时,则直接响应于所述操作指令,在所述当前核中对所述目标用户态定时器执行对应的操作。
根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述方法的步骤。
根据本公开的第四方面,提供一种电子设备,包括:
第三方面所述的计算机可读存储介质;以及
一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
在上述技术方案中,用户态进程可以直接获取内核空间中的时钟中断次数和系统频率,且该系统频率为系统的标准频率,因此,基于该标准频率确定用户态定时器的时钟信息,不会出现像现有技术中由于处理器的频率改变而导致定时器定时不准确的问题。通过上述技术方案,可以准确地确定用户态定时器的时钟信息,从而为定时器的定时提供准确的数据支持。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据本公开的一种实施方式提供的用户态定时器的处理方法的流程图;
图2是为用户态进程获取内核空间中的时钟中断次数的一种示例实现方式的流程图;
图3是内核空间和用户空间的示意图;
图4是多核CPU与指令队列的示意图;
图5是根据本公开的一种实施方式提供的用户态定时器的处理装置的框图;
图6是根据本公开的一种实施方式提供的用户态定时器的处理装置中获取模块的框图;
图7是根据一示例性实施例示出的一种电子设备的框图;
图8是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
图1所示,为根据本公开的一种实施方式提供的用户态定时器的处理方法的流程图,如图1所示,所述方法包括:
在S11中,用户态进程通过虚拟文件系统获取内核空间中的时钟中断次数和系统频率。
示例地,该时钟中断次数可以是内核空间中的全局变量jiffies,在系统启动时,该变量会初始化为一定值。系统启动之后,系统时钟每中断一次,中断处理程序便会将该变量的值进行加一的操作,即,该变量记录了自系统启动以来产生的时钟中断的次数。本公开中系统频率为系统的标准频率,可以保存在虚拟文件系统中,不会因CPU频率的变化而改变,因此,在处理器开启睿频后,处理器的实时频率会改变,但其标准频率不会发生改变,在一秒内的系统时钟中断次数与系统频率相同。因此,通过时钟中断次数和系统频率可以准确地对用户态定时器进行定时。
可选地,如图2所示,为用户态进程通过虚拟文件系统获取内核空间中的时钟中断次数的一种示例实现方式,该步骤包括:
在S21中,用户态进程从虚拟文件系统中获取时钟中断次数在内核空间中的存储位置信息。
由于用户态进程无法直接获取内核空间中的时钟中断次数,因此,可以在系统启动时,在内核空间中开启一内核态进程以获取该时钟中断次数并将该时钟中断次数的存储位置信息存储至虚拟文件系统,以便于用户态进程从该虚拟文件系统获取该存储位置信息。
可选地,所述存储位置信息通过如下方式存储在所述虚拟文件系统中:
获取所述时钟中断次数在内核空间中的存储位置。
以系统页面大小为除数、对所述存储位置取余,以获得所述存储位置在其所在页面内的页内偏移;
将所述页内偏移确定为所述存储位置信息、并将所述存储位置信息存储至所述虚拟文件系统。
示例地,时钟中断次数在内核空间中的存储位置用十进制表示为20000,系统页面大小pagesize为4KB,则:
页内偏移S1=20000%4096=3616;
因此,将时钟中断次数在内核空间中的存储位置信息(即页内偏移offset)存储至虚拟文件系统,示例地,可以申请一个文件用于存储该存储位置信息,文件名为/proc/jiffies_info。可选地,也可以将系统频率及系统页面大小pagesize存储至该文件中,以便于用户态进程对其进行读取。
因此,用户态进程可以通过读取虚拟文件系统中的/proc/jiffies_info文件,获取时钟中断次数在内核空间中的存储位置信息。
在S22中,将虚拟设备对应的地址空间映射到用户态进程的地址空间。其中,该虚拟设备即为针对存储有时钟中断次数的页面所创建的虚拟设备。该虚拟设备可以是UIO(Userspace I/O,用户空间输入输出)设备、虚拟字符设备、虚拟块设备等等。
示例地,可以通过mmap()函数将虚拟设备映射到用户态进程的地址空间,该函数的返回地址即为虚拟设备对应的地址空间映射到用户态进程的地址空间中的起始地址。其中,用户态进程的地址空间为虚拟用户空间,即,使用用户空间中的内存对虚拟设备进行映射。
由于访问用户空间和内核空间的逻辑地址不同,因此可以将内核空间中存储有时钟中断次数的页面确定为虚拟设备对应的地址空间,则时钟中断次数在其存储位置所在页面的页内偏移、与时钟中断次数在虚拟设备对应的地址空间的页内偏移相同,使得用户态进程可以根据该页内偏移获取时钟中断次数。
可选地,在获取所述时钟中断次数在内核空间中的存储位置之后,所述虚拟设备对应的地址空间通过以下方式来确定:
以系统页面大小为除数、对所述存储位置取商,以获得所述存储位置所在页面的起始地址;
将从所述起始地址起、内存大小为系统页面大小的内核地址空间确定为所述虚拟设备对应的地址空间。
接上述示例,可以得出在内核空间中存储有时钟中断次数的页面的页号为:S2=20000/4096=4。之后,根据该页号可以获得时钟中断次数在内核空间中的存储位置所在页面的起始地址addr为16384(即,4096*4)。之后将从该起始地址起、内存大小为4KB的内核地址空间确定为虚拟设备对应的地址空间。
示例地,如图3所示,通过上述技术方案,将内核空间1中存储有时钟中断次数的页面4确定为虚拟设备3对应的地址空间,并将时钟中断次数的存储位置在该页面4中的页内偏移offset存储至虚拟文件系统。
示例地,可以通过一动态库实现该获取内核空间中的时钟中断次数和系统频率的步骤,可以在程序运行时动态链接,便于方法的实现。其中,由于该虚拟设备为根据存储有时钟中断次数的内存页所创建的虚拟设备,则在将虚拟设备映射到用户态进程的地址空间中时,进行映射的用户态进程的地址空间的内存块的大小与系统页面大小相同。
另外,为了避免用户空间的程序错误等导致内核空间的数据被破坏,可以以只读的方式进行映射,从而可以在保证系统稳定性的前提下使得用户态进程能够获取内核空间中的数据。
在S23中,根据存储位置信息从用户态进程的地址空间中获取时钟中断次数。
如图3所示,通过mmap()函数将虚拟设备对应的地址空间映射到用户态进程的地址空间中时,由于该虚拟设备对应的地址空间为存储有时钟中断次数的整个页面,使得在内核空间1和用户空间2中,该时钟中断次数在其所在的页面中的页内偏移是相同的。因此,在通过mmap()函数获得在用户空间2中存储有时钟中断次数的内存页4’的起始地址后,根据S21中获取的页内偏移offset即可获得时钟中断次数在用户空间中的存储位置。之后,基于该存储位置,可以通过获取函数获取时钟中断次数,示例地,该获取函数可以是get_jiffies()函数,因此,可以在保证系统稳定性的前提下,使得用户态进程能够获取内核空间中的数据。
在S12中,根据时钟中断次数和系统频率确定用户态定时器的时钟信息。
示例地,时钟中断次数jiffies在系统启动时被初始化为0,之后每进行一次系统时钟中断,该变量jiffies自动加1。因此,通过获取到的时钟中断次数除以系统频率即可确定出系统的运行时间,从而可以确定用户态定时器的时钟信息。
在上述技术方案中,用户态进程可以获取内核空间中的时钟中断次数和系统频率,且该系统频率为系统的标准频率,因此,基于该标准频率确定用户态定时器的时钟信息,不会出现像现有技术中由于处理器的频率改变而导致定时器定时不准确的问题。通过上述技术方案,可以准确地确定用户态定时器的时钟信息,从而为定时器的定时提供准确的数据支持。
另外,跳表是定时器的基本数据结构。在现有技术中,DPDK平台的定时器实现方案中,CPU的每个核都对应有一个跳表,但是由于存在CPU的不同的核对同一个定时器进行操作,即,不同的核对同一跳表进行操作的可能性,因此,在对DPDK平台的定时器进行操作时,需要对该定时器所在核的跳表进行加锁操作,以避免数据错误。
为了解决上述问题,本公开提供的方法还包括:
用户态进程在执行对目标用户态定时器的操作指令之前,若所述操作指令是CPU的当前核自身生成的,确定所述目标用户态定时器是否创建于所述当前核,其中,所述CPU为多核CPU,所述CPU的当前核为所述用户态进程要执行所述操作指令时所在的CPU的核,其中,该操作指令可以是删除指令或是编辑指令,以用于对定时器进行删除操作或是编辑操作。
在确定所述目标用户态定时器创建于所述当前核、且所述目标用户态定时器存在时,在所述当前核中执行与所述操作指令对应的操作;
在确定所述目标用户态定时器不是创建于所述当前核时,将所述操作指令发送至创建所述目标用户态定时器的CPU的核的指令队列,以由所述创建所述目标用户态定时器的CPU的核响应于所述操作指令,对所述目标用户态定时器执行对应的操作。
图4所示,为多核CPU与指令队列的示意图。如图4所示,在一实施例中,多核CPU 5有4个核,分别是核51、核52、核53、核54,其分别对应指令队列61、指令队列62、指令队列63、指令队列64。示例地,该指令队列可以是基于环形缓冲队列Ring实现的,该环形缓冲对列Ring是一种支持多消费者和多生产者的先入先出的无锁队列;也可以是其他支持一消费者和多生产者的先入先出的无锁队列。并且,CPU的每个核都可以向其他任一核的指令队列发送操作指令,并只能够获取自身的指令队列中的操作指令,因此,操作指令可能是CPU的核在运行程序的过程中由本核自身生成的,也有可能是从本核的指令队列中读取的。
现有技术中,当核51要删除在核52中创建的定时器1、核53要删除在核52中创建的定时器2时,由于核52中只有一个跳表,当核51删除在核52中创建的定时器1时,需要对该跳表进行加锁操作,此时,核53只能处于跳表访问等待状态中,只有当核51删除在核52中创建的定时器1的操作完成、对该跳表解锁完成后,核53才能执行对定时器2的相应操作。因此,在CPU中的某一核要对在其他核中创建的定时器进行操作时,需要执行上述跨核操作,且在跳表加锁时还需要等待跳表解锁后才能执行相应的操作,使得其他核处于资源等待状态中,降低处理效率。
而在本公开中,通过为CPU的每个核创建指令队列,以将对目标用户态定时器的跨核操作改为非跨核操作,避免对跳表的加锁操作。
示例地,在核51运行程序的过程中,用户态进程需要执行删除目标用户态定时器的操作指令。在执行该操作指令之前,可以首先确定该操作指令的来源。若该操作指令为核51自身生成的,确定该目标用户态定时器是否创建于核51。若该目标用户态定时器创建于核51,则在核51中执行与操作指令对应的删除操作。
若该目标用户态定时器不是创建于核51,示例地,该目标用户态定时器创建于核52,则将操作指令发送至核52的指令队列62,其中,该操作指令中包括要操作的目标用户态定时器以及对该目标用户态定时器执行的操作。
可选地,所述方法还包括:
若所述操作指令是从所述当前核的指令队列中获得的、且所述目标用户态定时器存在,则直接响应于所述操作指令,在所述当前核中对所述目标用户态定时器执行对应的操作。
如上文所述,操作指令可以是从CPU的核的指令队列中获得的。在另一实施例中,当核52要执行的操作指令为从其指令队列62中获得的操作指令时,在该操作指令指示要操作的目标用户态定时器存在时,则核52可以直接响应于该操作指令,对目标用户态定时器执行相应的操作。
另外,为了使指令队列中的每个操作指令都可以执行,可以在CPU的每个核中开启一个轮询线索,示例地,该轮询线索可以是一个逻辑执行单元,可以是一个线程,也可以是线程中的一个函数,本公开中对此不做限定。
在上述技术方案中,通过为CPU的每个核创建指令队列,可以使得在每个核中只对创建于本核的用户态定时器进行操作,从而可以避免出现CPU的多个核同时对同一定时器进行操作的现象,因而,可以将对目标用户态定时器的跨核操作改为非跨核操作,可以避免对目标用户态定时器进行操作时的加锁操作,消除CPU的核在进行加锁时的等待耗时,提高处理效率。
本公开还提供一种用户态定时器的处理装置,如图5所示,所述装置10包括:
获取模块100,用于通过虚拟文件系统获取内核空间中的时钟中断次数和系统频率;
第一确定模块200,用于根据所述时钟中断次数和所述系统频率确定所述用户态定时器的时钟信息。
可选地,如图6所示,所述获取模块100包括:
第一获取子模块101,用于从所述虚拟文件系统中获取所述时钟中断次数在内核空间中的存储位置信息;
映射子模块102,用于将虚拟设备对应的地址空间映射到所述用户态进程的地址空间,其中,所述虚拟设备对应的地址空间包括所述时钟中断次数的存储位置;
第二获取子模块103,用于根据所述存储位置信息从所述用户态进程的地址空间中获取所述时钟中断次数。
可选地,所述存储位置信息通过处理模块存储在所述虚拟文件系统中,所述处理模块包括:
第三获取子模块,用于获取所述时钟中断次数在内核空间中的存储位置;
第一计算子模块,用于以系统页面大小为除数、对所述存储位置取余,以获得所述存储位置在其所在页面内的页内偏移;
存储子模块,用于将所述页内偏移确定为所述存储位置信息、并将所述存储位置信息存储至所述虚拟文件系统。
可选地,所述处理模块还包括:
第二计算子模块,用于以系统页面大小为除数、对所述存储位置取商,以获得所述存储位置所在页面的起始地址;
确定子模块,用于将从所述起始地址起、内存大小为系统页面大小的内核地址空间确定为所述虚拟设备对应的地址空间。
可选地,所述装置10还包括:
第二确定模块,用于在执行对目标用户态定时器的操作指令之前,若所述操作指令是CPU的当前核自身生成的,确定所述目标用户态定时器是否创建于所述当前核,其中,所述CPU为多核CPU,所述CPU的当前核为用户态进程要执行所述操作指令时所在的CPU的核;
第一执行模块,用于在确定所述目标用户态定时器创建于所述当前核、且所述目标用户态定时器存在时,在所述当前核中执行与所述操作指令对应的操作;
发送模块,用于在确定所述目标用户态定时器不是创建于所述当前核时,将所述操作指令发送至创建所述目标用户态定时器的CPU的核的指令队列,以由所述创建所述目标用户态定时器的CPU的核响应于所述操作指令,对所述目标用户态定时器执行对应的操作。
可选地,所述装置10还包括:
第二执行模块,用于在所述操作指令是从所述当前核的指令队列中获得的、且所述目标用户态定时器存在时,则直接响应于所述操作指令,在所述当前核中对所述目标用户态定时器执行对应的操作。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7是根据一示例性实施例示出的一种电子设备700的框图。如图7所示,该电子设备700可以包括:处理器701,存储器702,多媒体组件703,输入/输出(I/O)接口704,以及通信组件705。
其中,处理器701用于控制该电子设备700的整体操作,以完成上述的用户态定时器的处理方法中的全部或部分步骤。存储器702用于存储各种类型的数据以支持在该电子设备700的操作,这些数据例如可以包括用于在该电子设备700上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件703可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器702或通过通信组件705发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口704为处理器701和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件705用于该电子设备700与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件705可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的用户态定时器的处理方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,例如包括程序指令的存储器702,上述程序指令可由电子设备700的处理器701执行以完成上述的用户态定时器的处理方法。
图8是根据一示例性实施例示出的一种电子设备800的框图。例如,电子设备800可以被提供为一服务器。参照图8,电子设备800包括处理器822,其数量可以为一个或多个,以及存储器832,用于存储可由处理器822执行的计算机程序。存储器832中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器822可以被配置为执行该计算机程序,以执行上述的用户态定时器的处理方法。
另外,电子设备800还可以包括电源组件826和通信组件850,该电源组件826可以被配置为执行电子设备800的电源管理,该通信组件850可以被配置为实现电子设备800的通信,例如,有线或无线通信。此外,该电子设备800还可以包括输入/输出(I/O)接口858。电子设备800可以操作基于存储在存储器832的操作系统,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,例如包括程序指令的存储器832,上述程序指令可由电子设备800的处理器822执行以完成上述的用户态定时器的处理方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (10)
1.一种用户态定时器的处理方法,其特征在于,所述方法包括:
用户态进程通过虚拟文件系统获取内核空间中的时钟中断次数和系统频率;
根据所述时钟中断次数和所述系统频率确定所述用户态定时器的时钟信息。
2.根据权利要求1所述的方法,其特征在于,所述用户态进程通过虚拟文件系统获取内核空间中的时钟中断次数,包括:
所述用户态进程从所述虚拟文件系统中获取所述时钟中断次数在内核空间中的存储位置信息;
将虚拟设备对应的地址空间映射到所述用户态进程的地址空间,其中,所述虚拟设备对应的地址空间包括所述时钟中断次数的存储位置;
根据所述存储位置信息从所述用户态进程的地址空间中获取所述时钟中断次数。
3.根据权利要求2所述的方法,其特征在于,所述存储位置信息通过如下方式存储在所述虚拟文件系统中:
获取所述时钟中断次数在内核空间中的存储位置;
以系统页面大小为除数、对所述存储位置取余,以获得所述存储位置在其所在页面内的页内偏移;
将所述页内偏移确定为所述存储位置信息、并将所述存储位置信息存储至所述虚拟文件系统。
4.根据权利要求3所述的方法,其特征在于,所述虚拟设备对应的地址空间通过以下方式来确定:
以系统页面大小为除数、对所述存储位置取商,以获得所述存储位置所在页面的起始地址;
将从所述起始地址起、内存大小为系统页面大小的内核地址空间确定为所述虚拟设备对应的地址空间。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
用户态进程在执行对目标用户态定时器的操作指令之前,若所述操作指令是CPU的当前核自身生成的,确定所述目标用户态定时器是否创建于所述当前核,其中,所述CPU为多核CPU,所述CPU的当前核为用户态进程要执行所述操作指令时所在的CPU的核;
在确定所述目标用户态定时器创建于所述当前核、且所述目标用户态定时器存在时,在所述当前核中执行与所述操作指令对应的操作;
在确定所述目标用户态定时器不是创建于所述当前核时,将所述操作指令发送至创建所述目标用户态定时器的CPU的核的指令队列,以由所述创建所述目标用户态定时器的CPU的核响应于所述操作指令,对所述目标用户态定时器执行对应的操作。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述操作指令是从所述当前核的指令队列中获得的、且所述目标用户态定时器存在,则直接响应于所述操作指令,在所述当前核中对所述目标用户态定时器执行对应的操作。
7.一种用户态定时器的处理装置,其特征在于,所述装置包括:
获取模块,用于通过虚拟文件系统获取内核空间中的时钟中断次数和系统频率;
第一确定模块,用于根据所述时钟中断次数和所述系统频率确定所述用户态定时器的时钟信息。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于在执行对目标用户态定时器的操作指令之前,若所述操作指令是CPU的当前核自身生成的,确定所述目标用户态定时器是否创建于所述当前核,其中,所述CPU为多核CPU,所述CPU的当前核为用户态进程要执行所述操作指令时所在的CPU的核;
第一执行模块,用于在确定所述目标用户态定时器创建于所述当前核、且所述目标用户态定时器存在时,在所述当前核中执行与所述操作指令对应的操作;
发送模块,用于在确定所述目标用户态定时器不是创建于所述当前核时,将所述操作指令发送至创建所述目标用户态定时器的CPU的核的指令队列,以由所述创建所述目标用户态定时器的CPU的核响应于所述操作指令,对所述目标用户态定时器执行对应的操作。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6中任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括:
权利要求9中所述的计算机可读存储介质;以及
一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711260756.XA CN108182081B (zh) | 2017-12-04 | 2017-12-04 | 用户态定时器的处理方法、装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711260756.XA CN108182081B (zh) | 2017-12-04 | 2017-12-04 | 用户态定时器的处理方法、装置、存储介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108182081A true CN108182081A (zh) | 2018-06-19 |
CN108182081B CN108182081B (zh) | 2021-03-12 |
Family
ID=62545565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711260756.XA Active CN108182081B (zh) | 2017-12-04 | 2017-12-04 | 用户态定时器的处理方法、装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108182081B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110333843A (zh) * | 2019-04-19 | 2019-10-15 | 中科创达(重庆)汽车科技有限公司 | 虚拟机高精度定时器的实现方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101576829A (zh) * | 2009-06-12 | 2009-11-11 | 宋志飞 | 嵌入式Linux系统中应用进程的托管方法及系统 |
CN106095604A (zh) * | 2016-06-21 | 2016-11-09 | 京信通信技术(广州)有限公司 | 一种多核处理器的核间通信方法及装置 |
US20170132034A1 (en) * | 2014-07-28 | 2017-05-11 | Hewlett Packard Enterprise Development Lp | Multi-core processor including a master core and slave cores |
CN103902371B (zh) * | 2014-03-14 | 2017-11-28 | 汉柏科技有限公司 | 一种用户态程序获取内核jiffies的方法和系统 |
-
2017
- 2017-12-04 CN CN201711260756.XA patent/CN108182081B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101576829A (zh) * | 2009-06-12 | 2009-11-11 | 宋志飞 | 嵌入式Linux系统中应用进程的托管方法及系统 |
CN103902371B (zh) * | 2014-03-14 | 2017-11-28 | 汉柏科技有限公司 | 一种用户态程序获取内核jiffies的方法和系统 |
US20170132034A1 (en) * | 2014-07-28 | 2017-05-11 | Hewlett Packard Enterprise Development Lp | Multi-core processor including a master core and slave cores |
CN106095604A (zh) * | 2016-06-21 | 2016-11-09 | 京信通信技术(广州)有限公司 | 一种多核处理器的核间通信方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110333843A (zh) * | 2019-04-19 | 2019-10-15 | 中科创达(重庆)汽车科技有限公司 | 虚拟机高精度定时器的实现方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN108182081B (zh) | 2021-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201821966A (zh) | 資訊展示方法及裝置 | |
CN111767143A (zh) | 交易数据处理方法、装置、设备及系统 | |
CN111782300B (zh) | 一种数据处理方法、装置、设备及系统 | |
Yates | Practical investigations of digital forensics tools for mobile devices | |
CN102236621A (zh) | 计算机接口信息配置系统及方法 | |
CN107133502B (zh) | 一种应用程序的处理方法及装置 | |
CN108123684A (zh) | 一种数字下变频处理方法及设备 | |
RU2008133310A (ru) | Дезагрегированная защищенная среда выполнения | |
CN109582377A (zh) | Bios选项修改方法、装置、设备及存储介质 | |
CN109922142A (zh) | 一种文件下载方法、装置及系统 | |
CN109710622A (zh) | 一种数据更新方法、装置和系统 | |
CN104732123A (zh) | 一种基于json格式的功能操作权限控制方法 | |
CN108182081A (zh) | 用户态定时器的处理方法、装置、存储介质和电子设备 | |
CN107066240A (zh) | 组件功能的实现方法和装置 | |
CN108664389B (zh) | 一种测试方法、装置及终端 | |
CN107577962A (zh) | 一种密码卡多算法并列执行的方法、系统及相关装置 | |
CN109582338A (zh) | Bios选项修改方法、装置、设备及存储介质 | |
CN107633170A (zh) | 一种结合硬件特性与传感器的安卓模拟器检测方法及装置 | |
CN106528927B (zh) | 输入输出i/o工艺映射方法和装置 | |
CN110018872A (zh) | 一种推送消息处理方法和装置 | |
US20080088380A1 (en) | Programmable oscillators for high frequency clock generation for simulation environments | |
CN113065302B (zh) | 用于仿真逻辑系统设计的方法、仿真器及可读存储介质 | |
US20240329718A1 (en) | Reduced power consumption circuit and corresponding method | |
CN110851243B (zh) | 流程访问控制方法、装置、存储介质及电子设备 | |
CN108874586A (zh) | 数据恢复方法及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |