我需要在C中跟踪很多的布尔式数据。我正在编写一个玩具内核,需要存储关于某个内存地址是否使用的数据< / strong>或免费。因此,我需要以最快,最有效的方式存储和遍历这些数据。由于我从头开始编写内核,因此无法使用C标准库。在不使用C标准库的情况下,组织,遍历和修改大量布尔型数据的最佳,最快,最有效的方法是什么。 C标准库?例如。位图或数组或链表是否需要最少量的资源来遍历和修改?
答案 0 :(得分:1)
许多文件系统都有同样的问题:指示分配单元(磁盘扇区组)是否可用。除了MSDOS的FAT之外,我认为所有人都使用bitmap。毫无疑问,NTFS和Linux的ext / ext2 / ext3 / ext4使用位图。
有几个简单的优化。如果分配需要超过8/16/32/64个顺序单元,则使用相应的整数大小一次检查多个位是很简单的。如果位为零意味着&#34;可用&#34;,则测试零整数会告知整个分配是否可用。但是,可能需要考虑边界优化。