Buddy system of memory allocation
Free memory is used to maintain in linked lists, each of similar sized blocks. Every block is of size 2^k. When some memory is needed by a thread, the block part of next higher order is selected, and divided into two. Note that the two such pieces different in address only in their kth bit. Such pieces are known as buddies. When any used part is freed, the OS examines to see if its buddy is also free. If so, it is reconnected, and sends into the original free-block linked-list.