山东大学操作系统实验

课程为山东大学软件学院人工智能专业2020年大二下学期“操作系统”课程
我会根据课程进度更新,一直到2020年6月10日前更新结束


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


一. 配置问题

我的系统是Ubuntu18.04

  1. 在做实验时需要打开Windows中的docx文档
    关于Ubuntu安装WPS教程
    https://blog.csdn.net/ErMiaoYY/article/details/82782433

  2. 我的Windows一直用搜狗输入法,登录账号可以关联,而且自带的输入法不好用
    搜狗输入法下载安装教程
    https://blog.csdn.net/areigninhell/article/details/79696751#commentBox

  3. 操作系统实验需要在linux环境下采用C/C++编程
    关于C/C++的配置
    主要的是:sudo apt-get install build-essential

  4. 采用的IDE是CodeBlocks,关于CodeBlocks的使用教程
    https://blog.csdn.net/wushirenfeig/article/details/72487280#commentBox
    也使用了Geany,安装:Ubuntu软件->开发工具->Geany,点击安装

  5. 实验中的运行结果需要截屏保存,关于截屏设置,我习惯QQ的 ctr l+ alt + a
    在Ubuntu中可以自己设置
    设置 -> 设备 -> 键盘 -> 截图,找到对应的截屏方案,输入快捷键即可

二. 实验报告

分为两大部分,分别是包含5个实验的操作系统命令实验和包含10个实验的操作系统算法实验
第一部分5个实验写在一个实验报告中,第二部分每个实验都单独写一个实验报告,每个实验报告都在对应的百度网盘链接中

第一部分 操作系统命令实验

1. 系统的注册与注销
2. 文件系统主要命令
3. 进程管理主要命令
4. Shell命令控制符
5. 常用软件开发工具
链接:https://pan.baidu.com/s/19TygR5lsmRv_9u0qC_mESw
提取码:bq98
包含:9张实验截图、1份实验报告

第二部分 操作系统算法实验

注:示例实验代码为 Exp_Code_Example,独立实验代码为 Exp_Code。示例实验是老师的“实验指导书”中的示例实验,独立实验是要求做的实验

1. 进程控制实验
链接:https://pan.baidu.com/s/1YOuZESMjMRNaaRU2Mk_5aw
提取码:blzr
包含:1张实验截图、1份实验报告、完整代码(独立实验)

2. 进程通信实验
链接:https://pan.baidu.com/s/1P9Uocw8CiS39_DSYshXJtw
提取码:zhaz
包含:2张实验截图(示例实验、独立实验)、1份实验报告、完整代码(示例实验、独立实验)、ReadMe.txt
更新:很抱歉,由于实验要求没看清楚,f(x)的式子中是乘号,我在代码中写成加号,在第139行。而且在测试数据时,很意外地加号和乘号的结果是一样的,导致没有发现错误。而且,本实验最好还是用4个管道,父进程与两个子进程各两个管道,而不是像我总共用两个管道,虽然结果都是一样的,但改完后更保险一些。实验报告中的截图仍是正确的不需要更改,只需将代码由加号改为乘号。

3. 进程调度算法实验
链接:https://pan.baidu.com/s/1s45a6k_iM37Yk26ZfiRQsw
提取码:hcm3
包含:2张实验截图(示例实验、独立实验)、1份实验报告、完整代码(示例实验、独立实验)

4. 进程同步实验
链接:https://pan.baidu.com/s/1bnXTabW1Ndu5SEqQ_lHfwQ
提取码:zep7
包含:5张实验截图(示例实验、独立实验)、1份实验报告、完整代码(示例实验、独立实验)
注:运行可以按照实验截图Exp4_独立实验.png 执行,先执行"./producer 3",接着立刻执行"./producer 5",参数3和5是睡眠时间。如果只启动一个生产者,程序也会正常运行,只是这一个生产者会干两个生产者的活。启动两个生产者,就会是实验所要求的。

5. 进程互斥实验
链接:https://pan.baidu.com/s/1L45lQ1iHwdvTCXiPn47I8g
提取码:40yi
包含:3张实验截图(独立实验)、1份实验报告、完整代码(示例实验、独立实验)
注:这个实验程序还是有些问题,但少数顾客理发还是没有问题的。先运行理发店控制程序barberShop,再运行3个理发师程序hairCutter,接着运行顾客程序customer

6. 死锁问题实验
2020年6月4日左右
7. 内存页面置换算法实验
8. 磁盘移臂调度算法实验
9. 文件系统接口实验
10. 分布式系统实验(由于课程设置原因,该实验不做)

三. 推荐博客和教程

班级同学zzx小姐姐的博客操作系统实验问题解决,很不错,大家可以参考一下

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

  1. 后面的一些实验需要使用makefile
    推荐几个博客:
    Makefile入门教程
    Makefile简易教程
    Makefile教程(强烈推荐)

  2. gcc的各种参数可以参考下面的教程
    https://www.runoob.com/w3cnote/gcc-parameter-detail.html

  3. fork()和父子进程的理解
    https://blog.csdn.net/tong_xin2010/article/details/38469471?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5

  4. Linux中的fork()—子进程从哪里开始执行?(里面有关printf的问题,很不错)
    https://blog.csdn.net/koches/article/details/7787468

  5. 管道—pipe函数实例讲解
    http://control.blog.chinaunix.net/uid-28549627-id-3956896.html

  6. struct sched_param结构体结构
    https://blog.csdn.net/weixin_38239856/article/details/82117600

  7. Linux的进程优先级 (推荐)
    https://blog.csdn.net/weixin_33804582/article/details/86456030?depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1&utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1

  8. 进程优先级之getpriority系统调用
    https://blog.csdn.net/pk_20140716/article/details/77484521

  9. 进程优先级之setpriority系统调用 (只有root用户才能降低参数prio)
    https://blog.csdn.net/pk_20140716/article/details/77484691

  10. struct sembuf结构体
    https://blog.csdn.net/u013408061/article/details/77883848

  11. struct msqid_ds结构体
    https://blog.csdn.net/qq_41453285/article/details/90575054

  • 71
    点赞
  • 448
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值