源文件见百度网盘“机试真题”文件夹
【问题1】
【问题描述】在操作系统中,空闲存储空间通常以空闲块链表方式组织,每个块包含块起始位置、块长度及一个指向下一块的指针。空闲块按照存储位置升序组织,最后一块指向第一块(构成常环链表)。当有空间申请请求时,按照如下原则在空闲块循环链表中寻找并分配空闲块:
1、从当前位置开始遍历空闲块链表(初始是从地址最小的第一个空闲块开始),寻找满足条件的最小块(即:大于等于请求空间的最小空闲块,如果有多个大小相同的最小空闲块,则选择遍历遇到的第一个空闲块)(最佳适应原则)
2、如果选择的空闲块恰好与请求的大小相符合,则将它从链表中移除并返回给用户:这时当前位置变为移除的空间块指向的下一空闲块;
3、如果选择的空闲块大于所申请的空间大小,则将大小合适的空闲块返回给用户,剩下的部分留在空间块链表中,这时当前位置仍然为该空闲块;
4、如果找不到足够大的空闲块,则申请失败ÿ