西电软院操作系统实验报告_第1页
西电软院操作系统实验报告_第2页
西电软院操作系统实验报告_第3页
西电软院操作系统实验报告_第4页
西电软院操作系统实验报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统实验报告实验报告册班级: 学号: 姓名: 教师: 褚华 目 录实验说明重要提示实验1 Linux(虚拟机)安装及Linux常用命令使用实验2 makefile的编写及Linux内核编译 实验3 Linux的进程和线程实验4 同步与互斥实验5 文件系统实验说明1 实验做为学习的重要促进手段,是为了深化对理论的理解,锻炼实践动手能力。2 实验同时也作为考核的手段。3 实验内容会在课程进行中下达,并且会分次地、部分地被抽查。4 课程结束时,要求把所有的实验整理成一个完整的电子文档并上交,做为最后成绩的评定依据。5 如果有兴趣的合适的题目,也可自己选题目。格式说明1 本文档文件名命名为“学号-

2、姓名”,如“_小王”。2 留白部分不足的自己调整长度,也可加页(增加内容应在表格内)。3 每次的实验报告都要在这个文件中(按照实验次序依次)增加,而不是每次一个新的word文件。4 本文档保存为doc格式( 请勿用Word2007的docx格式)。重要提示:1 实验正文建议使用小四号或五号宋体。2 若附加图形,则请直接嵌入到实验手册相应位置。3 各实验的源程序,请按实验分目录存放,如第一个实验的源程序存放在目录lab1下,第二个实验的源程序存放在目录lab2下等等,依次类推。4 可互相讨论,但严禁抄袭网络或同学的实验结果。实验编号1题目Linux(虚拟机)安装及Linux常用命令使用实验目的1

3、. 安装虚拟机2. 学习linux基本操作实验内容1. 安装虚拟机2. 熟悉linux操作报告内容要求(1) 实现方法和思路(2) 测试及结果报 告 正 文实验一: 安装虚拟机由于我一直使用linux物理机在本系列实验中我将使用的是我自己的linux物理机,所以就不用安装虚拟机了实验二: 熟悉linux操作Linux的基本操作有一: 目录操作ls pwd mkdir rmdir其中1. ls是查看当前目录内容使用方法ls -l ls -al2. pwd是显示当前所在目录的绝对路径使用方法 pwd3. mkdir是创建一个新目录使用方法mkdir dirname4. rmdir是删除一个空目录使

4、用方法 rmdir dirname 注意dirname一定要是空目录才行二: 文件操作 touch 使用方法 touch filename 如果文件不存在则新建文件,否则不处理cp 使用方法 cp oldfilename newfilename 拷贝oldfilename为newfilenamerm 使用方法 rm filename 删除filename文件mv 使用方法 mv oldfilename newfilename 将oldfilename移动到newfilenamefind使用方法 find pathname -name filename 在pathname路径下寻找文件filen

5、ame三: 文本文件查看命令 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. 了解linux的makef

6、ile文件的编写,明白make在linux工程中的重要作用实验内容1. 自己用源代码编译linux内核2. 学习并熟悉linux的makefile语法及编写方法报告内容要求(1) 实现方法和思路(2) 测试及结果报 告 正 文内容一: 编译linux内核Ubuntu 版本号 12.04当前linux内核版本 3.11.26待编译内核版本 3.17.11. 首先解压内核源码压缩包2. cd进入内核源码所在目录3. make menuconfig进入图形配置界面4. 在图形配置界面并设置版本号5. 执行make 进入编译步骤,等待不短的时间直到编译完成6. 执行make module进行内核模块的

7、编译7. 执行make install安装内核8. 执行make modules_install安装内核模块9. 执行 sudo mkinitramfs -o /boot/initrd.img-3.17.1xianb10. 更新grub执行update-grub211. 重启即可实验编号3题目Linux的进程和线程实验目的1. 通过自己动手编写进程创建等函数,了解linux中进程的概念以及基本使用方法2. 通过自己动手编写线程的一系列函数,连接linux中线程的概念以及基本使用方法实验内容1. 掌握常用的进程函数 fork wait signal pause kill exit等2. 了解进程

