CN101196816B - 一种操作***及操作***管理方法 - Google Patents
一种操作***及操作***管理方法 Download PDFInfo
- Publication number
- CN101196816B CN101196816B CN2007103085533A CN200710308553A CN101196816B CN 101196816 B CN101196816 B CN 101196816B CN 2007103085533 A CN2007103085533 A CN 2007103085533A CN 200710308553 A CN200710308553 A CN 200710308553A CN 101196816 B CN101196816 B CN 101196816B
- Authority
- CN
- China
- Prior art keywords
- processor
- module
- management
- processor core
- kernel services
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种操作***及管理方法。该操作***,包括:多个在内核态运行的与***调用类型对应的内核服务模块,分布在至少一个处理器和/或处理器核上;多个用于管理应用程序和应用进程的应用管理模块,分布在与所述内核服务模块不同的处理器和/或处理器核上,用于管理应用程序和应用进程;所述内核服务模块与所述应用程序通过***调用消息通信。该管理方法包括:步骤S1,应用程序发送***调用消息,并在发送所述消息后继续执行与该***调用结果无依赖关系的代码;步骤S2,内核服务模块接收所述***调用消息,并将***调用结果发回给应用程序;步骤S3,应用程序接收到所述***调用结果,执行与该***调用结果有依赖关系的代码。
Description
技术领域
本发明涉及计算机操作***,特别涉及基于多处理器和/或多核处理器(Multicore Processor)计算环境的操作***及管理方法。
背景技术
现有技术的处理器或处理器核能够在两种模式下运行,即内核态和用户态。如图1所示,当操作***通过***调用(Syscall)进入内核态时,处理器执行内核代码,完成操作***的一些功能。当操作***进入内核态时,应用程序的上下文(Context)将从当前执行的处理器或处理器核上切换出去,即现有操作***采用了“上下文切换(Context Switch)”来支持内核态与用户态的切换。这种上下文切换机制带来了许多开销,如高速缓冲存储器(Cache)、页表缓存(TLB)的刷新等。对于一些操作***密集型(OS-intensive)应用,频繁的上下文切换对性能有较大的影响,影响操作***的运行速度。
多核处理器和/或多处理器环境可以支持共享资源并支持同时执行多个应用程序。然而,现有的运行在多处理器和/或多核处理器上的操作***,除了存在上述的“上下文切换”造成的操作***性能下降外,还存在一个不足是:当需要调用操作***功能时,不同的处理器或处理器核对于共享资源要互斥访问。为了实现互斥访问,现有操作***使用锁(Lock)机制来支持,即如图2所示,处理器或处理器核1将正在访问的共享资源“锁”住,在当前处理器或处理器核1访问完毕以后才释放锁并允许其它处理器或处理器核0访问相同共享资源。锁分为不同的粒度,大锁(Big Kernel Lock)是最简单的支持多处理器的方式,但性能与扩展性很差;细粒度锁(Fine Grained Lock)实现比较复杂,但是性能与扩展性较好。然而,随着多核处理器的发展,处理器内部的处理器核越来越多,使得锁的使用频率大大增加。由锁引起的一些问题,如竞争、死锁等问题出现的机会也提高了,从而影响操作***的性能与扩展性。
发明内容
本发明的目的是提供一种运行在多处理器和/或多核处理器上的操作***,能够克服现有技术中采用“上下文切换”和“锁机制”而产生的不足,使操作***在多处理器和/或多核处理器环境下具有更好的性能与扩展性。
为了达到上述目的,本发明提供如下技术方案:
一种操作***管理装置,用于管理应用程序,包括:
多个在内核态运行的与操作***调用类型对应的内核服务模块,分布在至少一个处理器和/或处理器核上,用于执行操作***功能;
多个用于管理应用程序和应用进程的应用管理模块,分布在与所述内核服务模块不同的处理器和/或处理器核上,用于管理运行在这些处理器和/或处理器核上的应用程序和应用进程;
所述内核服务模块以及所述应用程序分别与所述处理器或处理器核绑定;
所述内核服务模块与所述应用管理模块通过***调用消息通信。
优选地,所述内核服务模块包括:
***调用接收和发送模块,用于接收所述应用程序所属的应用管理模块发出的***调用消息和向所述应用程序发送***调用的执行结果;
侦听模块,当侦听到所述应用程序发来***调用消息时,通知所述***调用接收和发送模块来接收所述***调用消息。
优选地,所述应用管理模块还包括***调用发送和接收模块,用于向所述内核服务模块发送***调用消息和接收所述内核服务模块发来的***调用结果。
优选地,所述应用管理模块还包括***调用路由表;所述应用管理模块根据***调用类型将应用程序的***调用请求转换为消息发送到所述***调用路由表中记录的相应的内核服务模块。
优选地,所述内核服务模块是指进程管理服务模块、内存管理服务模块、设备管理服务模块、文件操作服务模块或其组合。
优选地,所述内存管理服务模块包括如下***调用:申请或释放内存空间、建立页面映射、释放页面映射、保护内存空间、建立页面映射;所述文件操作服务模块包括如下***调用:打开文件、读文件、写文件、定位到文件某个位置;所述进程管理服务模块包括如下***调用:获取进程号、执行完毕退出; 所述设备管理服务模块包括如下***调用:控制设备。
优选地,所述进程管理服务模块还包括处理器向量表,用于记录每个处理器或处理器核的当前状态:运行内核服务模块的处理器或处理器核标记为内核状态,运行应用程序的处理器或核为用户状态,处于空闲状态的处理器或核为空闲状态。
优选地,所述内核服务模块还包括负载平衡子模块,用于统计收到***调用消息的频率,并且当该频率大于设定的第一值时,向所述进程管理服务模块发送负载平衡请求。
优选地,所述进程管理服务模块在接收到所述负载平衡请求后查询所述处理器向量表,如果所述处理器向量表中有处于空闲状态的处理器或处理器核,则所述进程管理服务模块使得该空闲状态处理器或处理器核上创建与发出负载平衡请求的所述内核服务模块相同的内核服务模块;如果所述处理器向量表中没有空闲的处理器或处理器核,则向其他内核服务模块发送查询***调用消息频率的消息,当接收到其他内核服务模块返回的***调用消息频率信息时,所述进程管理服务模块选择处理器或处理器核,使得该处理器或处理器核上创建与发出负载平衡请求的所述内核服务模块相同的内核服务模块,同时所述进程管理服务模块修改处理器向量表中该处理器或处理器核状态,并向所述应用管理模块发送更新***调用路由表的消息。
优选地,所述进程管理服务模块选择处理器或处理器核,是指如果处理器或处理器核上的***调用频率低于设定的第二值则选择该处理器或处理器核;如果不能选择出合适的处理器或处理器核,则不发生负载平衡操作。
优选地,所述负载平衡子模块,还用于统计收到***调用消息的频率,当该频率小于设定的第三值时,向所述进程管理服务模块发送负载平衡请求。
优选地,所述进程管理服务模块接收到所述负载平衡请求时,查询所述处理器向量表,若满足以下条件则执行负载平衡操作:第一条件,存在至少一个用户状态处理器或处理器核上执行了两个或两个以上的应用程序;第二条件,存在至少另一个处于内核状态的处理器或处理器核且其***调用消息频率也小于设定的第三值;
所述负载平衡操作包括:将当前内核服务模块和所述至少另一个处于内核状态的处理器或处理器核上运行的内核服务模块,合并到其中一个处理器或处 理器核上运行,并撤销被合并的处理器或处理器核上的内核服务模块,同时向所述应用管理模块发送更新***调用路由表的消息;保存满足第一条件的用户状态处理器或处理器核上的部分应用程序的上下文并将它们暂停,通知刚撤销内核服务模块的处理器或处理器核执行这些应用程序。
一种操作***管理方法,用于运行在多处理器和/或多核处理器上管理应用程序,包括如下步骤:
步骤S1,应用程序发送***调用消息给内核服务模块,并在发送所述消息后不发生上下文切换继续执行与该***调用结果无依赖关系的代码;
步骤S2,内核服务模块在绑定的处理器或处理器核上接收所述***调用消息,并将***调用结果发回给应用程序;
步骤S3,应用程序接收到所述***调用结果,在需要的时候执行与该***调用结果有依赖关系的代码;
其中,所述内核服务模块分布在至少一个处理器和/或处理器核上,所述应用程序分布在与所述内核服务模块不同的处理器和/或处理器核上;所述内核服务模块以及所述应用程序分别与所述处理器或处理器核绑定。
优选地,所述步骤S2中所述内核服务模块还采用负载平衡方法实现内核服务模块所在的处理器或处理器核的负载平衡,所述负载平衡方法具体包括如下步骤:
步骤S201,所述内核服务模块中的负载平衡子模块统计收到***调用消息的数量;
步骤S202,当***调用消息的数量大于设定的第一值时,向进程管理服务模块发送负载平衡请求;
步骤S203,所述进程管理服务模块在接收到所述负载平衡请求后查询每个处理器或处理器核的当前状态;
步骤S204,如果有处于空闲状态的处理器或处理器核,则所述进程管理服务模块使得该空闲状态处理器或处理器核上创建与发出负载平衡请求的所述内核服务模块相同的内核服务模块;
步骤S205,如果没有空闲的处理器或处理器核,则向其他内核服务模块发送查询***调用消息频率的消息,当接收到其他内核服务模块返回的***调用消息频率信息时,所述进程管理服务模块选择处理器或处理器核;
步骤S206,使得选择出的处理器或处理器核上创建与发出负载平衡请求的所述内核服务模块相同的内核服务模块;
步骤S207,所述进程管理服务模块修改处理器或处理器核状态;
步骤S208,向应用管理模块中的***调用路由表发送更新消息;
所述进程管理服务模块和应用管理模块分别是与***调用类型对应的内核处理模块。
优选地,所述步骤S205中,所述进程管理服务模块选择处理器或处理器核,是指如果该处理器或处理器核上的***调用频率低于设定的第二值则选择处理器或处理器核;如果不能选择出合适的处理器或处理器核,则不发生负载平衡操作。
优选地,所述管理方法还包括:
步骤S4,对应用程序所在的处理器或处理器核实现负载平衡。
优选地,所述步骤S4具体包括如下步骤:
步骤S401,所述内核服务模块中的负载平衡子模块,统计收到***调用消息的数量;
步骤S402,当***调用消息的数量小于设定的第三值时,向所述进程管理服务模块发送负载平衡请求;
步骤S403,所述进程管理服务模块接收到所述负载平衡请求时,查询每个处理器或处理器核的当前状态,若满足以下条件则执行步骤S404,否则停止:第一条件,存在至少一个用户状态处理器或处理器核上执行了两个或两个以上的应用程序;第二条件,存在至少另一个处于内核状态的处理器或处理器核且其***调用消息频率也小于设定的第三值;
步骤S404,将当前内核服务模块和所述至少另一个处于内核状态的处理器或处理器核上运行的内核服务模块,合并到其中一个处理器或处理器核上运行,并撤销被合并的处理器或处理器核上的内核服务模块;
条件S405,向应用管理模块中的***调用路由表发送更新消息;
步骤S406,保存满足第一条件的用户状态处理器或处理器核上的部分应用程序的上下文并将它们暂停;
步骤S407,进程管理服务模块通知刚撤销内核服务模块的处理器或处理器核执行所述部分应用程序;
步骤S408,进程管理服务模块更新每个处理器或处理器核的当前状态;
所述进程管理服务模块和应用管理模块分别是与***调用类型对应的内核处理模块。
与现有技术相比,本发明的有益技术效果是:
(1)由于本发明将现有技术的操作***内核分为多个内核服务模块,并将这些内核服务模块部署在与应用程序不同的处理器或处理器核上,从而大大减少了上下文切换,提高了操作***性能;同时,在内核服务模块内部是使用函数调用方式来执行,从而提高了操作***的运行效率。
(2)本发明的操作***将共享资源尽可能集中在单个内核服务模块中管理,用户程序需要访问共享资源时采用消息传递发送请求,相应的内核服务模块采用消息队列机制有序处理请求。该方法不需要锁机制,相当于分割消除了大内核中的锁((Big Kernel Lock)),从而提高操作***的扩展性。
(3)本发明采用异步***调用方式,即应用程序在发出***调用的请求以后,可以继续执行不依赖***调用结果的其它代码,当收到***调用的结果时再执行与该结果相关的代码,从而弥补IPC(Inter-Process Communication)的开销,提高了操作***的性能。
因此,本发明提供的操作***在数量较多的多处理器和/或多核处理器平台上有较好的性能以及扩展性。
附图说明
图1是现有技术的操作***用户态与内核态以及上下文切换示意图;
图2是现有技术的操作***基于锁机制的两个处理器互斥访问共享资源示意图;
图3是本发明中根据***调用类型拆分操作***内核的示意图;
图4是本发明中根据锁的使用情况拆分操作***内核的示意图;
图5是本发明中内核服务模块与应用的执行示意图;
图6是本发明中应用程序的异步***调用流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的基于多处理器和/或多核处理器的操作***及运行方法进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
多核处理器的发展越来越快,使得多处理器平台越来越多,处理器或处理器核的个数也越来越多。由于使用上下文切换和锁机制,现有操作***在多处理器或处理器核(尤其是8个以上)环境下性能与扩展性都有一定的局限性。
作为一种具体实施方式,本发明提供一种操作***,该操作***运行在多处理器和/或多核处理器上,用于管理应用程序,包括:
多个在内核态运行的与***调用类型对应的内核服务模块,分布在至少一个处理器和/或处理器核上;
多个用于管理应用程序和应用进程的应用管理模块,分布在与所述内核服务模块不同的处理器和/或处理器核上,用于管理运行在这些处理器和/或处理器核上的应用程序和应用进程。
所述内核服务模块与所述应用管理模块通过***调用消息通信。
本发明将多个在内核态运行的内核服务模块非对称分布式地部署在至少一个处理器或核上,作为一种可实施的方式,比如将一个内核服务模块部署在一个处理器或核上。将现有技术的操作***内核拆分为多个内核服务模块是本领域技术人员熟知的技术,比如如图3所示,根据***调用(Syscall)拆分:将***调用分类为进程管理、内存管理、设备管理、文件***等,把相关的***调用聚合在一个内核服务模块中;再比如如图4所示,根据锁的使用情况拆分:将现有技术的操作***内核划分为两部分,一部分是可以不依赖锁的内核服务模块,这些模块可以被多个应用程序同时调用而不会相互影响;另一部分是依赖锁的内核服务模块,这些模块有很多临界资源,需要互斥访问。
如图5所示,所述分布就是操作***的内核服务模块被部署到各处理器或 处理器核上,初始时是按照设定的方式部署到各处理器或处理器核上。在多处理器或核环境下,为了描述方便,可以把处理器或核分为主处理器与从处理器。主处理器上分布了内核服务模块,执行操作***功能;从处理器上分布了应用程序,执行应用程序。这样做的好处是,在执行过程中操作***内核服务模块以及应用程序分别与处理器或核绑定,不发生上下文切换,从而提高操作***的性能。如图6所示,由于不需要上下文切换,所以本发明的操作***可以实现异步***调用,即当应用程序向处于另一个处理器或核上的内核服务模块发出***调用消息时,应用程序可以继续执行与***调用结果无依赖关系的代码,当接收到***调用结果时,再执行与***调用结果有依赖关系的代码。这种异步***调用的运行方法将在后面详细描述。
较佳地,所述内核服务模块包括:***调用接收和发送模块,用于接收所述应用程序发出的***调用消息和向所述应用程序所属的应用管理模块发送***调用的执行结果;和侦听模块,当侦听到所述应用程序发来***调用消息时,通知所述***调用接收和发送模块来接收所述***调用消息。
较佳地,所述应用管理模块还包括***调用发送和接收模块,用于向所述内核服务模块发送***调用消息和接收所述内核服务模块发来的***调用结果。
较佳地,所述应用管理模块还包括***调用路由表,根据***调用类型将应用程序的***调用请求转换为消息发送到相应的服务模块。所述应用管理模块接收应用程序的***调用请求,然后转换为***调用消息,根据***调用路由表发送给相应的内核服务模块;它也会接收内核服务模块发来的***调用结果,并转发给应用程序。
较佳地,所述内核服务模块是指进程管理服务模块、内存管理服务模块、设备管理服务模块、文件操作服务模块或其组合。比如,将现有技术操作***内核中与内存管理有关的申请或释放内存空间(brk)、建立页面映射(mmap)、释放页面映射(munmap)、保护内存空间(mprotect)、建立页面映射(mmap2)等***调用划分为内存管理服务模块;将打开文件(open)、读文件(read)、写文件(write)、定位到文件某个位置(lseek)等***调用划分为文件操作服务模块;将获取进程号(getpid)、执行完毕退出(exit)等***调用划分 为进程管理服务模块;将控制设备(ioctl)等***调用划分为设备管理服务模块。
在本发明中,如果处理器或处理器核需要负载平衡,则主/从处理器数目可以根据负载而动态变化:当应用程序调用操作***内核服务模块频率不高的情况下,可以将多个内核服务模块运行在一个主处理器上;当应用是操作***密集型,则可以用多个主处理器来运行内核服务模块。下面将详细描述这种负载平衡方法。
较佳地,所述进程管理服务模块还包括处理器向量表,用于记录每个处理器或处理器核的当前状态:运行内核服务模块的处理器或处理器核标记为内核(Kernel)状态,运行应用程序的处理器或核为用户(User)状态,处于空闲状态的处理器或核为空闲(Idle)状态。
较佳地,所述内核服务模块还包括负载平衡子模块,用于统计收到***调用消息的频率,并且当该频率大于设定的第一值时,向所述进程管理服务模块发送负载平衡请求;所述进程管理服务模块在其它内核态的处理器或处理器核上创建与发出所述负载平衡请求的所述内核服务模块相同的内核服务模块,以实现负载平衡。具体来说,所述进程管理服务模块在接收到所述负载平衡请求后查询所述处理器向量表,如果所述处理器向量表中有处于空闲(Idle)状态的处理器或处理器核,则所述进程管理服务模块使得该空闲状态处理器上创建与发出负载平衡请求的所述内核服务模块相同的内核服务模块;如果所述处理器向量表中没有空闲(Idle)的处理器,则向其他内核服务模块发送查询***调用消息频率的消息,当接收到其他内核服务模块返回的***调用消息频率信息时,所述进程管理服务模块选择处理器,使得该处理器上创建与发出负载平衡请求的所述内核服务模块相同的内核服务模块,同时所述进程管理服务模块修改处理器向量表中该处理器状态,并向所述应用管理模块发送更新***调用路由表的消息。所述第一值的确定方法为:若该内核服务模块对一个***调用请求的平均处理时间为T,如果***调用请求消息的频率大于k1/T,则会发出负载平衡请求,即所述第一值设定为k1/T,其中k1为通过实验确定的系数,根据不同情况可以调整。
较佳地,所述进程管理服务模块选择处理器,是指如果该处理器或处理器 核上的***调用频率低于设定的第二值则选择处理器,如果不能选择出合适的处理器,则不发生负载平衡操作。所述第二值的确定方法为:所述第二值等于k2/T,其中T为该内核服务模块对一个***调用请求的平均处理时间,k2为通过实验确定的系数,根据不同情况可以调整。
较佳地,所述负载平衡子模块,还用于统计收到***调用消息的频率,当***调用数量小于设定的第三值时,向所述进程管理服务模块发送负载平衡请求;所述进程管理服务模块将当前内核服务模块和其它内核服务模块,合并到其中一个处理器或处理器核上运行,并撤销被合并的处理器或处理器核上的内核服务模块,且在被合并的处理器或处理器核上运行应用程序,以实现负载平衡。具体来说,所述进程管理服务模块接收到所述负载平衡请求时,查询所述处理器向量表,若满足以下条件则执行负载平衡操作:(a)存在至少一个用户(User)状态处理器或处理器核上执行了两个或两个以上的应用程序;(b)存在至少另一个处于内核(Kernel)状态的处理器且其***调用消息频率也小于设定的第三值;所述负载平衡操作包括:将当前内核服务模块和所述至少另一个处于内核状态的处理器上运行的内核服务模块,合并到其中一个处理器或处理器核上运行,并撤销被合并的处理器或处理器核上的内核服务模块,同时向所述应用管理模块发送更新***调用路由表的消息;选择满足条件a的用户(User)状态处理器,保存该处理器上的部分应用程序的上下文并将它们暂停,通知刚撤销内核服务模块的处理器执行这些应用程序;所述进程管理服务模块再更新处理器向量表。所述第三值的确定方法为:所述第三值等于k3/T,其中T为该内核服务模块对一个***调用请求的平均处理时间,k3为通过实验确定的系数,根据不同情况可以调整。
一种操作***管理方法,用于运行在多处理器和/或多核处理器上管理应用程序,包括如下步骤:
步骤S1,应用程序发送***调用消息,并在发送所述消息后继续执行与该***调用结果无依赖关系的代码;
步骤S2,内核服务模块接收所述***调用消息,并将***调用结果发回给应用程序;
步骤S3,应用程序接收到所述***调用结果,继续执行与该***调用结 果相关的代码。
由上述方法可以看出,本发明的运行方法包括两个重要特征:消息通信与异步处理,这两个特征可以称作异步***调用。具体来说:
消息通信是指当应用程序进行***调用时,将***调用需要的参数、返回地址空间等用消息包(Message)的形式发送给操作***内核服务模块,等内核服务模块处理完毕后,也将处理结果用消息包的形式发送给应用程序。
如图6所示,异步处理指应用程序发送***调用消息给操作***内核服务模块后,可以继续执行后面的代码而不必像现有的操作***那样发生上下文切换,转换为内核态来执行内核代码。内核服务模块在专用的处理器上执行,也不会发生上下文切换,当接收到消息包时,则进行处理,处理完毕后以消息包格式发送给应用。应用程序接收到消息包后会得到一个标识提醒,需要的时候直接从消息包提取数据即可。所以整个过程中主处理器与从处理器均不会发生上下文切换。并且操作***内核服务模块与应用程序可以并发的执行。
较佳地,所述步骤S2中所述内核服务模块还采用负载平衡方法实现内核服务模块所在的处理器或处理器核的负载平衡,所述负载平衡方法具体包括如下步骤:
步骤S201,负载平衡子模块统计收到***调用消息的频率。
步骤S202,当***调用数量大于设定的第一值时,向所述进程管理服务模块发送负载平衡请求。
步骤S203,所述进程管理服务模块在接收到所述负载平衡请求后查询所述处理器向量表。
步骤S204,如果所述处理器向量表中有处于空闲(Idle)状态的处理器或处理器核,则所述进程管理服务模块使得该空闲状态处理器上创建与发出负载平衡请求的所述内核服务模块相同的内核服务模块;
步骤S205,如果所述处理器向量表中没有空闲(Idle)的处理器,则向其他内核服务模块发送查询***调用消息频率的消息,当接收到其他内核服务模块返回的***调用消息频率信息时,所述进程管理服务模块选择处理器。
步骤S206,使得选择出的处理器上创建与发出负载平衡请求的所述内核 服务模块相同的内核服务模块,并。
步骤S207,所述进程管理服务模块修改处理器向量表中该处理器状态。
步骤S208,向所述应用管理模块发送更新***调用路由表的消息。
较佳地,所述步骤205中,所述进程管理服务模块选择处理器,是指如果该处理器或处理器核上的***调用频率低于设定的第二值则选择处理器,如果不能选择出合适的处理器,则不发生负载平衡操作。所述第二值的确定方法为:所述第二值等于k2/T,其中T为该内核服务模块对一个***调用请求的处理时间,k2为通过实验确定的系数,根据不同情况可以调整。
较佳地,操作***运行方法还包括:
步骤S4,对应用程序所在的处理器负载平衡。
较佳地。所述步骤S4具体包括如下步骤:
步骤S401,内核服务模块的负载平衡子模块,统计收到***调用消息的频率。
步骤S402,当***调用数量小于设定的第三值时,向所述进程管理服务模块发送负载平衡请求。
步骤S403,所述进程管理服务模块接收到所述负载平衡请求时,查询所述处理器向量表,若满足以下条件则执行步骤S404,否则停止:(a)存在至少一个用户(User)状态处理器或处理器核上执行了两个或两个以上的应用程序;(b)存在至少另一个处于内核(Kernel)状态的处理器且其***调用消息频率也小于设定的第三值;
步骤S404,将当前内核服务模块和所述至少另一个处于内核状态的处理器上运行的内核服务模块,合并到其中一个处理器或处理器核上运行,并撤销被合并的处理器或处理器核上的内核服务模块;
步骤S405,向所述应用管理模块发送更新***调用路由表的消息。
步骤S406,选择满足条件a的用户(User)状态处理器,保存该处理器上的部分应用程序的上下文并将它们暂停。
步骤S407,进程管理服务模块通知刚撤销内核服务模块的处理器执行所 述部分应用程序。
步骤S408,进程管理服务模块再更新处理器向量表。
从上面的具体实施方式可以清楚看出,本发明的优点包括:
本发明的操作***及运行方法采用将多个内核服务模块非对称地分布在多个处理器或核上,并采用异步***调用方法,较好地解决了现有技术的操作***由于采用上下文切换和锁机制而产生的局限性。具体来说:
本发明现有技术的操作***内核拆分为不同的内核服务模块(Service),减少对临界区/锁机制的依赖;将内核服务模块非对称地部署到部分或者所有处理器或核上,并使内核服务模块具有负载平衡能力,使操作***具有很好的扩展能力。
本发明采用异步***调用,将Syscall请求定义为消息,转发到相应的内核服务模块处理,避免上下文切换;通过Syscall请求异步处理机制,使操作***各内核服务模块与应用程序并发执行,提高了操作***性能。
以上所述内容,仅为本发明具体的实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围内。
Claims (17)
1.一种操作***管理装置,用于管理应用程序,其特征是,包括:
多个在内核态运行的与操作***调用类型对应的内核服务模块,分布在至少一个处理器和/或处理器核上,用于执行操作***功能;
多个用于管理应用程序和应用进程的应用管理模块,分布在与所述内核服务模块不同的处理器和/或处理器核上,用于管理运行在这些处理器和/或处理器核上的应用程序和应用进程;
所述内核服务模块以及所述应用程序分别与所述处理器或处理器核绑定;
所述内核服务模块与所述应用管理模块通过***调用消息通信。
2.根据权利要求1所述的操作***管理装置,其特征是,所述内核服务模块包括:
***调用接收和发送模块,用于接收所述应用程序所属的应用管理模块发出的***调用消息和向所述应用程序发送***调用的执行结果;
侦听模块,当侦听到***调用消息时,通知所述***调用接收和发送模块来接收所述***调用消息。
3.根据权利要求1所述的操作***管理装置,其特征是,所述应用管理模块还包括***调用发送和接收模块,用于向所述内核服务模块发送***调用消息和接收所述内核服务模块发来的***调用结果。
4.根据权利要求1所述的操作***管理装置,其特征是,所述应用管理模块还包括***调用路由表;所述应用管理模块根据***调用类型将应用程序的***调用请求转换为消息发送到所述***调用路由表中记录的相应的内核服务模块。
5.根据权利要求4所述的操作***管理装置,其特征是,所述内核服务模块是指进程管理服务模块、内存管理服务模块、设备管理服务模块、文件操作服务模块或其组合。
6.根据权利要求5所述的操作***管理装置,其特征是,所述内存管理服务模块包括如下***调用:申请或释放内存空间、建立页面映射、释放页面映射、保护内存空间、建立页面映射;所述文件操作服务模块包括如下***调用:打开文件、读文件、写文件、定位到文件某个位置;所述进程管理服务模块包括如下***调用:获取进程号、执行完毕退出;所述设备管理服务模块包括如下***调用:控制设备。
7.根据权利要求5所述的操作***管理装置,其特征是,所述进程管理服务模块还包括处理器向量表,用于记录每个处理器或处理器核的当前状态:运行内核服务模块的处理器或处理器核标记为内核状态,运行应用程序的处理器或处理器核为用户状态,处于空闲状态的处理器或处理器核为空闲状态。
8.根据权利要求7所述的操作***管理装置,其特征是,所述内核服务模块还包括负载平衡子模块,用于统计收到***调用消息的频率,并且当该频率大于设定的第一值时,向所述进程管理服务模块发送负载平衡请求。
9.根据权利要求8所述的操作***管理装置,其特征是,所述进程管理服务模块在接收到所述负载平衡请求后查询所述处理器向量表,如果所述处理器向量表中有处于空闲状态的处理器或处理器核,则所述进程管理服务模块使得该空闲状态处理器或处理器核上创建与发出负载平衡请求的所述内核服务模块相同的内核服务模块;如果所述处理器向量表中没有空闲的处理器或处理器核,则向其他内核服务模块发送查询***调用消息频率的消息,当接收到其他内核服务模块返回的***调用消息频率信息时,所述进程管理服务模块选择处理器或处理器核,使得该处理器或处理器核上创建与发出负载平衡请求的所述内核服务模块相同的内核服务模块,同时所述进程管理服务模块修改所述处理器向量表中该处理器或处理器核状态,并向所述应用管理模块发送更新***调用路由表的消息。
10.根据权利要求9所述的操作***管理装置,其特征是,所述进程管理服务模块选择处理器或处理器核,是指如果处理器或处理器核上的***调用频率低于设定的第二值则选择该处理器或处理器核;如果不能选择出合适的处理器或处理器核,则不发生负载平衡操作。
11.根据权利要求8所述的操作***管理装置,其特征是,所述负载平衡子模块,还用于统计收到***调用消息的频率,当该频率小于设定的第三值时,向所述进程管理服务模块发送负载平衡请求。
12.根据权利要求11所述的操作***管理装置,其特征是,所述进程管理服务模块接收到所述负载平衡请求时,查询所述处理器向量表,若满足以下条件则执行负载平衡操作:第一条件,存在至少一个用户状态处理器或处理器核上执行了两个或两个以上的应用程序;第二条件,存在至少另一个处于内核状态的处理器或处理器核且其***调用消息频率也小于设定的第三值;
所述负载平衡操作包括:将当前内核服务模块和所述至少另一个处于内核状态的处理器或处理器核上运行的内核服务模块,合并到其中一个处理器或处理器核上运行,并撤销被合并的处理器或处理器核上的内核服务模块,同时向所述应用管理模块发送更新***调用路由表的消息;保存满足第一条件的用户状态处理器或处理器核上的部分应用程序的上下文并将它们暂停,通知刚撤销内核服务模块的处理器或处理器核执行这些应用程序。
13.一种操作***管理方法,用于运行在多处理器和/或多核处理器上管理应用程序,包括如下步骤:
步骤S1,应用程序发送***调用消息给内核服务模块,并在发送所述消息后不发生上下文切换继续执行与该***调用结果无依赖关系的代码;
步骤S2,内核服务模块在绑定的处理器或处理器核上接收所述***调用消息,并将***调用结果发回给应用程序;
步骤S3,应用程序接收到所述***调用结果,在需要的时候执行与该***调用结果有依赖关系的代码;
其中,所述内核服务模块分布在至少一个处理器和/或处理器核上,所述应用程序分布在与所述内核服务模块不同的处理器和/或处理器核上;所述内核服务模块以及所述应用程序分别与所述处理器或处理器核绑定。
14.根据权利要求13所述的操作***管理方法,其特征是,所述步骤S2中所述内核服务模块还采用负载平衡方法实现内核服务模块所在的处理器或处理器核的负载平衡,所述负载平衡方法具体包括如下步骤:
步骤S201,所述内核服务模块中的负载平衡子模块统计收到***调用消息的数量;
步骤S202,当***调用消息的数量大于设定的第一值时,向进程管理服务模块发送负载平衡请求;
步骤S203,所述进程管理服务模块在接收到所述负载平衡请求后查询每个处理器或处理器核的当前状态;
步骤S204,如果有处于空闲状态的处理器或处理器核,则所述进程管理服务模块使得该空闲状态处理器或处理器核上创建与发出负载平衡请求的所述内核服务模块相同的内核服务模块;
步骤S205,如果没有空闲的处理器或处理器核,则向其他内核服务模块发送查询***调用消息频率的消息,当接收到其他内核服务模块返回的***调用消息频率信息时,所述进程管理服务模块选择处理器或处理器核;
步骤S206,使得选择出的处理器或处理器核上创建与发出负载平衡请求的所述内核服务模块相同的内核服务模块;
步骤S207,所述进程管理服务模块修改所述处理器或处理器核状态;
步骤S208,向应用管理模块中的***调用路由表发送更新消息;
所述进程管理服务模块和应用管理模块分别是与***调用类型对应的内核处理模块。
15.根据权利要求14所述的操作***管理方法,其特征是,所述步骤S205中,所述进程管理服务模块选择处理器或处理器核,是指如果该处理器或处理器核上的***调用频率低于设定的第二值则选择处理器或处理器核;如果不能选择出合适的处理器或处理器核,则不发生负载平衡操作。
16.根据权利要求13所述的操作***管理方法,其特征是,还包括:
步骤S4,对应用程序所在的处理器或处理器核实现负载平衡。
17.根据权利要求16所述的操作***管理方法,其特征是,所述步骤S4具体包括如下步骤:
步骤S401,所述内核服务模块中的负载平衡子模块,统计收到***调用消息的数量;
步骤S402,当***调用消息的数量小于设定的第三值时,向所述进程管理服务模块发送负载平衡请求;
步骤S403,所述进程管理服务模块接收到所述负载平衡请求时,查询每个处理器或处理器核的当前状态,若满足以下条件则执行步骤S404,否则停止:第一条件,存在至少一个用户状态处理器或处理器核上执行了两个或两个以上的应用程序;第二条件,存在至少另一个处于内核状态的处理器或处理器核且其***调用消息频率也小于设定的第三值;
步骤S404,将当前内核服务模块和所述至少另一个处于内核状态的处理器或处理器核上运行的内核服务模块,合并到其中一个处理器或处理器核上运行,并撤销被合并的处理器或处理器核上的内核服务模块;
步骤S405,向应用管理模块中的***调用路由表发送更新消息;
步骤S406,保存满足第一条件的用户状态处理器或处理器核上的部分应用程序的上下文并将它们暂停;
步骤S407,进程管理服务模块通知刚撤销内核服务模块的处理器或处理器核执行所述部分应用程序;
步骤S408,进程管理服务模块更新每个处理器或处理器核的当前状态;
所述进程管理服务模块和应用管理模块分别是与***调用类型对应的内核处理模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007103085533A CN101196816B (zh) | 2007-12-29 | 2007-12-29 | 一种操作***及操作***管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007103085533A CN101196816B (zh) | 2007-12-29 | 2007-12-29 | 一种操作***及操作***管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101196816A CN101196816A (zh) | 2008-06-11 |
CN101196816B true CN101196816B (zh) | 2010-12-08 |
Family
ID=39547250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007103085533A Expired - Fee Related CN101196816B (zh) | 2007-12-29 | 2007-12-29 | 一种操作***及操作***管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101196816B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016074130A1 (zh) * | 2014-11-10 | 2016-05-19 | 华为技术有限公司 | 一种***调用命令的批处理方法及装置 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105308610A (zh) * | 2013-03-26 | 2016-02-03 | 爱迪德技术有限公司 | 用于设备上的平台和用户应用安全性的方法和*** |
US9558000B2 (en) * | 2014-02-06 | 2017-01-31 | Optimum Semiconductor Technologies, Inc. | Multithreading using an ordered list of hardware contexts |
TWI710899B (zh) * | 2015-10-14 | 2020-11-21 | 南韓商三星電子股份有限公司 | 計算系統以及其操作方法 |
CN105204928A (zh) * | 2015-10-30 | 2015-12-30 | 上海斐讯数据通信技术有限公司 | 一种共享资源访问方法及*** |
CN108334420B (zh) * | 2017-01-19 | 2021-06-08 | 中国科学院声学研究所 | 一种基于多核网络处理器***的数据恢复方法 |
EP3779690A4 (en) | 2018-04-20 | 2021-05-12 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | PROCESSOR CORE PLANNING METHOD AND DEVICE, TERMINAL DEVICE AND STORAGE MEDIUM |
CN111159714B (zh) * | 2019-12-23 | 2022-03-11 | 北京工业大学 | 一种访问控制中主体运行时可信验证方法及*** |
CN113127069B (zh) * | 2019-12-31 | 2023-08-22 | 成都鼎桥通信技术有限公司 | 基于双***的位置服务管理方法、装置和终端设备 |
CN115599505B (zh) * | 2021-06-28 | 2024-07-05 | 华为技术有限公司 | 用户态中断请求的处理方法及装置 |
-
2007
- 2007-12-29 CN CN2007103085533A patent/CN101196816B/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016074130A1 (zh) * | 2014-11-10 | 2016-05-19 | 华为技术有限公司 | 一种***调用命令的批处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101196816A (zh) | 2008-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101196816B (zh) | 一种操作***及操作***管理方法 | |
JP6006230B2 (ja) | 組み合わせたcpu/gpuアーキテクチャシステムにおけるデバイスの発見およびトポロジーのレポーティング | |
CN101727351B (zh) | 面向多核平台的虚拟机监控器非对称调度器及其调度方法 | |
Dysart et al. | Highly scalable near memory processing with migrating threads on the Emu system architecture | |
US7877091B2 (en) | Method and system for executing a container managed application on a processing device | |
CN103294544B (zh) | 嵌入式***及其中断处理方法与装置 | |
CN103262002A (zh) | 优化***调用请求通信 | |
CN103368848A (zh) | 信息处理设备、算术装置和信息传递方法 | |
CN102375761A (zh) | 业务管理方法和装置、以及设备 | |
KR101900436B1 (ko) | 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고 | |
CN102521015B (zh) | 嵌入式平台下的设备虚拟化方法 | |
US11900153B2 (en) | Data structure execution framework using virtual computing domains | |
CN103646006A (zh) | 一种处理器的调度方法、装置和*** | |
CN102667714A (zh) | 支持访问由操作***环境外的资源提供的功能的方法和*** | |
CA3173088A1 (en) | Utilizing coherently attached interfaces in a network stack framework | |
US9189400B2 (en) | Hybrid active memory processor system | |
US8656114B2 (en) | Multi-core active memory processor system | |
JP2017107382A (ja) | プログラム実行システム、プログラム実行方法、および、プログラム | |
Miliadis et al. | VenOS: A virtualization framework for multiple tenant accommodation on reconfigurable platforms | |
KR101614920B1 (ko) | 다수 개의 컴퓨팅 시스템 및/또는 환경들에서의 입출력 자원들의 공유 | |
CN114816235A (zh) | 用于计算存储设备的数据传递的***和方法 | |
CN110868365A (zh) | 通信方法和通信*** | |
CN114327767B (zh) | 任务处理的方法、装置、电子设备及计算机可读存储介质 | |
US20240241775A1 (en) | Methods and apparatus to enable inter-process communication using a shared memory with a shared heap | |
CN117573386B (zh) | 进程间通信方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101208 Termination date: 20191229 |
|
CF01 | Termination of patent right due to non-payment of annual fee |