The most common approach is to use a bit map. This is an array of bits, each corresponding to one allocation unit. A value of 0 means the allocation unit is free, and 1 means it is in use. Of course, the bit map must be kept on the disk, but a copy is usually retained in main memory. To keep overhead down, as disk space is allocated the main memory copy alone is updated. Periodically, and when the disk is dismounted, the bit map is written back out to disk. This can pose a problem if the system crashes before the disk copy of the bit map is updated. In this case, it becomes necessary to traverse the directory structure and reconstruct the bit map when the system comes back up. (Note that any allocated block must be pointed to by some directory entry; thus, the information in the bitmap can always be reliably reconstructed.)