Skip to content

Latest commit

 

History

History
90 lines (55 loc) · 2.76 KB

README.md

File metadata and controls

90 lines (55 loc) · 2.76 KB

2024.9-OS

简介

本仓库用于存放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.txtexample_2.txt是用于检测功能的进程分配状态样例,文件格式如下:

  • 第一、第二行:每行一个整数,分别对应进程数$$n$$和资源种类数$$m$$
  • 第三行:$$m$$个整数,$$Available$$数组
  • $$n$$行整数,每行有$$m$$个,对应$$Max$$数组
  • $$n$$行整数,每行有$$m$$个,对应$$Allocation$$数组

主函数即为两个样例基础上进行的测试

实验四:内存管理

内容

模拟内存管理器的实现,实现内存空间的分配、释放和恢复初始化功能

提供了类命令行的操作界面

实验给定的用例定义见题目文档

实验五:文件系统

内容

设计磁盘的结构,并模拟实现输入/输出系统和文件系统;输入/输出系统包含了读写磁盘块的功能接口,文件系统包含了创建/删除、打开/关闭以及读出/写入文件等功能接口

主函数即为对各项功能的测试