首页> 中国专利> 一种Windows系统中虚拟内存压缩方法和装置

一种Windows系统中虚拟内存压缩方法和装置

摘要

本发明公开了一种Windows系统中虚拟内存压缩方法和装置,该方法包括:拦截系统进程中的常驻线程通过虚拟内存向虚拟内存文件写数据的行为,将数据进行压缩,存储在虚拟内存中;拦截常驻线程通过虚拟内存向虚拟内存文件读数据的行为,将存储在虚拟内存中的数据进行解压缩,返回给系统进程。根据本发明的Windows系统中虚拟内存压缩方法和装置,可以在当前进程都在工作的情况下,所占用的虚拟内存过大时,避免对磁盘的频繁读写造成的时间浪费,进而避免了系统运行缓慢的问题。

著录项

  • 公开/公告号CN103617133A

    专利类型发明专利

  • 公开/公告日2014-03-05

    原文格式PDF

  • 申请/专利号CN201310656949.2

  • 发明设计人 李常坤;

    申请日2013-12-06

  • 分类号G06F12/08(20060101);

  • 代理机构11276 北京市浩天知识产权代理事务所;

  • 代理人宋菲;刘云贵

  • 地址 100088 北京市西城区新街口外大街28号D座112室(德胜园区)

  • 入库时间 2024-02-19 22:14:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-12

    专利权的转移 IPC(主分类):G06F12/02 专利号:ZL2013106569492 登记生效日:20220801 变更事项:专利权人 变更前权利人:北京奇虎科技有限公司 变更后权利人:北京奇虎科技有限公司 变更事项:地址 变更前权利人:100088 北京市西城区新街口外大街28号D座112室(德胜园区) 变更后权利人:100015 北京市朝阳区酒仙桥路6号院2号楼1至19层104号内8层801 变更事项:专利权人 变更前权利人:奇智软件(北京)有限公司 变更后权利人:

    专利申请权、专利权的转移

  • 2017-08-25

    授权

    授权

  • 2014-04-02

    实质审查的生效 IPC(主分类):G06F12/08 申请日:20131206

    实质审查的生效

  • 2014-03-05

    公开

    公开

说明书

技术领域

本发明涉及计算机系统优化技术领域,具体涉及一种Windows系统中虚 拟内存压缩方法和装置。

背景技术

计算机开机时,需要从磁盘上读取文件来启动计算机系统。很多场景下, 文件不是保存在磁盘连续的簇中,而是被分散保存到整个磁盘的不同位置, 即在磁盘上产生了文件碎片。例如,当存储文件的磁盘空间不充足时,在磁 盘上删除文件或添加文件时会产生大量的文件碎片,对文件的删改越频繁, 文件碎片的现象越严重。由于在读取磁盘上不同位置的文件时,磁盘触头需 要移动至不同的位置,文件碎片会使磁盘触头来回频繁移动,导致文件读取 时间过长,因此,现有方案通过将一个文件的文件碎片填写至磁盘中连续的 空间中,来缩短开机过程中读取该文件的时间,以加快计算机系统的开机速 度。

而在计算机开机的过程中,计算机中所运行的程序均需经由内存执行, 若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。为解决该问题, Windows系统中运用了虚拟内存技术,即匀出一部分磁盘空间来充当内存使 用。当内存耗尽时,计算机就会自动调用磁盘来充当内存,以应对系统对虚 拟内存的占用量大于实际物理内存的情况。虚拟内存技术使得应用程序认为 它拥有连续的可用的内存(一个连续完整的地址空间)。

Windows系统中的虚拟内存技术的实现机制具体为:在系统盘下配置一 个虚拟内存文件pagefile.sys,即为虚拟内存保留的磁盘空间;当进程占用的 虚拟内存过大时,将当前进程暂时不需要的数据从虚拟内存中换入至虚拟内 存文件中;当进程读取已换入虚拟内存文件中的数据时,再将该数据从虚拟 内存文件中换入虚拟内存中。这种机制扩展了虚拟内存的空间,使虚拟内存 不但可以利用实际的物理内存存储数据,还可以利用磁盘中的一部分空间扩 展虚拟内存以存储数据。然而频繁的向磁盘读写数据会耗费大量时间,从而 造成了计算机系统运行缓慢的问题。

