位视图 计算

位示图是操作系统中一种管理空闲存储空间的方法。管理空闲除使用位示图法还可用:空闲区表法,空闲链表法,成组链接法

1.空闲区表法

  空闲表法属于连续分配方法。它与内存管理中的动态分区分配方法雷同。

将外存空间上一个连续未分配区域称为“空闲区”。操作系统为磁盘外存上所有空闲区建立一张空闲表,每个表项对应一个空闲区,空闲表包含“序号,第一空闲盘块号,空闲盘块数”等信息。它适用于连续文件结构。

它为每个文件分配一个连续的存储空间。系统为外存上的所有空闲区建立一张空闲表,每个空闲区对应于一个空闲表项。

2.空闲链表法

是将所有的空闲盘区拉成一条空闲链。根据构成链的基本元素的不同,可有两种链表方式:空闲盘块,空闲盘区链

      空闲盘块链:它是将磁盘上的所有空闲存储空间,以盘块为基本元素拉成一条链。优点是用于分配和回收一个盘块的过程非常简单;缺点是空闲盘块链可能很长。

       空闲盘区链:这是将磁盘上的所有空闲盘区(每个盘区可包含若干个盘块)拉成一条链。在每个盘区上除了含有用于指示下一个空闲盘区的指针外,还应标有指明本盘区大小(盘块数)的信息。这方法分配和回收过程较复杂,但空闲盘区链较短

3.位示图法

   这种方法是在外存上建立一张位示图(bitmap),记录文件存储器的适用情况。每一位仅对应文件存储器上的一个物理快,取值0和1分别表示空闲和占用。文件存储器上的物理快依次编号为:0,1,2,.......。

位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时表示已分配。由所有盘块对应的位构成一个集合,称为位示图。位示图也可描述为一个二位数组map:Var map:array[1......m,1......n]of bit;

盘块的分配

   根据位示图进行盘块分配时,可分三步进行:

    顺序扫描位示图,从中找出一个或一组值均为“0”的二进制位;

      将找到的二进制位,转换成与之相应的盘块号;

      修改位示图,令map[i,j]=1.

盘块的回收

    盘块的回收分两步:

       将回收盘块的盘块号转换成位于图中的行号和列号。转换公式为:

i=(b-1)DIVn+1

j=(b-1)MODn+1

修改位示图令map[i,j]=0.

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言模拟内存分配管理使用视图的方法可以通过一个数组来表示内存的使用情况。假设我们有一个大小为N的内存,我们可以用一个长度为N的数组来表示每个内存块的占用情况。 1. 初始化视图:开始时,将数组中的所有都设置为0,表示内存中的所有块都是空闲的。 2. 内存分配:当需要分配一块大小为m的内存时,我们可以遍历数组中的连续m个,直到找到一个连续的空闲块。将这些设置为1,并返回内存块的起始地址。如果找不到连续的空闲块,则分配失败。 3. 内存释放:当一块内存不再使用时,我们可以根据内存块的起始地址和大小,将对应的数组中的设置为0,表示该内存块已经释放。 4. 内存管理算法:为了提高内存的利用率,可以使用不同的内存分配算法,如首次适应、最佳适应或最坏适应等。这些算法通过遍历数组来找到适合的内存块进行分配。 使用视图进行内存分配管理的优点是简单、高效。只需要维护一个数组,不需要额外的数据结构。同时,也可以快速地判断一个连续的内存块是否空闲。然而,视图的缺点是不能处理碎片化问题,可能会导致内存的浪费。 总而言之,使用视图可以模拟内存分配管理,在C语言中实现内存的分配和释放操作。通过维护一个数组,可以方便地管理内存的使用情况,并选择合适的算法来分配和释放内存。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值