没有合适的资源?快使用搜索试试~ 我知道了~
操作系统课程设计高分大作业(97分),共25页word版本
需积分: 5 1 下载量 33 浏览量
2023-03-30
11:11:46
上传
评论
收藏 13.5MB DOC 举报
温馨提示
试读
27页
文档部分实验结果进行了适当涂鸦以遮挡个人信息,详细介绍请参考https://blog.csdn.net/m0_47744782/article/details/127436900?spm=1001.2014.3001.5501 实验1:螺旋矩阵实验 —— Linux下的C编程 实验2:内核定制实验 —— FloppyLinux的实现 实验3:脚本编写实验 —— 批量建立和删除用户 实验4:驱动程序实验 —— 实现驱动程序插入内核并调用 实验5:进程界面实验 —— 进程创建、管道和Ncurse 实验6:线程操作实验 —— 警察小偷的PV操作 实验7:线程操作实验 —— 哲学家进餐的资源竞争 实验8:系统调用实验 —— 创建系统调用 实验9:终端编写实验 —— 模拟终端shell
资源推荐
资源详情
资源评论
操作系统课程设计
设计报告
姓名 XX
班级 XXXXXXXXXXXXX
学号 XXXXXXXX
1
2
3
4
5
6
7
8
9
螺旋
Matrix
Floppy
Linux
用户脚本
驱动
Driver
进程界面
Ncurse
线程
警察小偷
线程
哲学家
系统
调用
Shell
编写
评语
成绩
97
XXXXXXXXXXXXXXXXX
XXXX 年 XX 月 XX 日
2
要求(本页打印):
1、 双面打印,内容禁止贴全部程序,只贴关键代码即可。
2、 禁止抄袭
3、 实验列表如下:
实验 1:螺旋矩阵实验 —— Linux 下的 C 编程
实验 2:内核定制实验 —— FloppyLinux 的实现
实验 3:脚本编写实验 —— 批量建立和删除用户
实验 4:驱动程序实验 —— 实现驱动程序插入内核并调用
实验 5:进程界面实验 —— 进程创建、管道和 Ncurse
实验 6:线程操作实验 —— 警察小偷的 PV 操作
实验 7:线程操作实验 —— 哲学家进餐的资源竞争
实验 8:系统调用实验 —— 创建系统调用
实验 9:终端编写实验 —— 模拟终端 shell
4、 每个实验要求格式如下(内容使用 5 号字):
实验:实验题目
一、 实验情景描述
二、 实验原理
三、 关键代码(包括截图)
四、 实验结果及说明总结
3
实验 1:Linux 下的 C 编程
一、实验情景描述
构造一个呈螺旋状的矩阵,以字母形式表现,从第一行开始依次从 A 开始,向右不断变大,直至到最
后一列后向下方向继续变大,紧接向左变大,向上变大,如此循环,要求输入矩阵的行数 M 和列数 N,输
出 M*N 的螺旋矩阵。
二、实验原理
首先需要将 M*N 矩阵的第一层赋值,然后循环到每一层,直至到达最后一行,或者一列限制条件为
止。同时也要对赋值的字母进行判断,如果前一个值为 Z,那么接下来的值要从 A 继续开始。
三、关键代码(包括截图)
(1)关键代码如下:
①luoxuan.c 代码:
1. void RataterArray(int array[M][M],int rows,int cols){
2. int regcount=rows%2==0?rows/2:(rows+1)/2;
3. int seedNum=1;
4. int i,row,col;
5. for(i=0; i<regcount; i++){
6. for(row=0; row<rows; row++){
7. for(col=0; col<cols; col++){
8. if(row==i&&array[row][col]==-1){
9. array[row][col]=seedNum-i+col;}
10. if(col==(cols-i-1)&&array[row][col]==-1){
11. array[row][col]=seedNum+(rows-2*i)+(cols-2*i)-2-(rows-i-1-row);}
12. if(row==(rows-1-i)&&array[row][col]==-1){
13. array[row][col]=seedNum+(rows-2*i)+(cols-2*i)-2+(cols-i-1-col);}
14. if(col==i&&array[row][col]==-1){
15. array[row][col]=seedNum+(rows-2*i)+(cols-2*i)-2+(cols-i*2)-1+(rows-i-1
-row);}}}
16. seedNum=(rows-2*i+cols-2*i)*2-4+seedNum; }
17. }
②Makefile 代码:
1. CC=gcc
2. EXEC=luoxuan
3. OBJS=luoxuan.o
4. all:${EXEC}
5. $(EXEC):$(OBJS)
6. $(CC) -o $@ $(OBJS)
7. clean:
8. -rm -f ${EXEC} $(OBJS)
4
(2)代码截图如下:
①luoxuan.c 代码截图:
②Makefile 代码截图:
四、实验结果及说明总结
实验结果如下图所示: 输入矩阵的行数为 4, 列数为 6
通过这个实验,首先就是更加对螺旋矩阵有了认识,另外就是让我对 Linux 下的编辑环境更加熟悉,
使用 gedit 编辑器来写代码,然后再用 gcc 编译器进行编译。再有就是对 Linux 系统中的 Makefile 有了一定
的了解,使用 Makefile 文件能够让我们更加便捷地进行代码的调试编译,只需要 make 命令就可以编译
出.o 文件以及可执行文件,通过 make clean 命令就可以直接再将这两个文件很快地删除,十分的方便快捷。
5
实验 2:FloppyLinux 的实现
一、实验情景描述
初始化 Linux 内核,掌握 Linux 内核的基本特征如内核空间,用户空间,目录等基本概念,掌握 Linux
内核配置命令以及详细的编译步骤等,熟悉 Busybox 的使用。
二、实验原理
使用软盘进行 GRUB 配置,之后使用 make menuconfig 进行内核配置,之后使用 Busybox 编译生成一
个新的根文件系统,把这些整合到软盘中完成 FloppyLinux。
三、关键代码(包括截图)
(1)使用 UltraISO 软件将 busybox-1.00.tar.bz2 文件做成 busybox.iso 映像文件,然后挂载到虚拟机中。
(2)创建一个新的软盘
(3)在软盘上安装引导器
1. [root@xxxxxxxxxxxxxxxxxx root]#mke2fs /dev/fd0
2. [root@xxxxxxxxxxxxxxxxxx root]#mount /dev/fd0 /mnt/floppy
3. [root@xxxxxxxxxxxxxxxxxx root]# cd /mnt/floppy/
4. [root@xxxxxxxxxxxxxxxxxx floppy]# mkdir boot
5. [root@xxxxxxxxxxxxxxxxxx floppy]# mkdir boot/grub
6. [root@xxxxxxxxxxxxxxxxxx floppy]# cp /boot/grub/stage1 /mnt/floppy/boot/grub/
7. [root@xxxxxxxxxxxxxxxxxx floppy]# cp /boot/grub/stage2 /mnt/floppy/boot/grub/
8. [root@xxxxxxxxxxxxxxxxxx floppy]# ls boot/grub/
(4)配置 busybox 相关选项
1. [root@xxxxxxxxxxxxxxxxxx floppylinux]# cd busybox-1.00
2. [root@xxxxxxxxxxxxxxxxxx busybox-1.00]# pwd
3. [root@xxxxxxxxxxxxxxxxxx busybox-1.00]# make menuconfig
剩余26页未读,继续阅读
资源评论
Dululuya
- 粉丝: 34
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功