南开大学
2013年操作系统大作业题目
1. (起评分75分)动态分区存储分配方案实现模拟练习。
假设一个系统的初始态下,可用内存空间为640K,并全部为空闲。现有下列请求序列发生,请分别用最先适应算法和最佳适应算法为作业分配和回收内存块,并编程模拟分配回收过程,程序运行时要显示出每次分配和回收后的空闲分区链的情况以及内存占用情况图(哪个作业占用、起始地址和终止地址)。
作业1申请130K
作业2申请60K
作业3申请100k
作业2释放60K
作业4申请200K
作业3释放100K
作业1释放130K
作业5申请140K
作业6申请60K
作业7申请50K
作业6释放60K
实验要求:
给出相关数据结构的定义和详细说明;
给出实现思想和设计流程;
调试完成的源程序以及适当注释;
运行结果;
最后需提交的内容包括:源程序(关键代码需要注释说明)、可运行程序、算法思路及流程图、心得体会。
编程工具及操作系统平台不限。
2、(起评分80分)写一个Linux虚拟字符设备驱动程序。
主要思想是在内核空间申请一块内存(静态或者动态内存),并假设它是一个字符设备。通过编写相应的驱动函数来操作这个“虚拟字符设备”。这样就可以避免与硬件相关的具体细节,达到简化程序编写的目的。主要要实现的目标如下:
实现对该“虚拟字符设备”read、write、ioctl(清零命令)等基本操作
要求实现基本的并发控制, 实现异步IO。
通过模块加载的方式添加该模块到内核中
要求在Linux或Unix操作系统平台下用C语言实现。
要求详细的代码注释、设计文档、编译运行方式、运行平台、对该驱动程序的测试方式、你的测试用例
可附加你的对内核编程的心得体会。
3、(起评分85分)编写虚拟文件管理系统。
通过一个文件或者内存空间来虚拟一块“硬盘”,给这个“硬盘”编写一个虚拟文件系统,虚拟linux/unix文件系统的操作和管理。进一步熟悉操作系统中文件系统部分的原理以及linux/unix文件系统的管理方式。