一种移动透明计算环境下客户端块级缓存优化方法与流程

文档序号:12694943阅读:164来源:国知局
本发明涉及移动透明计算领域,特别是一种移动透明计算环境下客户端块级缓存优化方法。
背景技术
::移动透明计算客户端可以是日常生活中普及的移动终端,如手机,平板,也可以是具有网络功能的感应器,还可以是逐渐兴起的智能可穿戴式设备如手表,智能眼镜等,多样式的异构移动客户端设备在处理器,内存等硬件性能上十分受限。传统移动客户端不存储与操作系统相关的软件,每次启动过程,都需要向服务器请求操作系统,由于无线环境下的网络带宽及稳定性的限制,在启动系统过程中耗时比较长,且产生大量的重复网络流量,影响用户体验。技术实现要素:本发明所要解决的技术问题是,针对现有技术不足,提供一种移动透明计算环境下客户端块级缓存优化方法。为解决上述技术问题,本发明所采用的技术方案是:一种移动透明计算环境下客户端块级缓存优化方法,包括以下步骤:1)读取磁盘首扇区;所述磁盘既包括本地磁盘和虚拟磁盘;2)判断所述首扇区标志位是否符合缓存结构,若是,则判断系统缓存是否存在,若存在则截获虚拟磁盘IO访问本地磁盘缓存,若不存在,则进入步骤3);否则,硬盘初始化后建立缓存结构,进入步骤3);3)访问虚拟磁盘重定向服务器,获取数据;4)更新本地磁盘缓存。更新本地磁盘缓存的具体实现过程包括以下步骤:1)在引导操作系统获取第一块数据之前,查找BIOS数据区的确定磁盘数目,其中至少有一个磁盘为标号为0x80的虚拟磁盘,虚拟磁盘保存着操作系统数据;2)在找到本地磁盘后,调用INT13服务读取所述本地磁盘的首扇区的数据,并将首扇区的数据映射为自定义的一个本地缓存结构头部信息,即startup_sector结构;3)对于startup_sector结构,检查标志signature的值是否为0x55aa,如果标志signaturesignature的值不为0x55aa,则将本地磁盘首次用作缓存设备,开始初始化startup_sector结构,并建立system_table_entry中第一条系统缓存记录:id=1,hash=操作系统的标志,offset=0x1,并将初始化的startup_sector数据写回本地磁盘,跳转执行5),更新缓存;4)如果缓存标志signature值等于0x55aa,说明已经在本地磁盘建立了缓存结构,则在sys_table_entry数组中查找启动的操作系统的哈希值,如果查找成功,保存缓存系统信息在本地磁盘的偏移量,启动操作系统,并在操作系统启动过程中调用INT13服务访问虚拟磁盘获取数据时,产生磁盘中断重定向至服务器,向服务器的请求数据被拦截,修改请求数据符合从本地磁盘获取相同的数据,及请求数据在本地磁盘存储的偏移量,最后再次调用INT13服务获取本地磁盘数据,保证操作系统继续执行;所述偏移量记录缓存在本地磁盘所存储的具体位置;如果查找失败,则在system_table_entry表增加一条数据:id,name=hash,offset=1+i*0x1000000,跳转执行步骤5),更新缓存;5)如果需要更新缓存,引导操作系统在启动过程中,首先调用INT13服务访问虚拟磁盘,获取服务器返回的数据后,利用返回的数据构造一个本地磁盘的写数据包,调用INT13服务将同步的数据更新至本地磁盘,作为缓存数据;所述更新缓存是指讲操作系统缓存从服务器中加载到本地磁盘。与现有技术相比,本发明所具有的有益效果为:本发明采用移动客户端本地存储设备作为缓存介质,通过在网络引导模块程序中创建一个虚拟系统盘,修改BIOS服务中磁盘中断中断处理程序,同时利用客户端级缓存模块建立缓存机制,极大的提高了客户端的启动速度,减少了网络的负载,提高了用户体验。附图说明图1为移动客户端的结构模块组成示意图;图2为实模式下的1M内存分配图;图3为缓存磁盘的数据存储逻辑图;图4为本地缓存查找及更新流程图;图5缓存磁盘首扇区结构示意图;图6缓存系统数据结构示意图。具体实施方式移动客户端由移动客户端由硬件层,预置模块层,及运行数据层组成,其结构如图1所示。其中硬件层是移动客户端的基础,包括如处理器,内存,网卡等硬件设备,最上层的运营数据层是运行的操作系统及运行软件,为用户提供服务。而中间的预置模块层主要是由网络引导模块及本地缓存模块组成,具体功能如下:网络引导模块:作为移动客户端的智能设备没有预置操作系统相关的软件,仅在只读存储器(ROM)中内置了网络启动引导的功能模块,支持无操作系统下的网络访问。网络启动引导的功能模块主要功能是创建虚拟磁盘、修改BIOS服务、截获I/O指令、引导网络操作系统,以及和服务器交换获取其他信息等功能。缓存模块:由于在无线环境下,网络的带宽及稳定性的限制,在启动系统过程中耗时比较长,且需要从服务器上加载大量的数据。透明计算理念对客户端本身没有要求存储模块的,但在实际中目前很多移动终端智能设备会内嵌入一块小容量的本地存储设备。基于以上原因,在客户端中增加了缓存模块,能根据硬件设备及用户的需要,缓存一部分的操作系统底层与用户无关的数据。通过客户端的缓存模块能对本地存储设备按块进行管理,并将数据块的读写映射为本地存储的地址的读写,提高系统启动速度,减少网络的流量。本发明中移动客户端的启动原理,首先网络引导模块程序中创建一个虚拟系统盘,修改BIOS服务中磁盘中断处理程序,能保留传统方案中对本地磁盘的I/O处理同时具有对虚拟磁盘I/O访问重定向到服务器。同时利用客户端块级缓存模块建立缓存机制,也就是将虚拟磁盘访问中的数据根据需要在本地存储设备做一个缓存,特别是操作系统引导启动过程中的共享数据,能极大提高客户端的启动速度。其具体的系统引导过程描述如下:(1)移动客户端通电,客户端进行POST自检并进行硬件初始化。这个阶段检查关键设备是否能正常工作,比如CPU,内存及显卡等。自检功能完成之后,客户端设备处于实模式之下,对内存的有效访问空间为1M,其分布大致结构如图2所示。(2)客户端自检后,跳转到只读存储器上执行网络引导模块,网络引导模块会获取内存的分配状态,检查内存的BIOS数据区,加载无线网卡驱动,并配置网络协议栈。支持网络访问功能后,初始化虚拟磁盘及修改BIOS服务进行I/O重定向。BIOS的磁盘读写服务主要提供对本地磁盘的读写访问,包括基本读写服务,以及扩展的读写服务。BIOS服务能对磁盘进行修复获取参数读写复位等操作。BIOS中断服务可以直接通过汇编或者结合C语言嵌入式汇编用调用。在实模式下,汇编程序通过设置CPU内寄存器的状态然后调用相应的功能号,直接使用BIOS服务。比如基本磁盘I/O功能INT13中断服务,调用INT13各个功能时,需要将寄存器参数按照一定的要求设置[6]:AH=功能号,AL=读/写的扇区数,DL=磁盘驱动器号ES:BX=读/写时数据的缓冲区地址,CH=磁道柱面号低8位;CL=高2位为柱面号高2位,低6位为扇区号;DH=磁头号。而对大容量的磁盘I/O访问是INT13提供扩展功能,其调用规范是:AH=扩展功能号;DS:SI=虚拟磁盘逻辑块地址包指针;DL=磁盘驱动器号,其中DS:SI的指针指向的是一个块结构里面包括如读写的块数,读写是数据存储的地址指针,以及如读写的逻辑块起始地址。在磁盘访问中逻辑地址和柱面/磁头/扇区组成的地址是可以相互转换的如:LBA=(((CX&0x00c0)<<2)|((CX&0xff00)>>8))*HEADS*SECTORS+((DX&0xff00)>>8)*SECTORS+(CX&0x003f)–1在网络引导模块中,虚拟磁盘是一个块设备,初始化虚拟磁盘如分配磁盘号,块的大小,磁盘的容量,磁盘扇区数,磁头数及柱面数等,同时调用网络功能实现数据包的网络发送及接受。网络引导模块需要修改内存的BIOS数据区,将虚拟磁盘的磁盘号(0x80)增加在数据区,并加入设备引导列表。对虚拟磁盘的访问重定向则是通过改写BIOS的磁盘访问中断服务实现的,也就是在内存的中断向量表中用新的重定向功能地址代替原有的磁盘中断功能程序地址,根据实模式下的内存分配,可以知道在在新的磁盘中断服务功能中保存了原有的磁盘中断向量表地址,提供对本地磁盘直接调用原磁盘中断向量表地址,当访问虚拟磁盘,将中断请求封装为数据包,能调用网络协议发送数据到服务器,由服务器将处理的结果放回给客户端。(3)用户登录并选择要运行的操作系统,查找缓存并启动操作系统。客户端的网络引导模块在创建虚拟磁盘和修改中断后,获取用户的账号与服务器交互,获取可启动的操心系统列表。在选择相应的系统后,判断是否存在本地磁盘,且在本地磁盘是是否建立的缓存结构。如果存在缓存记录,则在本地磁盘中进行缓存查找本次要启动的系统。如果查找到缓存,则利用磁盘缓存启动,读取磁盘相应位置的数据,加载到内存的0x7c00地址,开始引导系统启动。如果没找到缓存或者要启动的系统,则读取远程要启动操作系统的虚拟磁盘第一块扇区数据,加载到0x7c00处,并在如果存在本地存储设备的情况下更新缓存,同时开始的引导网络操作系统启动。在引导操作系统的过程中,会反复调用BIOS服务进行磁盘读写,产生中断事件。在本发明中,客户端在网络引导模块在引导操作系统之前,为减少网络的负载及提高启动速度,充分利用本地存储的作用,会将该用户首次在本客户端启动的操作系统进行一个缓存。在首次引导网络操作系统缓存成功的情况下,在第二次以后的重复引导操作系统,能直接从本地的缓存加载,则能大大的加快启动速度。在本方法中,我们用大小64G的本地磁盘设备作为缓存为例。在缓存中可以存储多个用户的多个操作系统内核,操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。为将不同操作系统的内核进行区分,将硬盘按顺序划为不同的区域,每个操作系统在某个特定的区域存储。缓存的磁盘的逻辑图如图3所示。本地磁盘缓存存储查找及更新过程流程图4,在本地缓存的启动过程中的查找及更新算法描述如下:1).网络引导模块在引导操作系统获取第一块数据之前,通过查找BIOS数据区的(内存地址0x475的字节值)确定磁盘数目,其中至少有一个存储设备为标号为0x80的虚拟磁盘。2).在找到本地磁盘(默认标号为0x81)的情况下,调用INT13服务读取本地磁盘(0x81)的第一块扇区也就是0号物理扇区的数据,并将这块扇区的数据映射为自定义的一个本地缓存结构头部信息startup_sector结构。缓存头部信息结构中记录了缓存的基本信息具体定义如图5。在startup_sector结构中total_sys_num表示存在缓存的个数;sys_version_num表示存储结构的版本;Structsystem_table_entry代表每一条缓存记录组成的数据结构;signature则是存储标志。3).对startup_sector检查标志signature的值是否为0x55aa,如果缓存结构标示的值不是0x55aa,则说明本地磁盘还没有建立自定义的缓存结构,需要进行首次初始化磁盘扇区数据,实现本地存储磁盘的缓存初始化,具体步骤如下描述。步骤1,如果signature标志值不对(不是0x55aa),则将磁盘首次用作缓存设备。开始初始化startup_sector结构,并建立system_table_entry中第一条系统缓存记录(id=1,hash=系统的标志offset=0x1),其缓存记录的结构定义如图6表示,并将初始化的startup_sector数据写回磁盘,跳转执行(4)更新缓存。System_table_entry结构中id代表缓存的需要,flag代表缓存是否有效,hash代表本系统的网络的唯一标志,offset代表本条缓存记录在磁盘上的存储起始偏移量。步骤2,如果缓存标志signature值等于0x55aa,说明已经在本地磁盘建立了缓存结构,则把要启动的系统的hash值在sys_table_entry数组中查找,如果查找成功,保存缓存系统信息特别是待启动数据在本地存储设备的偏移量;如果查找失败,在system_table_entry表增加一条数据(id,name=hash,offset=1+i*0x1000000)并更新到磁盘中。步骤3,通过缓存的查询,找到启动系统缓存的情况下,在系统启动过程中调用INT13服务访问虚拟磁盘获取数据时,产生的磁盘中断重定向至服务器,向服务器的请求数据会被拦截,就是修改请求数据符合从本地磁盘获取相同的数据,主要是修改寄存器值如AL寄存器状态值,及请求数据在本地磁盘的存储的偏移量,最后再次调用INT13服务获取本地磁盘数据,保证系统继续执行。4).如果需要创建新的缓存或者更新缓存,引导操作系统在启动过程中,首先调用INT13服务访问虚拟磁盘,获取服务器返回的数据后,还要利用返回数据构造一个对本地存储的写数据包,调用INT13服务将同步的将数据更新至磁盘,作为缓存数据。5).在客户端的操作系统引导过程中,当对读数据请求的操作根据是否有缓存分别做不同的数据处理。但无论是否有缓存,虚拟磁盘产生的写请求都会向服务器发送,同时构造新的写数据包会更新本地磁盘数据。在实施例中,服务器和客户端工作在同一局域网,通过一个路由器相连。用户通过客户端,在身份验证成功后,引导加载服务器上的操作系统实例,并在客户端上运行。移动客户端使用的是x86结构的平板。各部分配置具体如下。如表1。表1实验设备的配置表通过对比客户端在否存储本地的缓存的不同状态下的开机启动不同操作系统的时间作对比,其中启动的两种操作系统CentOS,RedHat。将两种操作系统的启动过程分为3个阶段:分别是从开机到内核加载阶段,启动到登录界面,登录成功后进入桌面。表2表示没有客户端缓存的移动客户端的启动时间。表2没有本地缓存启动两种系统的各个阶段时间表3带本地缓存启动两种系统的各个阶段时间通过对比数据,可以看出本地客户端缓存对系统的启动速度有非常大的影响。本地缓存在本地的数据大小为50M左右,也就与用户无关的操作系统内核数据。通过网络加载内核需要占整个系统启动时间的50%以上,而具有本地缓存的情况下,加载内核的时间只有15%左右。所以,具有本地缓存的客户端能大大提高用户的体验。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1