武汉大学软件工程课程的三个操作系统实验,使用Java实现。
实验一:基于优先级的进程调度
模拟"使用优先数的处理器调度"。系统管理五个进程,每个进程用进程控制块(PCB)表示,包含进程名、指针、运行时间需求、优先级和状态标志(就绪或完成)。
关键算法特征:
- 进程按优先级排列在队列中
- 每个执行周期将优先级和运行时间各减1
- 每个周期选择最高优先级进程执行
- 如果运行时间仍有剩余则重新入队;否则标记为完成
实验二:内存管理
版本1:可变分区管理
使用**首次适配算法(First-Fit)**实现可变分区内存管理。系统管理128KB内存空间,使用空闲分区表跟踪可用区域。
回收时考虑四种场景:
- 仅与前面的分区合并
- 仅与后面的分区合并
- 孤立时创建新条目
- 与前后相邻分区同时合并
版本2:分页管理
使用位图表示法管理64个固定大小的块。实现页号和块号之间的转换,公式:块号 = j × 8 + i。
实验三:磁盘空间管理
模拟顺序文件的"磁盘存储空间分配和回收"。实现逻辑块号和物理磁盘地址之间的转换,使用柱面、磁道和物理记录参数。
系统管理200个柱面,每个柱面20个磁道,每个磁道6个扇区。
物理地址计算:
- 扇区 = 块号 % 6
- 磁道 = (块号 / 6) % 20
- 柱面 = (块号 / 6) / 20