本仓库用于存放BUPT2024年秋季学期《操作系统》课程5次实验作业源代码,另附原题目文档可供参考。
所有代码均是在Ubuntu 22.04环境下编写、编译、调试完成,推荐在Linux平台下使用gcc编译运行。
代码中各模块功能以及实验具体遵循思路请参阅注释和题目文档。
一个带有进程和资源管理模拟功能的shell终端,可通过输入指令进行交互
gcc -g process_monitor.c builtins.c shell.c -o shell.exe
cmd.txt是用于测试终端功能的命令集,可用作命令输入规范的参考
- 线程竞争状态的形成,以及基于互斥锁、Peterson方法以及信号量P/V操作的解决
- 使用信号量解决生产者/消费者问题
code
|
├── 1-competition.c // 竞争状态形成
├── 2-mutex.c // 互斥锁解决
├── 2-mutex-optimization.c // 互斥锁解决的一种优化
├── 2-peterson.c // Peterson方法解决
├── 3-pv.c // 信号量解决
├── work.h // 竞争状态部分主程序
└── 4-sem.c // 生产者/消费者问题
$ gcc -g [thread_func.c] -o [exe_name] # 将源文件名替换为竞争状态部分.c文件中的一个
$ gcc -g '4-sem.c' -o prd_csm.exe
银行家算法的实现,包括请求检查、资源预分配、安全状态检查和状态回退
example_1.txt、example_2.txt是用于检测功能的进程分配状态样例,文件格式如下:
- 第一、第二行:每行一个整数,分别对应进程数$$n$$和资源种类数$$m$$
- 第三行:$$m$$个整数,$$Available$$数组
-
$$n$$ 行整数,每行有$$m$$个,对应$$Max$$数组 -
$$n$$ 行整数,每行有$$m$$个,对应$$Allocation$$数组
主函数即为两个样例基础上进行的测试
模拟内存管理器的实现,实现内存空间的分配、释放和恢复初始化功能
提供了类命令行的操作界面
实验给定的用例定义见题目文档
设计磁盘的结构,并模拟实现输入/输出系统和文件系统;输入/输出系统包含了读写磁盘块的功能接口,文件系统包含了创建/删除、打开/关闭以及读出/写入文件等功能接口
主函数即为对各项功能的测试