一种虚拟资源分配方法与流程

文档序号:12363179阅读:440来源:国知局

本发明涉及系统资源分配技术领域,具体涉及一种虚拟资源分配方法。



背景技术:

系统管理员主要分为网络系统管理员和信息系统管理员。网络系统管理员主要负责整个网络的网络设备和服务器系统的设计、安装、配置、管理和维护工作,为内部网的安全运行做技术保障。服务器是网络应用系统的核心,由系统管理员专门负责管理;信息系统管理员则负责具体信息系统日常管理和维护,具有信息系统的最高管理权限。

一般系统管理员在分配用户资源时会采取集中分配、分段回收的方式,故在系统初始化时,会集中申请并初始化大量内存,造成系统启动速度过慢。此种分配方式优点是资源集中分配初始化,易于管理。缺点是一次性过多占用系统内存,资源利用率不高,增加了系统负担。

在C语言中,内存管理的问题一直是开发人员最头疼的问题。对于小型程序而言,少许的内存问题,比如内存泄露可能还能忍受,但是对于Apache这种大负载量的服务器而言,内存的问题变得尤其重要,因为丝毫的内存泄露以及频繁的内存分配都可能导致服务器的效率下降甚至崩溃。

通常情况下,内存的分配和释放通常都是mallloc和free显式进行的。这样做显得单调无味,同时也可能充满各种令人厌恶的问题。对同一块内存的多次释放通常会导致页面错误,而一直不释放又导致内存泄露,并且使得服务器性能大大下降。

为了在大而且复杂的Apache中避免内在的内存管理问题,Apache的开发者创建了一套基于池概念的内存管理方案,最后这套方法移到APR中成为通用的内存管理方案。

在这套方案中,核心概念是池的概念。Apache中的内存分配的基本结构都是资源池,包括线程池,套接字池等等。内存池通常是一块很大的内存空间,一次性被分配成功,然后需要的时候直接去池中取,而不需要重新分配,这样避免的频繁的malloc操作,而且另一方面,即时内存的使用者忘记释放内存或者根本就不想分配,那么这些内存也不会丢失,它们仍然保存在内存池中,当内存池被销毁的时候这些内存将自动的被销毁。

由于Apache中的大部分资源的分配都是从内存池中分配的,因此对于大部分的Apache函数,如果其内部需要进行资源分配,那么它的函数参数中总是会带有一个内存池参数,该内存池参数指明分配内存来自的内存池。

用于Linux进程通信共享内存。共享内存函数由shmget、shmat、shmdt、shmctl四个函数组成。shmget得到一个共享内存标识符或创建一个共享内存对象,shmat把共享内存区对象映射到调用进程的地址空间。



技术实现要素:

本发明要解决的技术问题是:本发明针对以上问题,提供一种虚拟资源分配方法,以共享内存为基础的新的虚拟资源分配方式,它具有充分利用有效空间,按需分配的优点。

本发明所采用的技术方案为:

一种虚拟资源分配方法,所述方法对虚拟资源的分配采用按需分配,在系统初始化时不会为所有用户分配足够资源,而是在创建用户或者系统在访问该部分资源时,先检测该内存,检测与该内存相关联的映射文件是否存在,如果存在则继续访问,反之,为该用户申请空间资源并做初始化,然后再进行资源相关操作。

系统管理员通过所述方法隔离各个用户,使各用户成为相互独立个体。

所述方法采用apache内存池技术实现,实现过程如下:

内存初始化;

添加用户节点;

访问资源前检测共享内存映射文件存在与否,如存在则进行相应处理;

反之,则通过shmget函数获取共享内存标识符即映射文件;

然后通过shmat函数调用进程地址空间并做资源的初始化处理;

最后再进行资源的读写操作。

本发明的有益效果为:

本发明方法具有有效提高资源利用率,访问速度快,同时避免了内存泄漏的特点。

附图说明

图1为本发明方法流程图。

具体实施方式

下面结合附图,根据具体实施方式对本发明进一步说明:

实施例1:

一种虚拟资源分配方法,所述方法对虚拟资源的分配采用按需分配,在系统初始化时不会为所有用户分配足够资源,而是在创建用户或者系统在访问该部分资源时,先检测该内存,检测与该内存相关联的映射文件是否存在,如果存在则继续访问,反之,为该用户申请空间资源并做初始化,然后再进行资源相关操作。

实施例2

在实施例1的基础上,本实施例系统管理员通过所述方法隔离各个用户,使各用户成为相互独立个体。

实施例3

如图1所示,在实施例1或2的基础上,本实施例所述方法采用apache内存池技术实现,实现过程如下:

内存初始化;

添加用户节点;

访问资源前检测共享内存映射文件存在与否,如存在则进行相应处理;

反之,则通过shmget函数获取共享内存标识符即映射文件;

然后通过shmat函数调用进程地址空间并做资源的初始化处理;

最后再进行资源的读写操作。

实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1