实验二——动态高优先权优先调度算法.doc
本实验的主要目的是让学生熟悉并掌握动态分区存储管理的各种算法,包括首次适应算法、最正确适应算法和最坏适应算法等,并且能够实现分区合并。实验要求学生使用高级语言模拟实现动态分区存储管理,包括分区的初始化、动态分配过程、分区的回收和分区的显示等多个方面。
分区的初始化是指在实验开始时,用户输入初始分区的大小,并将其初始化为一个空闲分区,起始地址为0,大小是用户输入的大小。然后,学生需要实现分区的动态分配过程,即由用户输入作业号和作业的大小,实现分区过程。在分区的动态分配过程中,需要考虑到碎片问题,即当作业结束时,释放的分区可能会产生碎片,而这些碎片可能会被重新分配,以避免内存浪费。
在分区的回收方面,学生需要实现分区的合并,即当用户输入作业号时,释放该作业所占用的分区,并将其与相邻的空闲分区合并,以减少内存碎片的影响。在分区的回收过程中,需要考虑到不存在的作业号时,给出错误提示。
分区的显示是指在任何时刻,可以查看当前存储情况,包括起始地址、大小、状态等信息。学生需要实现分区的显示功能,以便用户能够实时监控存储情况。
在实验代码中,使用了C语言实现了动态分区存储管理。定义了一个结构体subAreaNode,用于描述分区的信息,包括起始地址、大小、作业号和状态等。然后,使用malloc函数分配了初始分区存,并初始化了空闲分区链。接着,使用了 enum STATE 来描述分区的状态,即Free或Busy。使用了指针来实现分区的前向和后向指针,以便在分区的动态分配和回收过程中,能够快速地找到相应的分区。
在实验报告中,学生需要描述实验的过程、结果和分析,以及实验中遇到的问题和解决方案等。实验报告的目的是让学生能够系统化地总结和分析实验结果,并能够将实验结果与理论知识相结合,提高学生的实践能力和分析能力。
本实验旨在让学生熟悉并掌握动态分区存储管理的各种算法,并能够实现分区合并和分区的动态分配过程。通过实验,学生能够更好地理解操作系统的存储管理机制,并提高自己的实践能力和分析能力。