目录

山东大学操作系统实验

山东大学操作系统实验

**课程为山东大学软件学院人工智能专业2020年大二下学期“操作系统”课程

我会根据课程进度更新,一直到2020年6月10日前更新结束**

文章目录

“推荐博客和教程”虽然放到了最后面,是为了前面的简洁。实际上,我认为这个对于学习有很大的帮助


一. 配置问题

我的系统是Ubuntu18.04

  1. 在做实验时需要打开Windows中的docx文档

    关于Ubuntu安装WPS教程

  2. 我的Windows一直用搜狗输入法,登录账号可以关联,而且自带的输入法不好用

    搜狗输入法下载安装教程

  3. 操作系统实验需要在linux环境下采用C/C++编程

    关于C/C++的配置

    主要的是:sudo apt-get install build-essential

  4. 采用的IDE是CodeBlocks,关于CodeBlocks的使用教程

    也使用了Geany,安装:Ubuntu软件->开发工具->Geany,点击安装

  5. 实验中的运行结果需要截屏保存,关于截屏设置,我习惯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小姐姐的博客 ,很不错,大家可以参考一下

下面推荐的博客和教程,我按照实验进行的时间顺序排序,都是看过的且很有收获的博客

  1. 后面的一些实验需要使用makefile

    推荐几个博客:

    (强烈推荐)

  2. gcc的各种参数可以参考下面的教程

  3. fork()和父子进程的理解

  4. Linux中的fork()—子进程从哪里开始执行? (里面有关printf的问题,很不错)

  5. 管道—pipe函数实例讲解

  6. struct sched_param结构体结构

  7. Linux的进程优先级 (推荐)

  8. 进程优先级之getpriority系统调用

  9. 进程优先级之setpriority系统调用 (只有root用户才能降低参数prio)

  10. struct sembuf结构体

  11. struct msqid_ds结构体