现有技术采用系统优化加速技术解决进程占用大量内存时,计算机系统 运行缓慢的问题。例如计算机提供的一些优化加速的功能,当用户选用优化 功能时,将当前无用的进程关闭并释放被关闭进程所占用的虚拟内存。但是, 现有技术无法解决在不关闭进程的情况下,所占用的虚拟内存过大所导致的 系统运行缓慢的问题。

发明内容

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分 地解决上述问题的Windows系统中虚拟内存压缩方法和装置。

根据本发明的一个方面,提供了一种Windows系统中虚拟内存压缩方法, 包括:拦截系统进程中的常驻线程通过虚拟内存向虚拟内存文件写数据的行 为,将数据进行压缩,存储在虚拟内存中;拦截常驻线程通过虚拟内存向虚 拟内存文件读数据的行为,将存储在虚拟内存中的数据进行解压缩,返回给 系统进程。

根据本发明的另一方面,提供了一种Windows系统中虚拟内存压缩装置, 包括:I/O拦截模块,适于拦截系统进程中的常驻线程通过虚拟内存向虚拟 内存文件写数据的行为,以及拦截常驻线程通过虚拟内存向虚拟内存文件读 数据的行为;内存压缩模块,适于在I/O拦截模块拦截常驻线程通过虚拟内 存向虚拟内存文件写数据的行为之后,将数据进行压缩,存储在虚拟内存中; 内存解压缩模块,适于在I/O拦截模块拦截常驻线程通过虚拟内存向虚拟内 存文件读数据的行为之后,将存储在虚拟内存中的数据进行解压缩,返回给 系统进程。

根据本发明的Windows系统中虚拟内存压缩方法和装置,拦截系统进程 中的常驻线程通过虚拟内存向虚拟内存文件写数据的行为,并对该数据压缩 后重新存回虚拟内存而不是磁盘中;之后,拦截常驻线程通过虚拟内存向虚 拟内存文件读取该数据的行为,对压缩存储至虚拟内存的数据解压后发送给 进程,可以在当前进程都在工作的情况下,所占用的虚拟内存过大时,避免 对磁盘的频繁读写造成的时间浪费,进而解决了系统运行缓慢的问题。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技 术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它 目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本 领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的, 而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示 相同的部件。在附图中:

图1示出了根据本发明一个实施例的Windows系统中虚拟内存压缩方法 的流程图;

图2示出了根据本发明另一个实施例的Windows系统中虚拟内存压缩方 法的流程图;

图3示出了本发明一个实施例提供的Windows系统中虚拟内存压缩装置 与虚拟内存、虚拟内存文件连接的结构框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示 了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不 应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地 理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

计算机开机过程是从计算机通电自检完成之后开始进行的,这一过程可 以细分为预引导、引导、载入内核、初始化内核和系统登录操作这五个阶段, 将计算机开机过程中执行预引导、引导、载入内核、初始化内核至系统登录 操作时从系统磁盘上读取的文件作为系统开机文件,记录读取该系统开机文 件的顺序作为获取到的读取顺序。在开机过程中需要读取的文件主要包括 Ntldr、Boot.ini、Ntdetect.com、Ntoskrnl.exe、Ntbootdd.sys以及Bootsect.dos 等文件,各个阶段的主要处理过程如下:

预引导阶段

计算机启动后,BIOS自检通过后,开始寻找引导设备,正常情况下需要 的引导的设备就是计算机硬盘。BIOS读取硬盘的第一个扇区的引导代码,即 主引导记录(Master Boot Record,MBR)到内存,然后将控制权转移到MBR 代码。MBR代码功能是寻找磁盘的引导分区(boot partition),其第一个扇 区为引导扇区(boot sector),该卷称为系统卷(system volume)。

引导阶段

引导扇区的代码能够解析系统卷的文件格式,并找到Ntldr,该程序会将 处理器由实模式(Real Mode)切换为32位平坦内存模式(32-bit Flat Memory  Mode)。Ntldr程序在完成了初始化工作之后会从硬盘上读取boot.ini文件, 根据该文件中的内容选择操作系统。在选择了需要载入的Windows操作系统 之后,Ntdetect.com将计算机中安装的所有硬件信息收集起来,并将该信息 交给Ntldr。

载入内核阶段

载入系统的内核文件Ntoskrnl.exe,但这里仅仅是载入,内核此时还不会 被初始化。随后载入硬件抽象层HAL.dll。加载SYSTEM注册表储巢文件 (%SystemRoot%\system32\Config\System)为注册表键值 (HKEY_LOCAL_MACHINE\SYSTEM),根据注册表中引导设备驱动列表 添加相应的文件系统驱动,以实现对各个分区、目录、文件的访问管理。

