J'écris un allocateur de mémoire qui est soutenu par une carte de bits (tableau de uint8_t
) actuellement quand une demande d'allocation arrive je scanne le bitmap séquentiel de 0 à n bits et recherche un espace qui peut répondre à la demande. (un bit 1 indique que la page utilisée est 0) est maintenant libre) Maintenant, au lieu de chercher un espace un bit à la fois, y a-t-il une technique pour scanner le tableau plus rapidement? si une demande de mémoire de 3 pages arrive, je voudrais chercher 000
motif dans le tableau en une seule fois idéalement sans boucle? PS: Je n'utilise pas std::bitset
car il n'est pas disponible pour le compilateur que j'utilise. Je pense que cela ne me permet pas de chercher plusieurs bits aussi.Tableau de bits de balayage pour le modèle de bits multiples
EDIT: Les bits sont compressés en octets. Un uint8_t
a 8 pages (1 par bit) codées.
serait ce travail sous forme uint16 donc je peux regrouper deux octets dans uint16 pour tenir compte du TRANSITION de l'octet à l'autre puis faites glisser la fenêtre d'un octet du début à la fin? –
@HamzaYerlikaya - J'ai développé une fonction template précisément parce qu'elle est destinée à fonctionner avec tous les types entiers non signés – max66