资源描述
操作系统实验报告
实验报告册
班级:
学号:
姓名:
教师: 褚华
目 录
实验阐明
重要提示
实验1 Linux(虚拟机)安装及Linux惯用命令使用
实验2 makefile编写及Linux内核编译
实验3 Linux进程和线程
实验4 同步与互斥
实验5 文献系统
实验阐明
1. 实验做为学习重要增进手段,是为了深化对理论理解,锻炼实践动手能力。
2. 实验同步也作为考核手段。
3. 实验内容会在课程进行中下达,并且会分次地、某些地被抽查。
4. 课程结束时,规定把所有实验整顿成一种完整电子文档并上交,做为最后成绩评估根据。
5. 如果有兴趣适当题目,也可自己选题目。
格式阐明
1. 本文档文献名命名为“学号-姓名”,如“13071000_小王”。
2. 留白某些局限性自己调节长度,也可加页(增长内容应在表格内)。
3. 每次实验报告都要在这个文献中(按照实验顺序依次)增长,而不是每次一种新word文献。
4. 本文档保存为doc格式( 请勿用Worddocx格式)。
重要提示:
1. 实验正文建议使用小四号或五号宋体。
2. 若附加图形,则请直接嵌入到实验手册相应位置。
3. 各实验源程序,请按实验分目录存储,如第一种实验源程序存储在目录lab1下,第二个实验源程序存储在目录lab2下等等,依次类推。
4. 可互相讨论,但禁止抄袭网络或同窗实验成果。
实验编号
1
题目
Linux(虚拟机)安装及Linux惯用命令使用
实验目
1. 安装虚拟机
2. 学习linux基本操作
实验内容
1. 安装虚拟机
2. 熟悉linux操作
报告内容规定
(1) 实现办法和思路
(2) 测试及成果
报 告 正 文
实验一:安装虚拟机
由于我始终使用linux物理机
在本系列实验中我将使用是我自己linux物理机,因此就不用安装虚拟机了
实验二:熟悉linux操作
Linux基本操作有
一:目录操作
ls pwd mkdir rmdir
其中
1. ls是查看当前目录内容
用法ls -l ls -al
2. pwd是显示当前所在目录绝对途径
用法 pwd
3. mkdir是创立一种新目录
用法mkdir dirname
4. rmdir是删除一种空目录
用法 rmdir dirname 注意dirname一定要是空目录才行
二:文献操作
touch
用法 touch filename 如果文献不存在则新建文献,否则不解决
cp
用法 cp oldfilename newfilename 拷贝oldfilename为newfilename
rm
用法 rm filename 删除filename文献
mv
用法 mv oldfilename newfilename 将oldfilename移动到newfilename
find
用法 find pathname -name filename 在pathname途径下寻找文献filename
三:文本文献查看命令
cat
用法 cat filename 查看filename文献
more
用法 more filename 也是查看filename但是不是一次将文献所有显示
less
用法 less filename
head -n n filename 查看filename文献前n行
tail
用法 tail -n n filename 查看filename文献后n行
实验编号
2
题目
makefile编写及Linux内核编译
实验目
1. 通过自己编译linux内核过程,理解并掌握linux内核编译办法,以及linux启动过程
2. 理解linuxmakefile文献编写,明白make在linux工程中重要作用
实验内容
1. 自己用源代码编译linux内核
2. 学习并熟悉linuxmakefile语法及编写办法
报告内容规定
(1) 实现办法和思路
(2) 测试及成果
报 告 正 文
内容一:编译linux内核
Ubuntu 版本号 12.04
当前linux内核版本 3.11.26
待编译内核版本 3.17.1
1. 一方面解压内核源码压缩包
2. cd进入内核源码所在目录
3. make menuconfig进入图形配备界面
4. 在图形配备界面并设立版本号
5. 执行make 进入编译环节,等待不短时间直到编译完毕
6. 执行make module进行内核模块编译
7. 执行make install安装内核
8. 执行make modules_install安装内核模块
9. 执行 sudo mkinitramfs -o /boot/initrd.img-3.17.1xianb
10. 更新grub执行update-grub2
11. 重启即可
实验编号
3
题目
Linux进程和线程
实验目
1. 通过自己动手编写进程创立等函数,理解linux中进程概念以及基本用法
2. 通过自己动手编写线程一系列函数,连接linux中线程概念以及基本用法
实验内容
1. 掌握惯用进程函数 fork wait signal pause kill exit等
2. 理解进程
3. 理解线程与进程区别和联系
4. 掌握惯用线程函数
5. 学会线程创立,同步,互斥,退出
报告内容规定
(1) 实现办法和思路
(2) 测试及成果
报 告 正 文
1. 通过几种示例程序来掌握linux进程概念以及基本进程函数
示例一:
通过这个示例进程可以懂得如何获得进程号,父进程号以及群组号
运营成果为
示例二:
通过这个例程,明白如何运用创立一种子进程,并且如何区别两个进程
同步理解了僵尸进程概念,并且懂得父进程和子进程运营顺序是不拟定,也明白了wait函数用法以及作用
运营成果如下
可以看到父子进程运营是没有特定先后顺序,而由于wait函数父进程要等待子进程结束才干结束,否则子进程也许成为僵尸进程
示例三:
运营成果如下
通过了这个程序,明白了linux如何通过注册信号句柄来实现信号机制
先通过signal函数注册句柄,但是此时句柄函数不会运营,懂得本进程接受到了在signal中指定信号才会执行该句柄函数
在本例中信号是外部键盘中断,也就是Ctrl + C
示例四:
这个示例程序也是阐明linux信号机制运作方式,
本程序通过调用fork函数,创立出一种子进程,随后在父进程中注册了一种接受SIGUSR1信号函数,usr1_handler,接着休眠,直到接受到信号
然后在子进程中使用kill函数向父进程发送一种SIGUSR1信号,唤醒父进程
随后父进程醒来,并由于wait函数等待子进程结束
运营成果如下
示例五:
本示例通过函数pthread_create()函数创立了一种线程,这个函数节后一种pthread_t线程号类型,以及函数名作为参数,执行完该函数后myThread函数就作为一种新线程开始执行了,但是要注意,线程开始要有一段时间,而不是及时结束,因此如果进程中没有用join或者sleep一段时间话,也许会看不到线程开始
实验编号
4
题目
同步与互斥
实验目
为Linux内核增长一种系统调用,并编写顾客进程程序来测试。
规定该系统调用可以完毕如下功能:
1. 该系统调用有1个int型参数,返回值为int。
2. 若参数不不大于0,则返回自己学号最后一位。如学号为13091434,则返回4。
3. 若参数不大于或等于0,则返回自己学号后三位。如学号为13091434,则返回434。
实验内容
1、 系统调用实现
2、 增长系统调用
3、 Linux内核构建
报告内容规定
(1) 实现办法和思路
(2) 测试及成果
报 告 正 文
实验编号
5
题目
文献系统
实验目
为Linux内核增长一种系统调用,并编写顾客进程程序来测试。
规定该系统调用可以完毕如下功能:
1. 该系统调用有1个int型参数,返回值为int。
2. 若参数不不大于0,则返回自己学号最后一位。如学号为13091434,则返回4。
3. 若参数不大于或等于0,则返回自己学号后三位。如学号为13091434,则返回434。
实验内容
4、 系统调用实现
5、 增长系统调用
6、 Linux内核构建
报告内容规定
(1) 实现办法和思路
(2) 测试及成果
报 告 正 文
展开阅读全文