初始化内核阶段

内核初始化进程会加载(HKEY_LOCAL_MACHINE\SYSTEM\

CurrentControlSet\services)中记录的驱动,如磁盘管理过滤驱动、网络 驱动等。先加载注册为“Start”键值0(SERVICE_BOOT_START)的驱动然后 加载键值为1(SERVICE_SYSTEM_START)的驱动。首先扫描 (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGro  upOrder)中定义的组别加载顺序,按照组别依次加载已注册的驱动,已注册 驱动的组别会记录在注册表键值“Group”中。对相同组别的驱动,会根据 注册表键值“Tag”来决定加载顺序。GroupOrderList (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GroupOrder  List)中每个组的第一项都是Tag值的数值。接下来是要加载的Tag值的 数字顺序。组中的设备驱动程序首先按照其由GroupOrderList所定义的Tag 值进行加载。如果设备驱动程序没有Tag值,或者Tag值不在 GroupOrderList中,则这些设备驱动程序将在加载具有有效Tag值的设备驱 动程序之后进行加载。

系统登录阶段

在本阶段会话管理器启动本地安全性授权子系统。执行到这一步后,计 算机显示屏上会显示Windows系统的登录界面,与此同时,后台会加载一些 非关键的设备驱动。

通过上述五个阶段的操作,计算机开机过程执行完毕,从而获知了系统 开机时所有需要读取的系统开机文件以及这些系统开机文件的读取顺序。

图1示出了根据本发明一个实施例的Windows系统中虚拟内存压缩方法 的流程图,如图1所示,该方法包括如下步骤:

步骤S110,拦截系统进程中的常驻线程通过虚拟内存向虚拟内存文件写 数据的行为,将数据进行压缩,存储在虚拟内存中。

本发明实施例中,进程是指具有一定独立功能的程序关于某个数据集合 上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位;线程 是指进程的一个实体,是CPU调度和分派的基本单位;线程是比进程更小的 能独立运行的基本单位;线程自己基本上不拥有系统资源,只拥有一点在运 行中必不可少的资源,但是它可与同属一个进程的其他的线程共享进程所拥 有的全部资源。在系统进程里面会有一个常驻线程,当系统对虚拟内存的占 用量大于实际物理内存的时候,会将不常用的数据写入虚拟内存文件中。

虚拟内存文件即是指操作系统为虚拟内存保留的磁盘空间,例如 Windows系统中的pagefile.sys文件,pagefile.sys文件包含了Windows操作系 统中的系统设置和变量,用于运行操作系统的功能、常用的存储设备驱动程 序和其他核心的Windows功能。当系统占用的虚拟内存空间大于实际物理内 存时,Windows系统会唤醒用于换页的常驻线程,常驻线程会执行使虚拟内 存向虚拟内存文件写数据的行为,即发送将当前进程的相关数据从虚拟内存 中写入至虚拟内存文件中的请求,通过pagefile.sys文件提供更大的虚拟内存 空间,从而满足进程对更大内存的需求;本步骤对该请求进行拦截,将请求 写入虚拟内存文件中的数据进行压缩,然后将该数据存储回虚拟内存中,而 并非如现有技术那样将数据写入磁盘。

步骤S120,拦截常驻线程通过虚拟内存向虚拟内存文件读数据的行为, 将存储在虚拟内存中的数据进行解压缩,返回给系统进程。

当进程需要读取存储在虚拟内存中的已压缩的数据时,由于进程并不知 晓该数据没有被写入磁盘中,仍会让常驻线程执行通过虚拟内存向虚拟内存 文件读该数据的行为,即发送从虚拟内存文件中读取该进程需要使用的数据 的请求;本步骤对该请求进行拦截,将该进程请求读取的且已经压缩至虚拟 内存的数据进行解压,并返回给进程。

根据本发明上述实施例提供的方法,拦截系统进程中的常驻线程通过虚 拟内存向虚拟内存文件写数据的行为,并对该数据压缩后重新存回虚拟内存 而不是磁盘中;之后,拦截常驻线程通过虚拟内存向虚拟内存文件读取该数 据的行为,对压缩存储至虚拟内存的数据解压后发送给进程,可以在当前进 程都在工作的情况下,所占用的虚拟内存过大时,避免对磁盘的频繁读写造 成的时间浪费,进而解决了系统运行缓慢的问题。进一步解决了磁盘触头在 磁道中频繁切换来回往复移动造成的文件读取时间过长的问题,能够显著提 高计算机的开机速度,更加有效地实现计算机开机加速的目的。

