System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据存储领域,尤其涉及一种基于虚拟内存的数据管理方法、设备和存储介质。
技术介绍
1、受特殊的作业条件限制,在开发需要在水下、野外等环境长时间工作的硬件时,往往需选用低功耗主控芯片。低功耗芯片硬件资源有限,部分产品内存仅有128kb。在通信模块的开发中,芯片内存的限制导致单次通信过程只能发送几十kb的数据,则实际的使用中只能进行简单的短报文传输。而在日益增长的信息传输需求下,这个数据量远远无法满足实际应用需求。为了满足后续的大数据量的长报文与图片视频等传输需求,考虑引入虚拟内存技术,通过增加芯片的读取时间来提高内存的使用效率。
2、在水下、野外场景中布放的部分设备,如水声调制解调器、海底科学仪器插座模块等具有硬件资源较少、进程任务数量有限、无长时间的复杂计算需求、对单个进程的时间要求较低以及对存储空间的利用率要求较高的工作特点。但目前为个人电脑设计的虚拟内存技术往往占用较多硬件资源、对计算资源需求高,不适用于此类应用场景。
技术实现思路
1、针对现有技术的不足,本专利技术提出一种基于虚拟内存的数据管理方法、设备和存储介质,该方法在有限的芯片硬件资源限制下,提升了数据的存储率,解决了大数据量存储和收发的问题。
2、具体技术方案如下:
3、一种基于虚拟内存的数据管理方法,包括数据存储和数据读取,所述数据存储用于将进程暂时不需要的数据写入外部存储中,所述外部存储根据虚拟内存技术引入,所述数据存储包括以下步骤:
4、s1:将所有
5、s2:判断运行的进程是否是初次运行,若是,则跳转至s3;若否,则跳转至s5;
6、s3:在内部存储中初始化一个虚拟地址数组,设置地址0为空指针;
7、s4:寻找空闲的页表空间,存储数据后,提取出该数据所在的虚拟地址,作为当前进程的虚拟地址数组的第一个地址和初始指针;将该虚拟地址的数值更新为0,该虚拟地址同时作为当前进程的尾部空指针;若当前进程还需要继续存储数据,则跳转至s5;
8、s5:寻找空闲的页表空间,存储数据后,提取出该数据所在的虚拟地址,赋给当前进程的虚拟地址数组的第i+1个虚拟地址,i=1,2,3,……;此时第i个虚拟地址的数值更新为i+1,使虚拟地址的数值指向下一个虚拟地址;将当前虚拟地址的数值更新为0,作为当前进程新的尾部空指针;
9、s6:重复s5,直到当前进程完成数据存储;
10、s7:当有新的进程运行时,重复s2~s6;
11、所述数据读取包括以下步骤:
12、步骤一:通过进程的初始指针找到该进程存储的第一个数据对应的虚拟地址;
13、步骤二:根据所述虚拟地址计算对应的外部存储物理地址;
14、步骤三:查找对应的物理地址,将其中的数据读取到内部存储中;
15、步骤四:若当前虚拟地址在虚拟地址数组中对应的数值不为0,根据当前虚拟地址对应的数值查找下一虚拟地址,并重复步骤二和步骤三;若当前虚拟地址在虚拟地址数组中对应的数值为0,停止读取,实现进程的恢复与运行。
16、进一步地,所述寻找空闲的页表空间具体为:通过空闲链表法对空闲空间进行管理,将空闲当作一个进程,其虚拟地址空间通过虚拟地址数组的方式记录;当进程需存储数据时,找到空闲进程的初始空闲指针,进程在该初始空闲指针对应的空闲页表空间存储数据后,初始空闲指针指向对应的下一虚拟地址;沿空闲链表顺序依次进行,直到该进程不需要下一个空闲页表空间时,尾部空指针指向当前虚拟地址;当该进程下一次被唤醒并需要存储新数据时,改变尾部空指针指向的虚拟地址的值,使其指向下一个空闲地址。
17、进一步地,当某个进程释放其所占有的空间后,该空间成为新的空闲页表空间,空闲链表的尾部空闲指针指向新的空闲页表空间,使新的空闲页表空间成为空闲链表的尾端。
18、进一步地,所述寻找空闲的页表空间具体为:通过位图法对空闲空间进行管理,在内部存储中引入一个表示虚拟标记空间是否被占有的位变量,使用位操作对内部存储中的虚拟标记空间进行管理;当进程需存储数据时,检索空闲的虚拟标记空间并存入数据,存入数据的虚拟标记空间对应的位变量从空闲更新为已占用;当某个进程释放其所占有的虚拟标记空间后,将该虚拟标记空间对应的位变量从已占用更新为空闲。
19、进一步地,所述位变量用一个比特表示虚拟空间的占用情况,已占用的空间位变量为1,空闲的空间位变量为0。
20、进一步地,所述寻找空闲的页表空间具体为:通过平方多级指针法对进程数据进行管理,将进程初始指针导向一级指针表,一级指针表内设有多个一级指针,一级指针的数量为,其中, p num为虚拟页表中页的总数,表示向上取整;一级指针均匀地指向整个页表中该进程在虚拟页表中所对应的所有页;
21、当某一进程需存储数据时,找到一个空闲空间,将数据存入,根据数据存储后该进程的所有数据对应的页表情况,计算并更新一级指针表,更新原则为:虚拟页表中页的总数目改变,重新计算对应一级指针的数量,并对应更新每个一级指针指向的页;
22、当某一进程需查询数据时,先在一级指针表中搜索该数据的虚拟地址所在页表对应的一级指针,接着由该一级指针寻找到需查询的页;
23、当某一数据删除后,根据数据删除后该进程的所有数据对应的页表情况,计算并更新一级指针表,更新原则与存储数据后一级指针表的更新原则一致。
24、进一步地,所述寻找空闲的页表空间具体为:通过等比多级指针法对空闲空间进行管理,将虚拟页表中实际对应的页每nx个划分为一份,不足nx个的同样为一份且位于末端,nx由人为设定;将进程初始指针导向一级指针链表,其内部每个一级指针按链表顺序依次相连,每个一级指针的数值域指向其对应的nx页的地址;
25、当某一进程需存储数据时,找到一个空闲空间,将数据存入,根据数据存储后该进程的所有数据对应的页表情况,更新一级指针链表,一级指针链表的更新原则为:若新增页后,最末端的一级指针指向的页数未超过nx,则不新增一级指针,仅使最末端的一级指针指向新增页;若新增页后,最末端的一级指针指向的页数超过nx,则新增一个一级指针作为新的最末端,并指向该新增页;
26、当某一进程需查询数据时,通过进程初始指针找到一级指针链表中的第一个一级指针,按链表顺序一直检索至需查询数据对应的一级指针,进而找到对应的页;
27、当某一数据删除后,根据数据删除后该进程的所有数据对应的页表情况,计算并更新一级指针链表,更新原则与存储数据后一级指针链表的更新原则一致。
28、一种电子设备,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现所述的基于虚拟内存的数据管理方法。
29、一种本文档来自技高网...
【技术保护点】
1.一种基于虚拟内存的数据管理方法,包括数据存储和数据读取,其特征在于,所述数据存储用于将进程暂时不需要的数据写入外部存储中,所述外部存储根据虚拟内存技术引入,所述数据存储包括以下步骤:
2.根据权利要求1所述的基于虚拟内存的数据管理方法,其特征在于,所述寻找空闲的页表空间具体为:通过空闲链表法对空闲空间进行管理,将空闲当作一个进程,其虚拟地址空间通过虚拟地址数组的方式记录;当进程需存储数据时,找到空闲进程的初始空闲指针,进程在该初始空闲指针对应的空闲页表空间存储数据后,初始空闲指针指向对应的下一虚拟地址;沿空闲链表顺序依次进行,直到该进程不需要下一个空闲页表空间时,尾部空指针指向当前虚拟地址;当该进程下一次被唤醒并需要存储新数据时,改变尾部空指针指向的虚拟地址的值,使其指向下一个空闲地址。
3.根据权利要求2所述的基于虚拟内存的数据管理方法,其特征在于,当某个进程释放其所占有的空间后,该空间成为新的空闲页表空间,空闲链表的尾部空闲指针指向新的空闲页表空间,使新的空闲页表空间成为空闲链表的尾端。
4.根据权利要求1所述的基于虚拟内存的数据管理方
5.根据权利要求4所述的基于虚拟内存的数据管理方法,其特征在于,所述位变量用一个比特表示虚拟空间的占用情况,已占用的空间位变量为1,空闲的空间位变量为0。
6.根据权利要求1所述的基于虚拟内存的数据管理方法,其特征在于,所述寻找空闲的页表空间具体为:通过平方多级指针法对进程数据进行管理,将进程初始指针导向一级指针表,一级指针表内设有多个一级指针,一级指针的数量为,其中,Pnum为虚拟页表中页的总数,表示向上取整;一级指针均匀地指向整个页表中该进程在虚拟页表中所对应的所有页;
7.根据权利要求1所述的基于虚拟内存的数据管理方法,其特征在于,所述寻找空闲的页表空间具体为:通过等比多级指针法对空闲空间进行管理,将虚拟页表中实际对应的页每Nx个划分为一份,不足Nx个的同样为一份且位于末端,Nx由人为设定;将进程初始指针导向一级指针链表,其内部每个一级指针按链表顺序依次相连,每个一级指针的数值域指向其对应的Nx页的地址;
8.一种电子设备,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1~7中任一项所述的基于虚拟内存的数据管理方法。
9.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现权利要求1~7中任一项所述的基于虚拟内存的数据管理方法。
...【技术特征摘要】
1.一种基于虚拟内存的数据管理方法,包括数据存储和数据读取,其特征在于,所述数据存储用于将进程暂时不需要的数据写入外部存储中,所述外部存储根据虚拟内存技术引入,所述数据存储包括以下步骤:
2.根据权利要求1所述的基于虚拟内存的数据管理方法,其特征在于,所述寻找空闲的页表空间具体为:通过空闲链表法对空闲空间进行管理,将空闲当作一个进程,其虚拟地址空间通过虚拟地址数组的方式记录;当进程需存储数据时,找到空闲进程的初始空闲指针,进程在该初始空闲指针对应的空闲页表空间存储数据后,初始空闲指针指向对应的下一虚拟地址;沿空闲链表顺序依次进行,直到该进程不需要下一个空闲页表空间时,尾部空指针指向当前虚拟地址;当该进程下一次被唤醒并需要存储新数据时,改变尾部空指针指向的虚拟地址的值,使其指向下一个空闲地址。
3.根据权利要求2所述的基于虚拟内存的数据管理方法,其特征在于,当某个进程释放其所占有的空间后,该空间成为新的空闲页表空间,空闲链表的尾部空闲指针指向新的空闲页表空间,使新的空闲页表空间成为空闲链表的尾端。
4.根据权利要求1所述的基于虚拟内存的数据管理方法,其特征在于,所述寻找空闲的页表空间具体为:通过位图法对空闲空间进行管理,在内部存储中引入一个表示虚拟标记空间是否被占有的位变量,使用位操作对内部存储中的虚拟标记空间进行管理;当进程需存储数据时,检索空闲的虚拟标记空间并存入数据,存入数据的虚拟标记空间对应的位变量从空闲更新为已占用;当某个进程释放其...
【专利技术属性】
技术研发人员:涂星滨,何雨嘉,杨劭坚,朱昊頔,周钦,魏艳,瞿逢重,
申请(专利权)人:浙江大学海南研究院,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。