山东大学操作系统实验
山东大学操作系统实验
**课程为山东大学软件学院人工智能专业2020年大二下学期“操作系统”课程
我会根据课程进度更新,一直到2020年6月10日前更新结束**
文章目录
“推荐博客和教程”虽然放到了最后面,是为了前面的简洁。实际上,我认为这个对于学习有很大的帮助
一. 配置问题
我的系统是Ubuntu18.04
在做实验时需要打开Windows中的docx文档
关于Ubuntu安装WPS教程
我的Windows一直用搜狗输入法,登录账号可以关联,而且自带的输入法不好用
搜狗输入法下载安装教程
操作系统实验需要在linux环境下采用C/C++编程
关于C/C++的配置
主要的是:sudo apt-get install build-essential
采用的IDE是CodeBlocks,关于CodeBlocks的使用教程
也使用了Geany,安装:Ubuntu软件->开发工具->Geany,点击安装
实验中的运行结果需要截屏保存,关于截屏设置,我习惯QQ的 ctr l+ alt + a
在Ubuntu中可以自己设置
设置 -> 设备 -> 键盘 -> 截图,找到对应的截屏方案,输入快捷键即可
二. 实验报告
分为两大部分,分别是包含5个实验的操作系统命令实验和包含10个实验的操作系统算法实验
第一部分5个实验写在一个实验报告中,第二部分每个实验都单独写一个实验报告,每个实验报告都在对应的百度网盘链接中
第一部分 操作系统命令实验
1. 系统的注册与注销
2. 文件系统主要命令
3. 进程管理主要命令
4. Shell命令控制符
5. 常用软件开发工具
链接:
提取码:bq98
包含:9张实验截图、1份实验报告
第二部分 操作系统算法实验
注:示例实验代码为 Exp_Code_Example,独立实验代码为 Exp_Code。示例实验是老师的“实验指导书”中的示例实验,独立实验是要求做的实验
1. 进程控制实验
链接:
提取码:blzr
包含:1张实验截图、1份实验报告、完整代码(独立实验)
2. 进程通信实验
链接:
提取码:zhaz
包含:2张实验截图(示例实验、独立实验)、1份实验报告、完整代码(示例实验、独立实验)、ReadMe.txt
更新:很抱歉,由于实验要求没看清楚,f(x)的式子中是乘号,我在代码中写成加号,在第139行。而且在测试数据时,很意外地加号和乘号的结果是一样的,导致没有发现错误。而且,本实验最好还是用4个管道,父进程与两个子进程各两个管道,而不是像我总共用两个管道,虽然结果都是一样的,但改完后更保险一些。实验报告中的截图仍是正确的不需要更改,只需将代码由加号改为乘号。
3. 进程调度算法实验
链接:
提取码:hcm3
包含:2张实验截图(示例实验、独立实验)、1份实验报告、完整代码(示例实验、独立实验)
4. 进程同步实验
链接:
提取码:zep7
包含:5张实验截图(示例实验、独立实验)、1份实验报告、完整代码(示例实验、独立实验)
注:运行可以按照实验截图 Exp4_独立实验.png 执行,先执行"./producer 3",接着 立刻 执行"./producer 5",参数3和5是睡眠时间。如果只启动一个生产者,程序也会正常运行,只是这一个生产者会干两个生产者的活。启动两个生产者,就会是实验所要求的。
5. 进程互斥实验
链接:
提取码:40yi
包含:3张实验截图(独立实验)、1份实验报告、完整代码(示例实验、独立实验)
注:这个实验程序还是有些问题,但少数顾客理发还是没有问题的。先运行理发店控制程序barberShop,再运行3个理发师程序hairCutter,接着运行顾客程序customer
6. 死锁问题实验
2020年6月4日左右
7. 内存页面置换算法实验
8. 磁盘移臂调度算法实验
9. 文件系统接口实验
10. 分布式系统实验(由于课程设置原因,该实验不做)
三. 推荐博客和教程
班级同学zzx小姐姐的博客 ,很不错,大家可以参考一下
下面推荐的博客和教程,我按照实验进行的时间顺序排序,都是看过的且很有收获的博客
后面的一些实验需要使用makefile
推荐几个博客:
(强烈推荐)
gcc的各种参数可以参考下面的教程
fork()和父子进程的理解
Linux中的fork()—子进程从哪里开始执行? (里面有关printf的问题,很不错)
管道—pipe函数实例讲解
struct sched_param结构体结构
Linux的进程优先级 (推荐)
进程优先级之getpriority系统调用
进程优先级之setpriority系统调用 (只有root用户才能降低参数prio)
struct sembuf结构体
struct msqid_ds结构体