本发明实施例中能够应用于NTFS文件系统中,则系统开机文件为NTFS 系统下计算机开机时需要读取的文件。NTFS文件系统为Microsoft的 Windows系列操作系统提供文件系统。NTFS对传统的文件分配表(FAT, File Allocation Table)系统和高性能文件系统(HPFS,High-Performance File  System)作了若干改进,例如,支持元数据,并且使用了高级数据结构,以 便于改善性能、可靠性和磁盘空间利用率,并提供了若干附加扩展功能,如 访问控制列表和文件系统日志。NTFS的特点包括支持2TB大小的分区、可 恢复的文件系统、支持文件夹压缩以及有效管理磁盘空间等等。

图2示出了根据本发明另一个实施例的Windows系统中虚拟内存压缩方 法的流程图,如图2所示,该方法包括如下步骤:

步骤S210,利用Windows系统提供的文件过滤功能,拦截系统进程中 的常驻线程通过虚拟内存向虚拟内存文件写数据的行为。

当虚拟内存向虚拟内存文件(pagefile.sys)写数据时,即向磁盘写数据 时,利用Windows系统提供的文件过滤功能,对向pagefile.sys文件写数据的 行为进行拦截。具体地,本发明通过开发文件过滤驱动实现该拦截功能。文 件过滤驱动是一种Windows系统内核模式的驱动,它依靠拦截发往已存在的 内核模式目标驱动的I/O请求来提供新的附加功能,而不会使底层驱动或用 户程序做任何改变。文件过滤驱动拦截向pagefile.sys文件写数据的请求并获 取请求向pagefile.sys文件写入的数据。文件过滤驱动不同于内存换页。内存 换页属于内存管理,需要知道源程序才能进行。而文件过滤驱动提供是 Windows系统的辅助功能,文件过滤驱动能够在不知道源程序的情况下拦截 虚拟内存向虚拟内存文件写数据的行为。

步骤S220,计算数据的压缩比,该步骤为本实施例的可选步骤。

压缩比指压缩前与压缩后的文件所占的磁盘空间比值。数据的压缩比高, 说明数据的冗余度高,即数据的重复率高,适合压缩。本实施例对请求向 pagefile.sys文件写入的数据进行压缩比计算,获取计算结果。根据计算结果, 优先选择压缩比高的数据进行后续压缩处理。一种可选的实施方式是,预先 设定一阈值,选择压缩比高于或等于该设定阈值的数据进行后续压缩处理; 对于压缩比低于该设定阈值的数据,可以依据现有的方法将其写入 pagefile.sys文件中,数据的压缩比低,说明数据的冗余度低,即数据的重复 率低,不适合压缩,将不适合压缩的数据直接写入虚拟内存文件,避免了压 缩效率低下的问题。这里的设定阈值可以设置为96%,但不以此为限。

本发明实施例也不仅限于上述方式,也可以采用其他方式选择数据进行 后续的压缩处理,其选择依据除了根据压缩比之外,也可以考虑其它因素。

步骤S230,利用LZO系列压缩算法将压缩比高于或等于设定阈值的数 据进行压缩,存储在虚拟内存中。

LZO(Lempel-Ziv-Oberhumer)系列压缩算法是一种数据压缩无损算法, 通过软件工具lzop实现。LZO系列压缩算法能够将数据块压缩成匹配数据 (滑动字典)和非匹配文字的序列。而且LZO对于较长的匹配数据以及较 长的非匹配文字序列有专门的处理,这样对于高度冗余的数据能够取得很好 的效果,并且对于不可压缩的数据也能得到可以接受的效果。LZO系列压缩 算法解压简单、压缩/解压速度非常快、仅需占用64k虚拟内存。因此使用 LZO系列压缩算法对数据进行压缩,对于Windows系统占用虚拟内存的空间 大于实际物理内存的情况,能够进一步减少虚拟内存的占用,提升系统整体 的运行速度。本发明实施例也不仅限于使用LZO系列压缩算法,也可以使用 其它数据压缩无损算法。

步骤S240,利用Windows系统提供的文件过滤功能,拦截常驻线程通 过虚拟内存向虚拟内存文件读数据的行为。

