CN105335228B - 一种内存变更处理方法,及操作系统 - Google Patents
一种内存变更处理方法,及操作系统 Download PDFInfo
- Publication number
- CN105335228B CN105335228B CN201410306462.6A CN201410306462A CN105335228B CN 105335228 B CN105335228 B CN 105335228B CN 201410306462 A CN201410306462 A CN 201410306462A CN 105335228 B CN105335228 B CN 105335228B
- Authority
- CN
- China
- Prior art keywords
- operating system
- memory
- data
- ipi
- tables
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种内存变更处理方法,及操作系统,用于多内核多操作系统进行内存变更处理。本发明实施例方法包括:第一操作系统获取内存资源变更的指示消息,所述指示消息用于指示第二操作系统的内存资源发生变更;所述第一操作系统根据所述指示消息构建高级配置和电源管理接口ACPI数据表,所述第一操作系统向所述第二操作系统发送处理器之间中断IPI指令,使得所述第二操作系统根据所述IPI指令,通过IPI事件模拟生成系统控制中断SCI下半部事件,并使得所述第二操作系统通过读取所述ACPI数据表运行所述SCI下半部事件。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种内存变更处理方法,及操作系统。
背景技术
多内核多操作系统为在多核系统下,在一个或多个内核上分别启动操作系统,这些操作系统共同组成多内核多操作系统。如,Rainforest系统。
在一套多内核多操作系统(OS,Operating System)中,包括有两种操作系统;分别用于资源管理的管理操作系统(如,Rainforest系统中的Heavy OS),以及基于所述管理操作系统分配的系统资源创建的轻量级操作系统(如,Rainforest系统中的Light OS);其中,所述管理操作系统具有资源分配、回收、虚拟化及协调等功能的通用操作系统,它是硬件上第一个启动的操作系统实例。所述管理操作系统可以对多个轻量级操作系统的实例进行管理,并且直接对物理资源进行管理;而轻量级操作系统则没有物理资源的管理功能。
在实际应用中,轻量级操作系统对资源的访问有热插拔的需求。在现有技术中,Linux系统的内存热插拔的实现分成两个阶段:1)Physical Memory Hot-plug phase(物理层面的内存热插拔阶段);2)Logical Memory Hot-plug phase(逻辑层面的内存热插拔阶段)。
物理层面的内存热插拔必须依赖硬件和固件提供必要的支持,以提供物理内存热插拔的环境。如果在操作系统连接新的内存时,需要由固件(firmware)提供通知机制。由于现有的Hot-Plug技术需要依赖于操作系统以外的硬件平台(如,热拔插控制器,各种平台下的各种名字空间都不尽相同)支持,不能由一台硬件设备独立完成。
发明内容
本发明实施例提供了一种内存变更处理方法,及操作系统,用于多内核多操作系统进行内存变更处理。
本发明实施例第一方面提供的内存变更处理方法,包括:
第一操作系统获取内存资源变更的指示消息,所述指示消息用于指示第二操作系统的内存资源发生变更;所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统;
所述第一操作系统根据所述指示消息构建高级配置和电源管理接口ACPI数据表,所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表;
所述第一操作系统向所述第二操作系统发送处理器之间中断IPI指令,使得所述第二操作系统根据所述IPI指令,通过IPI事件模拟生成系统控制中断SCI下半部事件,并使得所述第二操作系统通过读取所述ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务。
在第一方面的第一种可能实现的方法中,所述第一操作系统根据所述指示消息构建ACPI数据表,包括:
所述第一操作系统构建数据结构,并将与所述第二操作系统的内存资源变更相关的硬件信息填充到指定的物理地址,所述数据结构包括多个ACPI数据表之间的数据关联关系,所述ACPI数据表包括:根系统描述表RSDT,固定ACPI描述表FADT以及可区分系统描述表DSDT。
本发明实施例第二方面提供的内存变更处理方法,包括:
第二操作系统接收第一操作系统发送的IPI指令,所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统;所述IPI指令为所述第一操作系统根据所述第二操作系统发生内存变更而生成的中断指示;
所述第二操作系统根据所述IPI指令生成系统控制中断SCI下半部事件,所述SCI下半部事件是通过IPI事件模拟的;
所述第二操作系统通过读取ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务,所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表。
在第二方面的第一种可能实现的方法中,所述第二操作系统根据所述IPI指令生成SCI下半部事件,包括:
所述第二操作系统根据所述IPI指令在可区分系统描述表DSDT写入内存变更控制方法,使得所述第一操作系统通过ACPI数据表之间的数据关联关系,运行所述内存变更控制方法,所述DSDT为所述ACPI数据表中所述第二操作系统可以进行信息读写的数据表;
所述内存变更控制方法包括:读取所述DSDT中需要分配的物理内存信息,向所述第二操作系统的驱动层发出通告消息,所述通告消息用于指示当前需要进行内存变更操作操作,所述驱动层的操作系统能源管理OSPM接口读取所述物理内存信息,并执行内存变更的相关代码。
结合第二方面的第一种可能实现的方法,在第二种可能实现的方法中,所述第二操作系统通过读取所述ACPI数据表运行所述SCI下半部事件,包括:
所述第二操作系统接收所述第一操作系统发送的通告消息,所述通告消息用于指示当前需要进行内存变更操作操作;
所述第二操作系统根据所述通告消息调用所述OSPM接口读取DSDT中的物理内存信息,并执行内存变更的相关代码。
本发明实施例第三方面提供的操作系统,作为第一操作系统,与第二操作系统机型交互,包括:
指示获取单元,用于获取内存资源变更的指示消息,所述指示消息用于指示第二操作系统的内存资源发生变更;所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统;
数据表构建单元,用于根据所述指示消息构建高级配置和电源管理接口ACPI数据表,所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表;
指令发送单元,用于向所述第二操作系统发送处理器之间中断IPI指令,使得所述第二操作系统根据所述IPI指令,通过IPI事件模拟生成系统控制中断SCI下半部事件,并使得所述第二操作系统通过读取所述ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务。
在第三方面的第一种可能实现的方法中,所述数据表构建单元具体用于:
构建数据结构,并将与所述第二操作系统的内存资源变更相关的硬件信息填充到指定的物理地址,所述数据结构包括多个ACPI数据表之间的数据关联关系,所述ACPI数据表包括:根系统描述表RSDT,固定ACPI描述表FADT以及可区分系统描述表DSDT。
本发明实施例第四方面提供的操作系统,包括:作为第二操作系统,与第一操作系统机型交互,包括:
指令接收单元,用于接收第一操作系统发送的IPI指令,所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统;所述IPI指令为所述第一操作系统根据所述第二操作系统发生内存变更而生成的中断指示;
中段模拟单元,用于根据所述IPI指令生成系统控制中断SCI下半部事件,所述SCI下半部事件是通过IPI事件模拟的;
中段执行单元,用于通过读取ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务,所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表。
在第四方面的第一种可能实现的方法中,所述中段模拟单元具体用于:
根据所述IPI指令在可区分系统描述表DSDT写入内存变更控制方法,使得所述第一操作系统通过ACPI数据表之间的数据关联关系,运行所述内存变更控制方法,所述DSDT为所述ACPI数据表中所述第二操作系统可以进行信息读写的数据表;
所述内存变更控制方法包括:读取所述DSDT中需要分配的物理内存信息,向所述第二操作系统的驱动层发出通告消息,所述通告消息用于指示当前需要进行内存变更操作操作,所述驱动层的操作系统能源管理OSPM接口读取所述物理内存信息,并执行内存变更的相关代码。
结合第四方面的第一种可能实现的方法,在第二种可能实现的方法中,所述中段执行单元具体用于:
接收所述第一操作系统发送的通告消息,所述通告消息用于指示当前需要进行内存变更操作操作;
根据所述通告消息调用所述OSPM接口读取DSDT中的物理内存信息,并执行内存变更的相关代码。
从以上技术方案可以看出,本发明实施例具有以下优点:
在本发明实施例中,用于硬件资源管理的第一操作系统在获取到内存资源变更的指示消息时,根据所述指示消息构建高级配置和电源管理接口(ACPI,AdvancedConfiguration and Power Management Interface)数据表,并向所述第二操作系统发送处理器之间中断IPI指令,使得所述第二操作系统根据所述IPI指令,通过IPI事件模拟生成系统控制中断SCI下半部事件,并使得所述第二操作系统通过读取所述ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务;从而使得没有硬件资源管理能力的第二操作系统可以完成内存的热插拔操作,并且,所述第一操作系统和第二操作系统可以运行在同一台硬件设备中,即在无需外接硬件平台的情况下,也可以完成内存的热插拔操作。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例内存变更处理方法的一个流程示意图;
图2是本发明实施例第一操作系统构建ACPI数据表的示意图;
图3是本发明实施例内存变更处理方法的另一个流程示意图;
图4是本发明实施例第二操作系统模拟SCI下半部事件的示意图;
图5是本发明实施例操作系统的一个结构示意图;
图6是本发明实施例操作系统的另一个结构示意图;
图7是本发明实施例操作系统的一个计算机结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例中内存变更处理方法的一个实施例包括:
101、第一操作系统获取内存资源变更的指示消息;
第一操作系统获取内存资源变更的指示消息,所述指示消息用于指示第二操作系统的内存资源发生变更;所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统。
在实际应用中,当检测到物理内存发生了变动(如,发生了物理内存的热插拔事件),系统就会生成内存资源变更的指示消息;或者,用户在第一操作系统或第二操作系统进行操作时,指示需要对第二操作系统的内存资源进行分配,系统也就会生成内存资源变更的指示消息;可以理解的是,在实际应用中,内存资源变更的指示消息还可以有其它的触发生成方法,此处具体不作限定。
示例性的,所述第一操作系统可以为多内核多操作系统中的Heavy OS,所述第二操作系统可以为多内核多操作系统中的Light OS。
102、第一操作系统根据所述指示消息构建高级配置和电源管理接口数据表;
第一操作系统根据所述指示消息构建高级配置和电源管理接口(ACPI,AdvancedConfiguration and Power Management Interface)数据表(Table),所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表。第一操作系统在构建了ACPI数据表之后,将所述ACPI数据表写入固定的物理内存中。
在现有技术中,ACPI是基本输入输出系统(BIOS,Basic Input Output System)和系统硬件之间的工作接口,用于实现系统电源管理,设备电源管理,处理器电源管理,设备和处理器性能管理等功能。
在本发明实施例中,ACPI数据表是BIOS提供给操作系统定向电源管理(OSPM,OS-directed Power Management)的硬件配置数据,包括系统硬件的电源管理和配置管理,具体的,所述ACPI数据表包含有多个,如,根系统描述表(RSDT,Root System DescriptionTable),固定ACPI描述表(FADT,Fixed ACPI Description Table)以及可区分系统描述表(DSDT,Differentiated System Description Table)。其中,ACPI数据表中的根系统描述指针(RSDP,Root System Description Pointer)位于F段,用于搜索以及定位ACPI数据表。
其中,OSPM支持ACPI的一个部分,第一操作系统可以从驱动程序的角度控制ACPI子模块,同时支持ACPI包括系统控制中断(SCI,System Control Interrupt),设备事件,系统事件模式,这些事件模式可以充分支持Hot-plug方式。
其中,SCI是一种源自ACPI兼容芯片的系统中断,操作系统通过映射不同的ACPI中断向量以便共享此中断,当底层硬件产生SCI事件的时候(例如设备插入事件引发中断),根据通知OSPM层处理相对应的ACPI事件,OSPM层会调用预先安装的中断句柄。
示例性的,在实际应用中,第一操作系统在构建ACPI数据表时,可以先构建数据结构,并将与所述第二操作系统的内存资源变更相关的硬件信息填充到指定的物理地址(如,将RSDP放于F段);其中,所述数据结构包括多个ACPI数据表之间的数据关联关系。
请参阅图2,假设第一操作系统为Heavy OS,第二操作系统为Light OS,第一操作系统构建的ACPI数据表之间的数据关联关系可以参考图2,其中,FADT中包含了ACPI的硬件寄存器组的应用和配置(包含它们的硬件地址)也包括DSDT表硬件地址。
103、第一操作系统向所述第二操作系统发送处理器之间中断指令。
第一操作系统向所述第二操作系统发送处理器之间中断(IPI,Inter-ProcessorInterrupt)指令,使得所述第二操作系统根据所述IPI指令,通过IPI事件模拟生成SCI下半部事件,并使得所述第二操作系统通过读取所述ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务。
第二操作系统收到所述IPI指令之后,根据所述IPI指令IPI事件模拟生成SCI下半部事件。其中,IPI为一种特别的中断。在对称多处理器的环境下,它可以被任意一个处理器用来对另一个处理器产生中断。
在实际应用中,中断事件可以分为两个半部:上半部事件和下半部事件。上半部事件的功能是″登记中断″,当一个中断发生时,它进行相应地硬件读写后就把中断例程的下半部挂到该设备的下半部执行队列中去。因此,上半部中断执行的速度就会很快,可以服务更多的中断请求。
下半部事件和上半部事件最大的不同是下半部事件是可暂停执行的,而上半部事件是不可暂停的;下半部事件中的任务相对于来说并不是非常紧急的,通常还比较耗时,因此可以由操作系统自行安排运行时机。具体的,下半部事件的任务就是执行与中断处理密切相关但中断处理程序本身不执行的工作。
在本发明实施例中,用于硬件资源管理的第一操作系统在获取到内存资源变更的指示消息时,根据所述指示消息构建高级配置和电源管理接口ACPI数据表,并向所述第二操作系统发送处理器之间中断IPI指令,使得所述第二操作系统根据所述IPI指令,通过IPI事件模拟生成系统控制中断SCI下半部事件,并使得所述第二操作系统通过读取所述ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务;从而使得没有硬件资源管理能力的第二操作系统可以完成内存的热插拔操作,并且,所述第一操作系统和第二操作系统可以运行在同一台硬件设备中,即在无需外接硬件平台的情况下,也可以完成内存的热插拔操作。
上面是从第一操作系统的角度对本发明实施例中的内存变更处理方法进行了描述,下面从第二操作系统的角度对本发明实施例中的内存变更处理方法进行描述,请参阅图3,本发明实施例中的内存变更处理方法的另一实施例包括:
301、第二操作系统接收第一操作系统发送的IPI指令;
第二操作系统接收第一操作系统发送的IPI指令,所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统;所述IPI指令为所述第一操作系统根据所述第二操作系统发生内存变更而生成的中断指示。
示例性的,所述第一操作系统可以为多内核多操作系统中的Heavy OS,所述第二操作系统可以为多内核多操作系统中的Light OS。
302、第二操作系统根据所述IPI指令生成系统控制中断SCI下半部事件;
第二操作系统根据所述IPI指令生成系统控制中断SCI下半部事件,所述SCI下半部事件是通过IPI事件模拟的。
其中,SCI是一种源自ACPI兼容芯片的系统中断,操作系统通过映射不同的ACPI中断向量以便共享此中断,当底层硬件产生SCI事件的时候(例如设备插入事件引发中断),根据通知OSPM层处理相对应的ACPI事件,OSPM层会调用预先安装的中断句柄。
示例性的,请参阅图4,通过IPI事件模拟SCI下半部事件具体可以为:第二操作系统根据所述IPI指令在可区分系统描述表DSDT写入内存变更控制方法,使得所述第一操作系统通过ACPI数据表之间的数据关联关系,运行所述内存变更控制方法,所述DSDT为所述ACPI数据表中所述第二操作系统可以进行信息读写的数据表。
其中,所述内存变更控制方法包括:读取所述DSDT中需要分配的物理内存信息,向所述第二操作系统的驱动层发出通告消息,所述通告消息用于指示当前需要进行内存变更操作操作,所述驱动层的操作系统能源管理OSPM接口读取所述物理内存信息,并执行内存变更的相关代码。所述内存变更控制方法具体可以为热插拔控制方法。所述内存变更的相关代码可以为操作系统中预置的。
303、第二操作系统通过读取ACPI数据表运行所述SCI下半部事件。
第二操作系统通过读取ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务,所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表。
具体的,运行所述SCI下半部事件可以包括:第二操作系统接收所述第一操作系统发送的通告消息,所述通告消息用于指示当前需要进行内存变更操作操作;第二操作系统根据所述通告消息调用所述OSPM接口读取DSDT中的物理内存信息,并执行内存变更的相关代码。
在本发明实施例中,可以由第一操作系统为第二操作系统准备内存变更物理阶段的数据结构和ACPI数据表的内容,并用IPI中断模拟内存热插拔过程中的SCI中断。使得第二操作系统的内存资源发生变更时,,无需修改第二操作系统的内核代码,保持了操作系统的兼容性。
进一步的,在现有虚拟化内存变更方案中,也可以利用本发明实施例的内存变更处理方法来实现全虚拟化下的虚拟机内存热插拔,不用修改虚拟机中的内核代码,能够实现更加逼真的内存热插拔。
上面仅以一些例子对本发明实施例中的应用场景进行了说明,可以理解的是,在实际应用中,还可以有更多的应用场景,具体此处不作限定。
下面对实现上述内存变更处理方法的操作系统进行描述,请参阅图5,本发明实施例中操作系统的一个实施例,作为第一操作系统,与第二操作系统机型交互,包括:
指示获取单元501,用于获取内存资源变更的指示消息,所述指示消息用于指示第二操作系统的内存资源发生变更;所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统;
数据表构建单元502,用于根据所述指示消息构建高级配置和电源管理接口ACPI数据表,所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表;
指令发送单元503,用于向所述第二操作系统发送处理器之间中断IPI指令,使得所述第二操作系统根据所述IPI指令,通过IPI事件模拟生成系统控制中断SCI下半部事件,并使得所述第二操作系统通过读取所述ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务。
具体的,所述数据表构建单元502用于:
构建数据结构,并将与所述第二操作系统的内存资源变更相关的硬件信息填充到指定的物理地址,所述数据结构包括多个ACPI数据表之间的数据关联关系,所述ACPI数据表包括:根系统描述表RSDT,固定ACPI描述表FADT以及可区分系统描述表DSDT。
下面对本发明实施例中各个单元的操作进行描述,包括:
指示获取单元501获取内存资源变更的指示消息,所述指示消息用于指示第二操作系统的内存资源发生变更;所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统。
在实际应用中,当检测到物理内存发生了变动(如,发生了物理内存的热插拔事件),系统就会生成内存资源变更的指示消息;或者,用户在第一操作系统或第二操作系统进行操作时,指示需要对第二操作系统的内存资源进行分配,系统也就会生成内存资源变更的指示消息;可以理解的是,在实际应用中,内存资源变更的指示消息还可以有其它的触发生成方法,此处具体不作限定。
示例性的,所述第一操作系统可以为多内核多操作系统中的Heavy OS,所述第二操作系统可以为多内核多操作系统中的Light OS。
数据表构建单元502根据所述指示消息构建高级配置和电源管理接口(ACPI,Advanced Configuration and Power Management Interface)数据表(Table),所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表。第一操作系统在构建了ACPI数据表之后,将所述ACPI数据表写入固定的物理内存中。
在现有技术中,ACPI是基本输入输出系统(BIOS,Basic Input Output System)和系统硬件之间的工作接口,用于实现系统电源管理,设备电源管理,处理器电源管理,设备和处理器性能管理等功能。
在本发明实施例中,ACPI数据表是BIOS提供给操作系统定向电源管理(OSPM,OS-directed Power Management)的硬件配置数据,包括系统硬件的电源管理和配置管理,具体的,所述ACPI数据表包含有多个,如,根系统描述表(RSDT,Root System DescriptionTable),固定ACPI描述表(FADT,Fixed ACPI Description Table)以及可区分系统描述表(DSDT,Differentiated System Description Table)。其中,ACPI数据表中的根系统描述指针(RSDP,Root System Description Pointer)位于F段,用于搜索以及定位ACPI数据表。
其中,OSPM支持ACPI的一个部分,第一操作系统可以从驱动程序的角度控制ACPI子模块,同时支持ACPI包括系统控制中断(SCI,System Control Interrupt),设备事件,系统事件模式,这些事件模式可以充分支持Hot-plug方式。
其中,SCI是一种源自ACPI兼容芯片的系统中断,操作系统通过映射不同的ACPI中断向量以便共享此中断,当底层硬件产生SCI事件的时候(例如设备插入事件引发中断),根据通知OSPM层处理相对应的ACPI事件,OSPM层会调用预先安装的中断句柄。
示例性的,在实际应用中,第一操作系统在构建ACPI数据表时,可以先构建数据结构,并将与所述第二操作系统的内存资源变更相关的硬件信息填充到指定的物理地址(如,将RSDP放于F段);其中,所述数据结构包括多个ACPI数据表之间的数据关联关系。
指令发送单元503向所述第二操作系统发送处理器之间中断(IPI,Inter-Processor Interrupt)指令,使得所述第二操作系统根据所述IPI指令,通过IPI事件模拟生成SCI下半部事件,并使得所述第二操作系统通过读取所述ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务。
第二操作系统收到所述IPI指令之后,根据所述IPI指令IPI事件模拟生成SCI下半部事件。其中,IPI为一种特别的中断。在对称多处理器的环境下,它可以被任意一个处理器用来对另一个处理器产生中断。
下面对实现上述内存变更处理方法的操作系统进行描述,请参阅图6,本发明实施例中操作系统的另一个实施例,作为第二操作系统,与第一操作系统机型交互,包括:
指令接收单元601,用于接收第一操作系统发送的IPI指令,所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统;所述IPI指令为所述第一操作系统根据所述第二操作系统发生内存变更而生成的中断指示;
中段模拟单元602,用于根据所述IPI指令生成系统控制中断SCI下半部事件,所述SCI下半部事件是通过IPI事件模拟的;
中段执行单元603,用于通过读取ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务,所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表。
具体的,所述中段模拟单元602具体用于:
根据所述IPI指令在可区分系统描述表DSDT写入内存变更控制方法,使得所述第一操作系统通过ACPI数据表之间的数据关联关系,运行所述内存变更控制方法,所述DSDT为所述ACPI数据表中所述第二操作系统可以进行信息读写的数据表;
所述内存变更控制方法包括:读取所述DSDT中需要分配的物理内存信息,向所述第二操作系统的驱动层发出通告消息,所述通告消息用于指示当前需要进行内存变更操作操作,所述驱动层的操作系统能源管理OSPM接口读取所述物理内存信息,并执行内存变更的相关代码。
具体的,所述中段执行单元603具体用于:
接收所述第一操作系统发送的通告消息,所述通告消息用于指示当前需要进行内存变更操作操作;
根据所述通告消息调用所述OSPM接口读取DSDT中的物理内存信息,并执行内存变更的相关代码。
下面对本发明实施例中各个单元的操作进行描述,包括:
指令接收单元601接收第一操作系统发送的IPI指令,所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统;所述IPI指令为所述第一操作系统根据所述第二操作系统发生内存变更而生成的中断指示。
中段模拟单元602根据所述IPI指令生成系统控制中断SCI下半部事件,所述SCI下半部事件是通过IPI事件模拟的。
其中,SCI是一种源自ACPI兼容芯片的系统中断,操作系统通过映射不同的ACPI中断向量以便共享此中断,当底层硬件产生SCI事件的时候(例如设备插入事件引发中断),根据通知OSPM层处理相对应的ACPI事件,OSPM层会调用预先安装的中断句柄。
示例性的,请参阅图4,通过IPI事件模拟SCI下半部事件具体可以为:第二操作系统根据所述IPI指令在可区分系统描述表DSDT写入内存变更控制方法,使得所述第一操作系统通过ACPI数据表之间的数据关联关系,运行所述内存变更控制方法,所述DSDT为所述ACPI数据表中所述第二操作系统可以进行信息读写的数据表。
其中,所述内存变更控制方法包括:读取所述DSDT中需要分配的物理内存信息,向所述第二操作系统的驱动层发出通告消息,所述通告消息用于指示当前需要进行内存变更操作操作,所述驱动层的操作系统能源管理OSPM接口读取所述物理内存信息,并执行内存变更的相关代码。所述内存变更控制方法具体可以为热插拔控制方法。所述内存变更的相关代码可以为操作系统中预置的。
中段执行单元603通过读取ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务,所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表。
具体的,运行所述SCI下半部事件可以包括:第二操作系统接收所述第一操作系统发送的通告消息,所述通告消息用于指示当前需要进行内存变更操作操作;第二操作系统根据所述通告消息调用所述OSPM接口读取DSDT中的物理内存信息,并执行内存变更的相关代码。
在本发明实施例中,可以由第一操作系统为第二操作系统准备内存变更物理阶段的数据结构和ACPI数据表的内容,并用IPI中断模拟内存热插拔过程中的SCI中断。使得第二操作系统的内存资源发生变更时,,无需修改第二操作系统的内核代码,保持了操作系统的兼容性。
进一步的,在现有虚拟化内存变更方案中,也可以利用本发明实施例的内存变更处理方法来实现全虚拟化下的虚拟机内存热插拔,不用修改虚拟机中的内核代码,能够实现更加逼真的内存热插拔。
请再参见图7,本发明实施例还提供了一种操作系统,作为第一操作系统,可包括:
输入装置710,输出装置720,存储器730和处理器740(操作系统中的处理器的数量可以为一个或多个,图7中以一个处理器为例)在本发明的一些实施例中,输入装置710,输出装置720,存储器730和处理器740可通过总线或其它方式连接,其中,图7中通过总线连接为例。
其中,所述输入装置710执行如下步骤:
获取内存资源变更的指示消息,所述指示消息用于指示第二操作系统的内存资源发生变更;所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统。
所述存储器730存储所述访存序列。
所述指示消息用于指示第二操作系统的内存资源发生变更;
所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表;
其中,所述输出装置720执行如下步骤:
向所述第二操作系统发送处理器之间中断IPI指令,使得所述第二操作系统根据所述IPI指令,通过IPI事件模拟生成系统控制中断SCI下半部事件,并使得所述第二操作系统通过读取所述ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务。
其中,所述处理器740执行如下步骤:
根据所述指示消息构建高级配置和电源管理接口ACPI数据表,所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表。
同再参见图7,本发明实施例还提供了一种操作系统,作为第二操作系统,可包括:
输入装置710,输出装置720,存储器730和处理器740(操作系统中的处理器的数量可以为一个或多个,图7中以一个处理器为例)在本发明的一些实施例中,输入装置710,输出装置720,存储器730和处理器740可通过总线或其它方式连接,其中,图7中通过总线连接为例。
其中,所述输入装置710执行如下步骤:
接收第一操作系统发送的IPI指令,所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统;所述IPI指令为所述第一操作系统根据所述第二操作系统发生内存变更而生成的中断指示;
其中,所述处理器740执行如下步骤:
根据所述IPI指令生成系统控制中断SCI下半部事件,所述SCI下半部事件是通过IPI事件模拟的;
通过读取ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种内存变更处理方法,其特征在于,包括:
第一操作系统获取内存资源变更的指示消息,所述指示消息用于指示第二操作系统的内存资源发生变更;所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统;
所述第一操作系统根据所述指示消息构建高级配置和电源管理接口ACPI数据表,所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表;
所述第一操作系统向所述第二操作系统发送处理器之间中断IPI指令,使得所述第二操作系统根据所述IPI指令,通过IPI事件模拟生成系统控制中断SCI下半部事件,并使得所述第二操作系统通过读取所述ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务。
2.根据所述权利要求1所述的方法,其特征在于,所述第一操作系统根据所述指示消息构建ACPI数据表,包括:
所述第一操作系统构建数据结构,并将与所述第二操作系统的内存资源变更相关的硬件信息填充到指定的物理地址,所述数据结构包括多个ACPI数据表之间的数据关联关系,所述ACPI数据表包括:根系统描述表RSDT,固定ACPI描述表FADT以及可区分系统描述表DSDT。
3.一种内存变更处理方法,其特征在于,包括:
第二操作系统接收第一操作系统发送的IPI指令,所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统;所述IPI指令为所述第一操作系统根据所述第二操作系统发生内存变更而生成的中断指示;
所述第二操作系统根据所述IPI指令生成系统控制中断SCI下半部事件,所述SCI下半部事件是通过IPI事件模拟的;
所述第二操作系统通过读取ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务,所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表。
4.根据所述权利要求3所述的方法,其特征在于,所述第二操作系统根据所述IPI指令生成SCI下半部事件,包括:
所述第二操作系统根据所述IPI指令在可区分系统描述表DSDT写入内存变更控制方法,使得所述第一操作系统通过ACPI数据表之间的数据关联关系,运行所述内存变更控制方法,所述DSDT为所述ACPI数据表中所述第二操作系统可以进行信息读写的数据表;
所述内存变更控制方法包括:读取所述DSDT中需要分配的物理内存信息,向所述第二操作系统的驱动层发出通告消息,所述通告消息用于指示当前需要进行内存变更操作,所述驱动层的操作系统能源管理OSPM接口读取所述物理内存信息,并执行内存变更的相关代码。
5.根据所述权利要求4所述的方法,其特征在于,所述第二操作系统通过读取所述ACPI数据表运行所述SCI下半部事件,包括:
所述第二操作系统接收所述第一操作系统发送的通告消息,所述通告消息用于指示当前需要进行内存变更操作;
所述第二操作系统根据所述通告消息调用所述OSPM接口读取DSDT中的物理内存信息,并执行内存变更的相关代码。
6.一种操作系统,其特征在于,作为第一操作系统,与第二操作系统机型交互,包括:
指示获取单元,用于获取内存资源变更的指示消息,所述指示消息用于指示第二操作系统的内存资源发生变更;所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统;
数据表构建单元,用于根据所述指示消息构建高级配置和电源管理接口ACPI数据表,所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表;
指令发送单元,用于向所述第二操作系统发送处理器之间中断IPI指令,使得所述第二操作系统根据所述IPI指令,通过IPI事件模拟生成系统控制中断SCI下半部事件,并使得所述第二操作系统通过读取所述ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务。
7.根据所述权利要求6所述的操作系统,其特征在于,所述数据表构建单元具体用于:
构建数据结构,并将与所述第二操作系统的内存资源变更相关的硬件信息填充到指定的物理地址,所述数据结构包括多个ACPI数据表之间的数据关联关系,所述ACPI数据表包括:根系统描述表RSDT,固定ACPI描述表FADT以及可区分系统描述表DSDT。
8.一种操作系统,其特征在于,作为第二操作系统,与第一操作系统机型交互,包括:
指令接收单元,用于接收第一操作系统发送的IPI指令,所述第一操作系统为具有物理资源管理能力的系统,所述第二操作系统为基于所述第一操作系统分配的系统资源创建的系统;所述IPI指令为所述第一操作系统根据所述第二操作系统发生内存变更而生成的中断指示;
中段模拟单元,用于根据所述IPI指令生成系统控制中断SCI下半部事件,所述SCI下半部事件是通过IPI事件模拟的;
中段执行单元,用于通过读取ACPI数据表运行所述SCI下半部事件,以完成因内存变更而产生的中断任务,所述ACPI数据表为所述第一操作系统在所述第一操作系统与所述第二操作系统的共享内存中,更新维护的所述第二操作系统进行内存变更所使用的数据表。
9.根据所述权利要求8所述的操作系统,其特征在于,所述中段模拟单元具体用于:
根据所述IPI指令在可区分系统描述表DSDT写入内存变更控制方法,使得所述第一操作系统通过ACPI数据表之间的数据关联关系,运行所述内存变更控制方法,所述DSDT为所述ACPI数据表中所述第二操作系统可以进行信息读写的数据表;
所述内存变更控制方法包括:读取所述DSDT中需要分配的物理内存信息,向所述第二操作系统的驱动层发出通告消息,所述通告消息用于指示当前需要进行内存变更操作,所述驱动层的操作系统能源管理OSPM接口读取所述物理内存信息,并执行内存变更的相关代码。
10.根据所述权利要求9所述的操作系统,其特征在于,所述中段执行单元具体用于:
接收所述第一操作系统发送的通告消息,所述通告消息用于指示当前需要进行内存变更操作;
根据所述通告消息调用所述OSPM接口读取DSDT中的物理内存信息,并执行内存变更的相关代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410306462.6A CN105335228B (zh) | 2014-06-30 | 2014-06-30 | 一种内存变更处理方法,及操作系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410306462.6A CN105335228B (zh) | 2014-06-30 | 2014-06-30 | 一种内存变更处理方法,及操作系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105335228A CN105335228A (zh) | 2016-02-17 |
CN105335228B true CN105335228B (zh) | 2018-12-07 |
Family
ID=55285784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410306462.6A Active CN105335228B (zh) | 2014-06-30 | 2014-06-30 | 一种内存变更处理方法,及操作系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105335228B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111198719A (zh) * | 2020-01-07 | 2020-05-26 | 天津飞腾信息技术有限公司 | Arm平台实现acpi的方法、装置、设备及存储介质 |
CN113360257B (zh) * | 2021-04-16 | 2022-12-20 | 山东英信计算机技术有限公司 | 一种基于bios的信息操作方法、装置、存储介质及设备 |
CN118118728B (zh) * | 2024-04-30 | 2024-07-05 | 四川天邑康和通信股份有限公司 | Iptv机顶盒的数据处理方法和装置、机顶盒及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101034380A (zh) * | 2007-04-19 | 2007-09-12 | 杭州华为三康技术有限公司 | 实现周边元件接口加速总线插卡热插拔的方法及装置 |
CN101203834A (zh) * | 2005-06-30 | 2008-06-18 | 英特尔公司 | 用于在虚拟机监视器和符合acpi的客户操作系统之间进行双向通信的方法、装置及系统 |
CN103477324A (zh) * | 2011-04-14 | 2013-12-25 | 超威半导体公司 | 逻辑核的动态映射 |
US8762999B2 (en) * | 2007-09-27 | 2014-06-24 | Oracle America, Inc. | Guest-initiated resource allocation request based on comparison of host hardware information and projected workload requirement |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7610481B2 (en) * | 2006-04-19 | 2009-10-27 | Intel Corporation | Method and apparatus to support independent systems in partitions of a processing system |
-
2014
- 2014-06-30 CN CN201410306462.6A patent/CN105335228B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101203834A (zh) * | 2005-06-30 | 2008-06-18 | 英特尔公司 | 用于在虚拟机监视器和符合acpi的客户操作系统之间进行双向通信的方法、装置及系统 |
CN101034380A (zh) * | 2007-04-19 | 2007-09-12 | 杭州华为三康技术有限公司 | 实现周边元件接口加速总线插卡热插拔的方法及装置 |
US8762999B2 (en) * | 2007-09-27 | 2014-06-24 | Oracle America, Inc. | Guest-initiated resource allocation request based on comparison of host hardware information and projected workload requirement |
CN103477324A (zh) * | 2011-04-14 | 2013-12-25 | 超威半导体公司 | 逻辑核的动态映射 |
Also Published As
Publication number | Publication date |
---|---|
CN105335228A (zh) | 2016-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Pahl | Containerization and the paas cloud | |
CN106445576B (zh) | 主机板及其计算机实现方法及非暂态计算机可读储存装置 | |
JP2021506044A5 (zh) | ||
US8627274B2 (en) | Software tool and method for generating a virtual appliance | |
US11080244B2 (en) | Inter-version mapping of distributed file systems | |
CN104516769B (zh) | 用于验证逻辑分区配置之间的切换的方法、介质及系统 | |
CN105830026A (zh) | 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 | |
CN113434261B (zh) | 异构计算设备虚拟化方法及系统 | |
US10853259B2 (en) | Exitless extended page table switching for nested hypervisors | |
US10318460B2 (en) | UMA-aware root bus selection | |
CN103440111B (zh) | 虚拟机磁盘空间的扩展方法、宿主机和平台 | |
CN108139937B (zh) | 多根i/o虚拟化系统 | |
CN105335228B (zh) | 一种内存变更处理方法,及操作系统 | |
CN115617364B (zh) | Gpu虚拟化部署方法、系统、计算机设备和存储介质 | |
CN115617456A (zh) | 混合运行虚拟机与容器的方法、装置、电子设备和可读存储介质 | |
CN103530254B (zh) | 多节点系统的外部设备互联枚举方法和装置 | |
CN108459906B (zh) | 一种vcpu线程的调度方法及装置 | |
CN104699538A (zh) | 用于多处理系统中的工作负载请求分派的方法和系统 | |
JP2012198698A (ja) | 仮想計算機制御プログラム、計算機、及び仮想計算機制御方法 | |
CN103631648A (zh) | 一种任务处理方法及系统 | |
CN115080242A (zh) | 一种pci设备资源统一调度的方法、装置及介质 | |
CN102959513A (zh) | 虚拟机器合并方法和系统 | |
CN109962788A (zh) | 多控制器调度方法、装置和系统及计算机可读存储介质 | |
CN106034142B (zh) | 一种信息处理方法及服务器 | |
Liberman García | The evolution of the Cloud: the work, progress and outlook of cloud infrastructure |
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 |