8、的3. 了解线程与进程的区别和联系4. 掌握常用的线程函数5. 学会线程的创建,同步,互斥,退出报告内容要求(1) 实现方法和思路(2) 测试及结果报 告 正 文1. 通过几个示例程序来掌握linux的进程概念以及基本进程函数示例一: 通过这个示例进程可以知道如何获得进程号,父进程号以及群组号运行结果为示例二:通过这个例程,明白如何利用创建一个子进程,并且如何区分两个进程同时理解了僵尸进程的概念,并且知道父进程和子进程的运行顺序是不确定的,也明白了wait函数的使用方法以及作用运行结果如下可以看到父子进程的运行是没有特定的先后顺序的,而由于wait函数父进程要等待子进程结束才能结束,否则子进程

9、可能成为僵尸进程示例三:运行结果如下通过了这个程序,明白了linux如何通过注册信号句柄来实现信号机制先通过signal函数注册句柄,但是此时句柄函数不会运行,知道本进程接收到了在signal中指定的信号才会执行该句柄函数在本例中的信号是外部键盘中断,也就是Ctrl + C示例四:这个示例程序也是说明linux的信号机制的运作方式的,本程序通过调用fork函数,创建出一个子进程,随后在父进程中注册了一个接受SIGUSR1信号的函数,usr1_handler,接着休眠,直到接受到信号然后在子进程中使用kill函数向父进程发送一个SIGUSR1信号,唤醒父进程随后父进程醒来,并因为wait函数等待

10、子进程结束运行结果如下示例五:本示例通过函数pthread_create()函数创建了一个线程,这个函数节后一个pthread_t的线程号类型,以及函数名作为参数,执行完该函数后myThread函数就作为一个新的线程开始执行了,但是要注意,线程的开始要有一段时间,而不是立即结束,所以如果进程中没有用join或者sleep一段时间的话,可能会看不到线程的开始实验编号4题目同步与互斥实验目的1. 学习理解并发中的互斥原理2. 掌握peterson算法的原理及实现方法3. 实现生产者消费者模型实验内容1. 实现peterson算法 2. 利用peterson算法的原理,实现生产者消费者模型报告内容要

11、求(1) 实现方法和思路(2) 测试及结果报 告 正 文一: 本实验利用软件方法实现同步互斥,也就是通过peterson算法,不通过中断等物理机制实现同步互斥Peterson算法特点:使用两个全局变量(flg和turn)Flg表示哪个进程正在占用临界区及临界区的状态Turn表示能进入临界区的进程序号。此算法涉及两个原则:忙则等待空闲让进实现代码如下该算法满足解决临界区问题的三个必须标准:互斥访问, 进入, 有限等待.互斥访问P0与P1显然不会同时在临界区: 如果进程P0在临界区内,那么或者flag1为假(意味着P1已经离开了它的临界区),或者turn为0(意味着P1只能在临界区外面等待,不能进

12、入临界区).进入进入(Progress)定义为:如果没有进程处于临界区内且有进程希望进入临界区, 则只有那些不处于剩余区(remainder section)的进程可以决定哪个进程获得进入临界区的权限,且这个决定不能无限推迟。剩余区是指进程已经访问了临界区,并已经执行完成退出临界区的代码,即该进程当前的状态与临界区关系不大。有限等待有限等待(Bounded waiting)意味着一个进程在提出进入临界区请求后,只需要等待临界区被使用有上限的次数后,该进程就可以进入临界区。即进程不论其优先级多低,不应该饿死(starvation)在该临界区入口处。Peterson算法显然让进程等待不超过1次的临

13、界区使用,即可获得权限进入临界区。二: 用peterson算法生产者消费者模型运行结果如下可以看出在结果中,消费者必须等待生产者生产了数才能对临界区进行访问代码中,shared_num为临界区,每次进行能存放一个数字shared_num是自动递增的生产者每次生产一个数字而消费者要在生产者生产出数字后才能进行数字的读取可以看出,即使生产者在最后sleep了一秒,消费者还是不能进行,因为此时临界区已经是空的了,消费者不能继续进行实验编号5题目文件系统实验目的1. 掌握锁的结构和操作2. 掌握如何对文件进行加锁,解锁3. 学会如何协调不同进程对同一文件的互斥操作实验内容1. 文件锁的测试以下选做2. 获取文件的状态信息3. 创建一个带有空洞的文件4. 掌握lseek函数的用法报告内容要求(1) 实现方法和思路(2) 测试及结果报 告 正 文实验一:文件锁的测试实验代码如下首先定义两个锁结构,并对其进行初始化然后fork一个子进程,接着在父进程中加上独占锁,并对文件进行写操作,同时在子进程中对文件试图进行加锁,由于父进程已经对文件上了锁,所以子进程输出文件当前正被锁住也就是结果 lock

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论