当进程需要读取已经通过步骤S230进行压缩并存回虚拟内存的数据时, 系统根据原有的虚拟内存扩展机制,仍然认为该数据存储于pagefile.sys文件 中,系统会向pagefile.sys文件请求读取该进程所需数据。此时,通过Windows 系统提供的文件过滤功能对向pagefile.sys文件读取数据的请求进行拦截。具 体地如步骤S210所述的,是由文件过滤驱动在不知道源程序的情况下拦截 常驻线程通过虚拟内存向虚拟内存文件读数据的行为。

步骤S250,将存储在虚拟内存中的数据进行解压缩,返回给进程。

在拦截向pagefile.sys文件请求读取该进程所需数据的行为后,从虚拟内 存中读取该数据,对数据进行解压缩处理,这里的解压缩方法与步骤230所 使用的压缩方法是相对应的。解压缩后将数据返回给请求的进程。

通过本实施例上述处理步骤,可以在不知道源代码的情况下,对向虚拟 内存文件读写数据的行为进行拦截。此外,一方面提前对数据是否适合压缩 进行判断,对不适合压缩的数据直接存入虚拟内存文件,另一方面采用对虚 拟内存要求小、压缩效率高的LZO系列压缩算法进行压缩,能够在不关闭进 程的前提下,进一步节约虚拟内存可用空间、提升系统运行速度。

进一步的,在上述实施例中,如果在步骤S230之后一直到进程关闭, 进程都没有发送读取已压缩存储在虚拟内存中的数据的请求,在这种情况下 数据存储在虚拟内存中占用虚拟内存的空间,使其它数据得不到及时处理。 为了解决该问题,本发明实施例所采用的一种可选的方法是:利用钩子函数 钩取Windows系统的内存释放函数;在钩取到内存释放函数之后,清理存储 在虚拟内存中的数据。

内存释放函数具体指Windows系统在进程关闭时所调用的函数,如 MiReleasePageFileSpace函数。在Windows系统原有的虚拟内存扩展机制下 应用本发明的情况下,当进程关闭时,Windows系统会调用内存释放函数。 本发明实施例通过钩子函数(hook函数)钩取该内存释放函数,作为系统关 闭进程的通知消息,利用Windows系统自带的功能检测出占用虚拟内存空间 的进程是否工作。在钩取到内存释放函数之后,清理存储在虚拟内存中的数 据,以完成数据清理。

可选地,本发明实施例提供的方法也可以定时清理存储在虚拟内存中的 超过一定时间没有被读取的数据,而不是等到进程关闭后再清理。

根据本发明上述实施例提供的方法,利用Windows系统本身的功能完成 对虚拟内存文件读写数据行为的拦截、以及对虚拟内存中数据的释放,对现 有系统改动小,实现方便。利用文件过滤功能能够在不知道源代码的情况下 完成对虚拟内存文件读写数据行为的拦截。利用LZO系列压缩算法进行压缩 能够进一步提高压缩效率,提高系统的运行速度。利用内存释放函数能够实 时将没用的虚拟内存释放,进一步提高系统运行速度。

图3示出了本发明一个实施例提供的Windows系统中虚拟内存压缩装置 300与虚拟内存370、虚拟内存文件380连接的结构框图,如图3所示,该装 置300包括:I/O拦截模块310、内存压缩模块320以及内存解压缩模块330。

I/O拦截模块310适于拦截系统进程中的常驻线程通过虚拟内存370向虚 拟内存文件380写数据的行为,以及拦截常驻线程通过虚拟内存370向虚拟 内存文件380读数据的行为。

具体地,I/O拦截模块310利用Windows系统提供的文件过滤功能,拦 截常驻线程通过虚拟内存370向虚拟内存文件写数据的行为,并且利用 Windows系统提供的文件过滤功能,拦截常驻线程通过虚拟内存370向虚拟 内存文件读数据的行为。以pagefile.sys文件为例,当I/O拦截模块310拦截 到向pagefile.sys文件写数据的请求时,I/O拦截模块310向内存压缩模块320 发送将数据压缩的请求。当I/O拦截模块310拦截到向pagefile.sys文件读数 据的请求时,I/O拦截模块310向内存解压缩模块330发送将数据解压的请 求。

