/********************************************************************** *********************************************************************/ //splits the block at the index until it has the required size public static void SplitBlock(int index, int requiredSize) { int blockSize = buddySystem[index].GetBlockSize(); //entferne Block an Index in der Liste //Teile in zwei auf, solange bis blocksize = requiredsize entspricht while (blockSize > requiredSize) { int dummy = blockSize / 2; if (dummy >= requiredSize) { //split List <int> buddyNoList = buddySystem[index].GetBuddyNoList(); buddySystem.Remove(buddySystem[index]); BuddySystemBlock block1 = new BuddySystemBlock(dummy, 2); BuddySystemBlock block2 = new BuddySystemBlock(dummy, 1); block1.SetBuddyNoList(buddyNoList); block2.SetBuddyNoList(buddyNoList); buddySystem.Insert(index, block1); buddySystem.Insert(index, block2); } blockSize = dummy; } }