基于位图的存储空间管理系统及其方法_3

文档序号:8412539阅读:来源:国知局
的小块索引位图的对应的索引位设置为有效,至此完成分配,本实施例的流程结束。
[0069]步骤S112:在主资源索引位图中查找有效位。继续执行步骤S113。
[0070]步骤S113:判断是否能在主资源索引位图中找到有效位,若能找到则执行步骤S117,若不能找到则说明空闲的存储空间和用于大块分配的存储空间都已经耗尽,执行步骤 SI14。
[0071]步骤S114:在副资源索引位图中查找有效位。继续执行步骤S115。
[0072]执行到这一步骤,说明空闲的存储空间和用于大块分配的存储空间都已经耗尽,这时已处于资源紧张状态,只能在优先用于小块分配的状态位图单元中寻找剩余的状态位。
[0073]步骤S115:判断是否能在副资源索引位图中找到有效位,若能找到则执行步骤S104,若无法找到则执行步骤S116。
[0074]步骤S116:资源不足无法分配。
[0075]若执行到这一步骤,则说明存储空间耗尽,无法完成大块的分配操作。
[0076]图4示出了在基于位图的存储空间管理系统中实施大块分配的方法的实施例的步骤,详述如下。
[0077]步骤S201:在小块索引位图中查找有效位。然后执行步骤S202。
[0078]本实施例的首要任务是找到可进行小块分配的状态位图单元。因此从步骤S201、S210和S216中可以看出,本实施例从三个索引委托中查找索引位,按照优先顺序依次是小块索引位图、主资源索引位图和大块索引位图。
[0079]步骤S202:判断是否能在小块索引位图中找到有效位。若能找到有效位则继续执行步骤S203,若不能找到有效位则继续执行步骤S210。
[0080]步骤S203:在索引位对应的分配状态位图单元中查找有效位。继续执行步骤S204。
[0081]步骤S204:将资源状态位图单元中与步骤S203中的分配状态位图单元所找到的有效位相对应的状态位设置为无效,继续执行步骤S205。
[0082]这一步骤是为了实现在找到有效位的同时确保相应的资源状态位图单元的对应位是无效的。
[0083]步骤S205:在有效的状态位对应的存储块中划分出一小块。继续执行步骤S206。
[0084]在本步骤中,计算有效的状态位对应的存储块的逻辑地址并将其划分出一小块出来给应用。
[0085]步骤S206:判断存储块的空间是否划分完。若已经全部划分完则继续执行步骤S207,若还未全部划分完则说明已经完成分配,本实施例的流程结束。
[0086]步骤S207:设置分配状态位图单元中的对应位为无效。继续执行步骤S208。
[0087]步骤S208:判断分配状态位图单元中的所有状态位是否都为无效,若都为无效则继续执行步骤S209,若不是都为无效则说明已经完成分配,本实施例的流程结束。
[0088]步骤S209:设置能检索到该分配状态位图单元的索引位图中对应的索引位为无效,此时说明已经完成分配,本实施例的流程结束。
[0089]步骤S210:在主资源索引位图中查找有效的索引位。继续执行步骤S211。
[0090]步骤S211:判断是否找到有效的索引位,若找到则继续执行步骤S212,若无法找到则继续执行步骤S216。
[0091]步骤S212:设置主资源索引位图中的找到的有效位为无效。继续执行步骤S213。
[0092]步骤S213:设置副资源索引位图对应的索引位为有效。继续执行步骤S214。
[0093]步骤S214:设置小块索引位图对应的索引位为有效。继续执行步骤S215。
[0094]步骤S215:设置大块索引位图对应的索引位为无效,继续执行步骤S203。
[0095]上述的步骤S212至步骤S215,S卩,将小块索引位图和副资源索引位图中对应的设置为有效并将主资源索引位图和大块索引位图中相应位设置为无效,以表示索引位对应的状态位图单元优先为小块分配使用。
[0096]步骤S216:在大块索引位图中查找有效位,继续执行步骤S217。
[0097]步骤S217:判断是否能在大块索引位图中查找有效位,若能查找到则执行步骤S215,若不能找到则说明在三个索引位图中都找不到有效位,存储空间耗尽无法完成分配操作,本实施例的流程结束。
[0098]图5示出了在基于位图的存储空间管理系统中实施大块释放的方法的实施例的步骤,详述如下。
[0099]步骤S301:设置资源状态位图单元和分配状态位图单元中的对应位为有效。继续执行步骤S302。
[0100]步骤S302:判断分配状态位图单元是否仅有一个状态位有效。若是则执行步骤S303,若否则执行步骤S304。
[0101]步骤S303:设置主资源索引位图中的对应位为有效,本实施例的流程结束。
[0102]执行到这一步骤,说明当前是分配状态位图单元仅一位有效的状态,此时应该更新主资源索引位图中的对应位的状态,以保证能通过该索引位图重新找到这个分配状态位图单元。
[0103]步骤S304:判断资源状态位图单元和分配状态位图单元的所有状态位是否都有效。若都有效则执行步骤S305,若不是都有效则执行步骤S309。
[0104]步骤S305:设置主资源索引位图对应位为有效。继续执行步骤S306。
[0105]步骤S306:设置大块索引位图中的对应位为有效。继续执行步骤S307。
[0106]步骤S307:设置小块索引位图中的对应位为无效。继续执行步骤S308。
[0107]步骤S308:设置副资源索引位图中的对应位为无效,本实施例的流程结束。
[0108]上述步骤S305至308的实施的前提是两个状态位图单元中的所有状态位都为有效状态,这一情况说明状态位图单元的存储块都已经完全释放,应该将四份索引位图中的对应位回归到初始化状态。步骤S305至S308的执行并没有先后之分,在本实施例中的这种执行顺序仅仅是一种举例说明。
[0109]步骤S309:判断小块索引位图中的对应位是否有效,若有效则执行步骤S310,若无效则说明本实施例的流程结束。
[0110]状态位图单元中有部分状态位为无效,则说明还没有完全释放存储空间,需要检查小块索引位图中的对应位来确认状态位图单元是否在小块索引位图中。
[0111]步骤S310:设置副资源索引位图的对应位为有效,本实施例的流程结束。
[0112]若状态位图单元在小块索引位图中则说明状态位图单元正处于优先用于小块分配的状态,应确保状态位图单元在副资源索引位图中的对应位为有效,以便下次能通过副资源索引位图找到这个包含有空闲块的状态位图单元。
[0113]图6示出了在基于位图的存储空间管理系统中实施小块释放的方法的实施例的步骤,详述如下。
[0114]步骤S401:判断所要释放的小块是否为整个大块存储空间中的第一块。若是则执行步骤S402,若不是则执行步骤S405。
[0115]判断是否为存储空间中的第一块,即检查对应的大块存储空间是否还能继续划分,若不能继续划分则说明当前释放的是存储空间中的第一个空闲块。
[0116]步骤S402:设置分配状态位图单元对应位为有效,继续执行步骤S403。
[0117]步骤S403:判断分配状态位图单元是否仅有一位有效,若是则执行步骤S404,若不是则本实施例的流程结束。
[0118]步骤S404:设置小块索引位图的对应位为有效,然后本实施例的流程结束。
[0119]这一步骤的作用是为了下次能通过小块索引位图找到分配状态位图单元。
[0120]步骤S405:检查存储块中的小块是否全部释放,若是则执行步骤S406,若不是则代表本实施例的流程结束。
[0121]步骤S406:设置资源状态位图单元中的对应位为有效,继续执行步骤S407。
[0122]步骤S407:检查状态位图单元(资源状态位图单元和分配状态位图单元)中的所有状态位是否都有效,若都有效则说明状态位图单元中的存储块都已经完全释放,执行步骤S408,若并不是都有效则执行步骤S412。
[0123]步骤S408:设置主资源索引位图对应的索引位为有效,继续执行步骤S409。
[0124]步骤S409:设置大块索引位图中对应的索引位为有效,继续执行步骤S410。
[0125]步骤S410:设置小块索引位图中对应的索引位为无效,继续执行步骤S411。
[0126]步骤S411:设置副资源索引位图中对应的索引位为无效,然后本实施例的流程结束。
[0127]上述的步骤S408至S411说明状态位图单元中的存储块都已经完全释放,将四份索引位图(主资源索引位图、大块索引位图、小块索引位图、副资源索引位图)中对应的索引位回归到初始化状态。步骤S408至S4
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1