具体地,I/O拦截模块310可以为开发的文件过滤驱动。文件过滤驱动是 一种Windows系统内核模式的驱动,它依靠拦截发往已存在的内核模式目标 驱动的I/O请求来提供新的附加功能,而不会使底层驱动或用户程序做任何 改变。文件过滤驱动拦截向pagefile.sys文件读写数据的请求。文件过滤驱动 不同于内存换页。内存换页属于内存管理,需要知道源程序才能进行。而文 件过滤驱动提供是Windows系统的辅助功能,文件过滤驱动能够在不知道源 程序的情况下拦截向pagefile.sys文件读写数据的请求。

内存压缩模块320适于在I/O拦截模块310拦截常驻线程通过虚拟内存 370向虚拟内存文件380写数据的行为之后,将数据进行压缩,存储在虚拟 内存370中。

具体地,内存压缩模块320利用LZO系列压缩算法将数据进行压缩。内 存压缩模块320根据I/O拦截模块310发送的将数据压缩的请求,将数据进 行压缩,存储在虚拟内存370中。

内存解压缩模块330适于在I/O拦截模块310拦截常驻线程通过虚拟内 存370向虚拟内存文件380读数据的行为之后,将存储在虚拟内存370中的 数据进行解压缩,返回给进程。

具体地,内存解压缩模块330根据I/O拦截模块310发送的将数据解压 的请求,将存储在虚拟内存中的数据进行解压缩,返回给进程。

可选地,本发明的装置还包括计算模块350和写入模块360。

计算模块350适于计算数据的压缩比。压缩比指压缩前与压缩后的文件 所占的磁盘空间比值。数据的压缩比高,说明数据的冗余度高,即数据的重 复率高,适合压缩。计算模块350对请求向pagefile.sys文件写入的数据进行 压缩比计算,获取计算结果。内存压缩模块320根据计算结果,优先选择压 缩比高的数据进行后续压缩处理。一种可选的实施方式是,预先设定一阈值, 内存压缩模块320适于将压缩比高于或等于设定阈值的数据进行压缩。写入 模块360适于将压缩比低于设定阈值的数据写入虚拟内存文件380中;数据 的压缩比低,说明数据的冗余度低,即数据的重复率低,不适合压缩,将不 适合压缩的数据直接写入虚拟内存文件,避免了压缩效率低下的问题。

可选地,本发明的装置还包括内存管理模块340,适于利用钩子函数钩 取Windows系统的内存释放函数;在钩取到内存释放函数之后,清理存储在 虚拟内存370中的数据。内存释放函数具体指Windows系统在进程关闭时所 调用的函数,如MiReleasePageFileSpace函数。在Windows系统原有的虚拟 内存扩展机制下应用本发明的情况下,当进程关闭时,Windows系统会调用 内存释放函数。内存管理模块340通过钩子函数(hook函数)钩取该内存释 放函数,作为系统关闭进程的通知消息,利用Windows系统自带的功能检测 出占用虚拟内存空间的进程是否工作。内存管理模块340在钩取到内存释放 函数之后,清理存储在虚拟内存中的数据,以完成数据清理。

可选地,内存管理模块340也可以定时清理存储在虚拟内存中的超过一 定时间没有被读取的数据,而不是等到进程关闭后再清理。

根据本发明实施例提供的装置,可以在当前进程都在工作的情况下,所 占用的虚拟内存过大时,避免对磁盘的频繁读写造成的时间浪费,进而解决 了系统运行缓慢的问题。此外,利用Windows系统本身的功能完成对虚拟内 存文件读写数据行为的拦截、以及对虚拟内存中数据的释放,对现有系统改 动小,实现方便。利用文件过滤功能能够在不知道源代码的情况下完成对虚 拟内存文件读写数据行为的拦截。利用LZO系列压缩算法进行压缩能够进一 步提高压缩效率,提高系统的运行速度。利用内存释放函数能够实时将没用 的虚拟内存释放,进一步提高系统运行速度。提前对数据是否适合压缩进行 判断,对不适合压缩的数据直接存入虚拟内存文件,也能够进一步提高系统 运行速度。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固 有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述, 构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定 编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容, 并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本 发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未 详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个 或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时 被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开 的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求 中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映 的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循 具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利 要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自 适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以 把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可 以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者 单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴 随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或 者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴 随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相 似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其 它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组 合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权 利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使 用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理 器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当 理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据 本发明实施例的Windows系统中虚拟内存压缩装置中的一些或者全部部件 的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一 部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。 这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个 或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载 体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制, 并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实 施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要 求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于 元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以 借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在 列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个 硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。 可将这些单词解释为名称。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号