发明内容
为解决上述问题,本发明提供了一种虚拟机内存映射方法及系统,能够很好的满足不同应用多样化的需求;大块内存映射时通过物理空间借用技术及协同使用大页技术,降低了后续内存访问时pagefault(页异常)的次数及TLBfootprint(快表项占用数目),效率极高;已映射的虚拟机内存页释放时,能及时地通知给特权机中的程序,以避免访问过时的数据。
为实现上述发明目的,本发明提供一种虚拟机内存映射方法,该方法包括:
步骤1,根据应用层映射请求选择内存映射方式,当是小页内存映射需求时调用小页映射方式,执行步骤2,当是大页面内存映射需求时调用大页映射方式,执行步骤3;
步骤2,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定,直接读写所映射的虚拟机的对应内存,执行步骤4;
步骤3,所述监控虚拟机对物理内存中未使用的物理内存进行处理后,将其虚拟地址空间分解为相应的多个页组合的物理页,获取待映射虚拟机的待映射机器页,判断所述待映射机器页是否与所述监控虚拟机的多个页组合的物理页中的任意物理页大小相同,若相同,直接将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,否则继续分解所述多个页组合的的物理页,直至所述待映射的机器页与所述多个页组合的物理页中的任意物理页大小相同,然后将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,执行步骤4;
步骤4,映射结束后,将与所述待映射虚拟机的映射内存对应的所述监控虚拟机内存释放,设置所述监控虚拟机的机器页到物理页映射表,将相应项设为无效机器页。
进一步的,所述步骤2包括:
步骤21,在所述监控虚拟机内分配n页内存,并将其锁定,所述待映射虚拟机的待映射内存大小为n页;
步骤22,获取所述监控虚拟机的n页内存的物理地址,释放所述物理地址对应的机器页;
步骤23,获取所述待映射虚拟机的待映射机器页,将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理地址绑定,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页;
步骤24,通过vaddr直接读写所映射的虚拟机的对应内存,其中vaddr为所述监控虚拟机内存地址。
进一步的,所述步骤3还包括:
步骤31,在所述监控虚拟机内分配一段大小为n页的虚拟地址空间,所述待映射虚拟机的待映射内存大小为n页;
步骤32,将所述虚拟地址空间划分为1GB页、2MB页、4KB页的页组合,所述页组合的页是对齐的,1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐;
步骤33,然后将待映射虚拟机的待映射内存机器页与监控虚拟机的物理页绑定后,更新所述待映射虚拟机的物理页到机器页映射表,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页。
步骤34,通过vaddr读写所映射的虚拟机的对应内存。
进一步的,所述步骤4之后还包括:
步骤5,更改所述监控虚拟机的虚拟机监控器的缺页异常处理函数,当所述监控虚拟机再次访问已释放的虚拟机内存时,所述监控虚拟机收到通用保护错误,并在异常处理函数中解映射或重新映射虚拟机的相应内存。
进一步的,所述步骤3中监控虚拟机对物理内存中未使用的物理内存进行以下处理:
步骤301,将所述监控虚拟机内未使用的物理内存空间的起始地址按照1G对齐;
步骤302,创建三个位图,分别记录所述物理内存空间中1G页面,2M页面,4K页面的空闲信息,未使用记录为1,使用记录为0;
步骤303,将此空间分解为页数为1GB页、2MB页、4KB页的三个页组合,且页组合里的页必须是对齐的,并将所述三个位图中对应于所述页组合里相关页的相应位置记录为1;
步骤304,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定后,分配物理页时,先从对应的页位图中寻找空闲页,找不到时则其他位图中寻找空闲页,释放物理页时,检查与所述物理页在同一个大页中的的其它页是否空闲,若空闲则将释放后的物理页与所述其他页合并成一个大页,并更新相关位图。
为实现上述发明目的,本发明还提供一种虚拟机内存映射系统,该系统包括:
映射请求模块,根据应用层映射请求选择内存映射方式,当是小页内存映射需求时调用小页映射方式,执行小页面映射模块,当是大页面内存映射需求时调用大页映射方式,执行大页面映射模块;
小页面映射模块,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定,直接读写所映射的虚拟机的对应内存,执行映射处理模块;
大页面映射模块,所述监控虚拟机对物理内存中未使用的物理内存进行处理后,将其虚拟地址空间分解为相应的多个页组合的物理页,获取待映射虚拟机的待映射机器页,判断所述待映射机器页是否与所述监控虚拟机的多个页组合的物理页中的任意物理页大小相同,若相同,直接将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,否则继续分解所述多个页组合的的物理页,直至所述待映射的机器页与所述多个页组合的物理页中的任意物理页大小相同,然后将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,执行映射处理模块;
映射处理模块,映射结束后,将与所述待映射虚拟机的映射内存对应的所述监控虚拟机内存释放,设置所述监控虚拟机的机器页到物理页映射表,将相应项设为无效机器页。
进一步的,所述大页面映射模块包括:
第一分配模块,在所述监控虚拟机内分配n页内存,并将其锁定,所述待映射虚拟机的待映射内存大小为n页;
第一获取模块,获取所述监控虚拟机的n页内存的物理地址,释放所述物理地址对应的机器页;
第一处理模块,获取所述待映射虚拟机的待映射机器页,将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理地址绑定,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页;
第一读写模块,通过vaddr直接读写所映射的虚拟机的对应内存,其中vaddr为所述监控虚拟机内存地址。
进一步的,所述大页面映射模块还包括:
第二分配模块,在所述监控虚拟机内分配一段大小为n页的虚拟地址空间,所述待映射虚拟机的待映射内存大小为n页;
划分处理模块,将所述虚拟地址空间划分为1GB页、2MB页、4KB页的页组合,所述页组合的页是对齐的,1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐;
第二处理模块,然后将待映射虚拟机的待映射内存机器页与监控虚拟机的物理页绑定后,更新所述待映射虚拟机的物理页到机器页映射表,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页。
第二读写模块,通过vaddr读写所映射的虚拟机的对应内存。
进一步的,所述映射处理模块之后还包括:
更改处理模块,更改所述监控虚拟机的虚拟机监控器的缺页异常处理函数,当所述监控虚拟机再次访问已释放的虚拟机内存时,所述监控虚拟机收到通用保护错误,并在异常处理函数中解映射或重新映射虚拟机的相应内存。
进一步的,所述大页面映射模块中监控虚拟机对物理内存中未使用的物理内存进行以下处理:
将所述监控虚拟机内未使用的物理内存空间的起始地址按照1G对齐;
创建三个位图,分别记录所述物理内存空间中1G页面,2M页面,4K页面的空闲信息,未使用记录为1,使用记录为0;
将此空间分解为页数为1GB页、2MB页、4KB页的三个页组合,且页组合里的页必须是对齐的,并将所述三个位图中对应于所述页组合里相关页的相应位置记录为1;
将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定后,分配物理页时,先从对应的页位图中寻找空闲页,找不到时则其他位图中寻找空闲页,释放物理页时,检查与所述物理页在同一个大页中的的其它页是否空闲,若空闲则将释放后的物理页与所述其他页合并成一个大页,并更新相关位图。
本发明的有益效果在于,能够同时针对不同映射需求,并根据应用需求可选择性支持小页面及大页面内存映射的系统。在大数据映射时,其中的大页面内存映射方法可以一次性映射整个虚拟机的内存,不仅能够很好的满足特定应用的需求(如本地活体取证),降低了后续内存访问时pagefault(页异常)的次数及TLBfootprint(快表项占用数目),且相较于现有内存映射方法在效率上具有显著提高;已映射的虚拟机内存页释放时,能及时地通知给特权机中的程序,以避免访问过时的数据。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
具体实施方式
图1是本发明的虚拟机内存映射方法流程图。如图1所示,该方法包括:
步骤1,根据应用层映射请求选择内存映射方式,当是小页内存映射需求时调用小页映射方式,执行步骤2,当是大页面内存映射需求时调用大页映射方式,执行步骤3;
步骤2,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定,直接读写所映射的虚拟机的对应内存,执行步骤4;
步骤3,所述监控虚拟机对物理内存中未使用的物理内存进行处理后,将其虚拟地址空间分解为相应的多个页组合的物理页,获取待映射虚拟机的待映射机器页,判断所述待映射机器页是否与所述监控虚拟机的多个页组合的物理页中的任意物理页大小相同,若相同,直接将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,否则继续分解所述多个页组合的的物理页,直至所述待映射的机器页与所述多个页组合的物理页中的任意物理页大小相同,然后将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,执行步骤4;
步骤4,映射结束后,将与所述待映射虚拟机的映射内存对应的所述监控虚拟机内存释放,设置所述监控虚拟机的机器页到物理页映射表,将相应项设为无效机器页。
进一步的,所述步骤2包括:
步骤21,在所述监控虚拟机内分配n页内存,并将其锁定,所述待映射虚拟机的待映射内存大小为n页;
步骤22,获取所述监控虚拟机的n页内存的物理地址,释放所述物理地址对应的机器页;
步骤23,获取所述待映射虚拟机的待映射机器页,将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理地址绑定,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页;
步骤24,通过vaddr直接读写所映射的虚拟机的对应内存,其中vaddr为所述监控虚拟机内存地址。
进一步的,所述步骤3还包括:
步骤31,在所述监控虚拟机内分配一段大小为n页的虚拟地址空间,所述待映射虚拟机的待映射内存大小为n页;
步骤32,将所述虚拟地址空间划分为1GB页、2MB页、4KB页的页组合,所述页组合的页是对齐的,1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐;
步骤33,然后将待映射虚拟机的待映射内存机器页与监控虚拟机的物理页绑定后,更新所述待映射虚拟机的物理页到机器页映射表,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页。
步骤34,通过vaddr读写所映射的虚拟机的对应内存。
进一步的,所述步骤4之后还包括:
步骤5,更改所述监控虚拟机的虚拟机监控器的缺页异常处理函数,当所述监控虚拟机再次访问已释放的虚拟机内存时,所述监控虚拟机收到通用保护错误,并在异常处理函数中解映射或重新映射虚拟机的相应内存。
进一步的,所述步骤3中监控虚拟机对物理内存中未使用的物理内存进行以下处理:
步骤301,将所述监控虚拟机内未使用的物理内存空间的起始地址按照1G对齐;
步骤302,创建三个位图,分别记录所述物理内存空间中1G页面,2M页面,4K页面的空闲信息,未使用记录为1,使用记录为0;
步骤303,将此空间分解为页数为1GB页、2MB页、4KB页的三个页组合,且页组合里的页必须是对齐的,并将所述三个位图中对应于所述页组合里相关页的相应位置记录为1;
步骤304,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定后,分配物理页时,先从对应的页位图中寻找空闲页,找不到时则其他位图中寻找空闲页,释放物理页时,检查与所述物理页在同一个大页中的的其它页是否空闲,若空闲则将释放后的物理页与所述其他页合并成一个大页,并更新相关位图。
图2是本发明的虚拟机内存映射系统示意图。如图2所示,该系统包括:
映射请求模块100,根据应用层映射请求选择内存映射方式,当是小页内存映射需求时调用小页映射方式,执行小页面映射模块,当是大页面内存映射需求时调用大页映射方式,执行大页面映射模块;
小页面映射模块200,将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定,直接读写所映射的虚拟机的对应内存,执行映射处理模块;
大页面映射模块300,所述监控虚拟机对物理内存中未使用的物理内存进行处理后,将其虚拟地址空间分解为相应的多个页组合的物理页,获取待映射虚拟机的待映射机器页,判断所述待映射机器页是否与所述监控虚拟机的多个页组合的物理页中的任意物理页大小相同,若相同,直接将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,否则继续分解所述多个页组合的的物理页,直至所述待映射的机器页与所述多个页组合的物理页中的任意物理页大小相同,然后将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理页绑定,执行映射处理模块;
映射处理模块400,映射结束后,将与所述待映射虚拟机的映射内存对应的所述监控虚拟机内存释放,设置所述监控虚拟机的机器页到物理页映射表,将相应项设为无效机器页。
进一步的,所述大页面映射模块300包括:
第一分配模块,在所述监控虚拟机内分配n页内存,并将其锁定,所述待映射虚拟机的待映射内存大小为n页;
第一获取模块,获取所述监控虚拟机的n页内存的物理地址,释放所述物理地址对应的机器页;
第一处理模块,获取所述待映射虚拟机的待映射机器页,将所述待映射虚拟机的待映射机器页与所述监控虚拟机的物理地址绑定,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页;
第一读写模块,通过vaddr直接读写所映射的虚拟机的对应内存,其中vaddr为所述监控虚拟机内存地址。
进一步的,所述大页面映射模块300还包括:
第二分配模块,在所述监控虚拟机内分配一段大小为n页的虚拟地址空间,所述待映射虚拟机的待映射内存大小为n页;
划分处理模块,将所述虚拟地址空间划分为1GB页、2MB页、4KB页的页组合,所述页组合的页是对齐的,1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐;
第二处理模块,然后将待映射虚拟机的待映射内存机器页与监控虚拟机的物理页绑定后,更新所述待映射虚拟机的物理页到机器页映射表,并在所述待映射虚拟机的物理页到机器页映射表中标记被绑定的内存机器页为已被映射,同时更新所述监控虚拟机的机器页到物理页映射表,使得相应项记录监控虚拟机物理页。
第二读写模块,通过vaddr读写所映射的虚拟机的对应内存。
进一步的,所述映射处理模块400之后还包括:
更改处理模块500,更改所述监控虚拟机的虚拟机监控器的缺页异常处理函数,当所述监控虚拟机再次访问已释放的虚拟机内存时,所述监控虚拟机收到通用保护错误,并在异常处理函数中解映射或重新映射虚拟机的相应内存。
进一步的,所述大页面映射模块中监控虚拟机对物理内存中未使用的物理内存进行以下处理:
将所述监控虚拟机内未使用的物理内存空间的起始地址按照1G对齐;
创建三个位图,分别记录所述物理内存空间中1G页面,2M页面,4K页面的空闲信息,未使用记录为1,使用记录为0;
将此空间分解为页数为1GB页、2MB页、4KB页的三个页组合,且页组合里的页必须是对齐的,并将所述三个位图中对应于所述页组合里相关页的相应位置记录为1;
将待映射虚拟机的待映射机器页与监控虚拟机的物理页绑定后,分配物理页时,先从对应的页位图中寻找空闲页,找不到时则其他位图中寻找空闲页,释放物理页时,检查与所述物理页在同一个大页中的的其它页是否空闲,若空闲则将释放后的物理页与所述其他页合并成一个大页,并更新相关位图。
现在通过Xen平台使用windows2003操作系统作为特权虚拟机的内存映射为一个具体实施例对本发明作进一步描述。
具体来说,本发明是针对虚拟化平台下HVM(硬件辅助虚拟化)监控虚拟机内存映射方法,包括下列步骤:
A.若待映射的是小块的虚拟机内存,假设待映射内存的大小为n页,则执行以下步骤:
A1.在监控虚拟机内分配n页内存(假设这些内存的虚拟地址为vaddr),并锁定这些内存。
A2.获取这n页的物理地址,并释放这些物理地址所对应的机器内存页。
A3.获取待映射虚拟机待映射内存的机器页,之后将上一步的物理地址与这些机器页绑定。在待映射虚拟机的P2M(物理页到机器页映射)表中标记这些已经被映射页的类型为mapped(已被映射).同时更新M2P(机器页到物理页映射)表,使得相应项记录监控虚拟机物理页。
A5.若上述步骤成功,程序就可以通过vaddr直接读写所映射的虚拟机的对应内存。
B.若待映射的是大块或全部的虚拟机内存,假设待映射内存的大小为n页,则执行以下步骤:
B1.程序启动时探测监控虚拟机的物理内存范围,将未使用的物理内存空间用以下方法管理起来,以便后续分配和回收不同大小的物理内存页:
将此空间的起始地址按照1G对齐即将此地址和0xffffffffc0000000按位与,并记录为此空间的起始地址。
创建三个位图,分别记录此空间中1G页面,2M页面,4K页面的空闲(记录为1)或使用(记录为0)情况。
将此空间分解为页数最少的页组合(1GB页、2MB页、4KB页),而且页组合里的页必须是对齐的,即1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐。将三个位图中对应于页组合里相关页的相应位置为1。
分配物理页时,先从对应的页位图中寻找空闲页。若找不到则从稍大页的位图中寻找空闲页,并将其分解为512个小页。
释放物理页时,检查与此页在同一个大页中的的其它511个页是否空闲,若空闲则合并成一个大页,并更新相关位图。
B2.在监控虚拟机内分配一段大小为n页的虚拟地址空间,之后将映射请求(内容包括用户称程序的进程号及虚拟地址空间的起始地址vaddr及n)提交给驱动模块。
B3.分析这段虚拟地址空间,将其划分为页数最少的页组合(1GB页、2MB页、4KB页),同时页组合里的页必须是对齐的,即1GB页的地址是1GB对齐,2MB页的地址是2MB对齐,4K页的地址是4KB对齐。
B4.依次对页组合中的虚拟页执行以下操作,之后程序就可以通过vaddr直接读写所映射的虚拟机的对应内存:
从B1所述的物理空间中为虚拟页分配一个相应大小的物理页。若分配失败则分配512个较小的物理页。
更新用户程序的页表,使得虚拟页与物理页对应起来。
查询待映射虚拟机的P2M表,获取待映射的物理页所对应的机器页,同时确认此机器页是否跟物理页同样大小,若不同,则分解物理页。
更新待映射虚拟机的P2M表,标记这些已经被映射页的类型为mapped.
更新监控虚拟机的P2M表,使得物理页与机器页对应起来,同时更新M2P表,使得相应项记录监控虚拟机物理页。
C.监控虚拟机映射指定虚拟机的指定内存后,若虚拟机对应的内存被释放(虚拟机关闭或迁移时或气球机制运行时),则执行以下步骤:
C1.查询M2P表,找到映射此机器页的监控虚拟机对应的物理页。
C2.设置监控虚拟机的P2M表,将相应项设为INVALID_MFN(无效机器页)。
C3.更改hypervisor(虚拟机监控器)的page_fault(缺页)异常处理函数,使其在此种情况下,向上层返回通用保护错误。
C4.监控虚拟机再次访问已释放的虚拟机内存时,就会收到通用保护错误,此时可以在异常处理函数里解映射或重新映射虚拟机的相应内存。
图3是本发明的一实施例的Xen虚拟化平台下高效虚拟机内存映射系统示意图。实现一个如图3所示的应用系统,该系统包括如图所示的映射请求模块,小页面映射模块,大页面映射模块,物理地址空间管理器,更新M2P表模块,获取MFN模块,设置P2M表模块。
此虚拟机内存映射过程分为两类情况,根据应用层映射请求模块的不同需求能够选择不同的内存映射方法,当是小页内存映射需求时调用小页映射模块,当有大页面内存映射需求时调用大页映射模块。
通过Xen平台使用windows2003操作系统作为特权虚拟机的内存映射方法包括:
1应用层映射请求模块判断映射请求类型。若为小页面内存映射需求,以一页为例,则在windows特权机中分配两页虚拟地址空间内存,并锁定该内存,调用驱动中小页映射模块,执行步骤2和步骤4;若为大页面内存映射需求,应用层解析待映射虚拟机内存起始地址,例如映射虚拟机1G+3M+8K开始的2G内存,则向windows操作系统申请大小为2G,起始地址为nG+3M+8K的虚拟地址空间,其中n可以是0,1,2……,若都不成功则申请起始地址为(2n+1)M+8k的虚拟地址空间,其中n可以是0,1,2..….,若还是不行则让操作系统随便分一段虚拟地址空间。调用驱动中大页映射模块,执行步骤3和步骤4。
2分别执行以下子步骤:
2.1获取第2页的伪物理地址,并释放这个伪物理地址所对应的机器内存页,调用Xen超级调用do_memory_op(子功能号为XENMEM_decrease_reservation).
2.2驱动中小页映射模块根据应用层传入的待映射虚拟机内存页,调用xenpatch中获取MFN模块,得到待映射页对应的MFN(机器页)。
2.3根据步骤2.2获得的MFN调用设置P2M表模块,修改特权虚拟机P2M表将步骤1中锁定的内存页对应此MFN。标记P2M表中这些已经被映射页的类型为mapped.
2.4更新M2P表,使得相应项记录特权机物理页框号。
3分别执行以下子步骤:
3.1驱动中大页映射模块将虚拟地址空间分解为页数最少的页组合,1个1G页,510个2M页,1024个4K页。执行步骤3.2。
3.2针对每一页执行如下操作:
1)调用物理地址空间管理器模块。从物理地址空间管理器里分配一页相应大小的物理页。
2)设置windows特权虚拟机的页表,使虚拟页与物理页对应起来。
3)调用获取MFN模块,查询待映射HVM虚拟机的P2M表,获取待映射的物理页所对应的机器页框号,同时确认此机器页是否跟虚拟页同样大小,若不同,则分解物理页为较小的页。
4)调用设置P2M模块,更新特权虚拟机的P2M表,使得物理页与机器页对应起来,并标记P2M表中这些已经被映射页的类型为mapped。
3.3更新M2P表,使得相应项记录特权机物理页框号。执行步骤5。
4特权机映射指定虚拟机的指定内存后,若虚拟机对应的内存被释放,调用解映射模块,执行以下步骤:
1)查询M2P表,找到映射此机器页的特权机对应的物理页框号。
2)设置特权机的P2M表,将相应项设为INVALID_MFN.
3)更改XEN的page_fault异常处理函数,向上层返回通用保护错误。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。