2015-11-11 3 views
1

мне нужно следить за много булевых-эск данных в C. Я пишу игрушку ядро ​​и нужно хранить данные о том, является ли определенный адрес памяти используется или бесплатно. Из-за этого мне нужно хранить и проходить через эти данные самым быстрым и эффективным способом. Поскольку я пишу ядро ​​с нуля, я не могу использовать стандартную библиотеку C . Каков наилучший, самый быстрый и эффективный способ организовать, пройти и изменить большую серию данных с булевым языком без использования стандартной библиотеки C? Например. будет ли растровое изображение или массив или связанный список заняты наименьшим количеством ресурсов для перемещения и изменения?Каков самый быстрый способ организовать данные в C?

+1

Я не уверен, что вы просите, но бит-бит или бит-бит/бит-массив могут быть тем, что вам нужно? –

+0

Я быстро разъясню вопрос. –

+0

Так что бит-манипуляция будет самой быстрой, наименее ресурсоемкой техникой? –

ответ

1

Многие файловые системы имеют одинаковую проблему: указывает, доступна ли единица распределения (группа дисковых секторов) или нет. За исключением FAT MSDOS, я думаю, что все используют bitmap. Определенно NTFS и Linux ext/ext2/ext3/ext4 используют растровые изображения.

Существует несколько простых оптимизаций. Если для распределения требуется более 8/16/32/64 последовательных блоков, то проверка того, что много бит сразу просто, с использованием соответствующего целочисленного размера. Если бит равен нулю, значит «доступно», тогда тестирование нулевого целого указывает, доступно ли все выделение. Однако, возможно, потребуется рассмотреть возможность оптимизации границ.

Смежные вопросы