《操作系统真象还原》第八章 位图的数据结构与操作

1,概念介绍
用途就是为了管理内存页,一比特对应一页,即bit对应4KB。因为管理内存的位图本身也需要空间。所以我们要尽量压缩管理代价。

一个简单的运算:1K的位图可以管理多大的内存空间呢?

1Kb x 8bit x 4KB = 32Mb。所以1k的位图可以管理32M的内存空间。

2,数据结构

struct bitmap {
   uint32_t btmp_bytes_len;//所占用的空间长度,单位:字节
   uint8_t* bits;
};

3,操作及实现思路

void bitmap_init(struct bitmap* btmp);
bool bitmap_scan_test(struct bitmap* btmp, uint32_t bit_idx);
int bitmap_scan(struct bitmap* btmp, uint32_t cnt);
void bitmap_set(struct bitmap* btmp, uint32_t bit_idx, int8_t value);

1,位图初始化

2,判断某个位是否为1,若为1则返回true,否则返回false

3,在位图中申请连续个cnt个位,成功就返回起始位下标,失败返回-1

4,将位图bit_idx位设置为value

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值