西电软院操作系统实验报告.docx

上传人:b****6 文档编号:5605458 上传时间:2022-12-28 格式:DOCX 页数:20 大小:1.42MB
下载 相关 举报
西电软院操作系统实验报告.docx_第1页
第1页 / 共20页
西电软院操作系统实验报告.docx_第2页
第2页 / 共20页
西电软院操作系统实验报告.docx_第3页
第3页 / 共20页
西电软院操作系统实验报告.docx_第4页
第4页 / 共20页
西电软院操作系统实验报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

西电软院操作系统实验报告.docx

《西电软院操作系统实验报告.docx》由会员分享,可在线阅读,更多相关《西电软院操作系统实验报告.docx(20页珍藏版)》请在冰豆网上搜索。

西电软院操作系统实验报告.docx

西电软院操作系统实验报告

 

西电软院操作系统实验报告(总23页)

操作系统实验报告

实验报告册

 

班级:

学号:

姓名:

教师:

褚华

 

实验说明

重要提示

实验1Linux(虚拟机)安装及Linux常用命令使用

实验2makefile的编写及Linux内核编译

实验3Linux的进程和线程

实验4同步与互斥

实验5文件系统

实验说明

1.实验做为学习的重要促进手段,是为了深化对理论的理解,锻炼实践动手能力。

2.实验同时也作为考核的手段。

3.实验内容会在课程进行中下达,并且会分次地、部分地被抽查。

4.课程结束时,要求把所有的实验整理成一个完整的电子文档并上交,做为最后成绩的评定依据。

5.如果有兴趣的合适的题目,也可自己选题目。

格式说明

1.本文档文件名命名为“学号-姓名”,如“_小王”。

2.留白部分不足的自己调整长度,也可加页(增加内容应在表格内)。

3.每次的实验报告都要在这个文件中(按照实验次序依次)增加,而不是每次一个新的word文件。

4.本文档保存为doc格式(请勿用Word2007的docx格式)。

重要提示:

1.实验正文建议使用小四号或五号宋体。

2.若附加图形,则请直接嵌入到实验手册相应位置。

3.各实验的源程序,请按实验分目录存放,如第一个实验的源程序存放在目录lab1下,第二个实验的源程序存放在目录lab2下等等,依次类推。

4.可互相讨论,但严禁抄袭网络或同学的实验结果。

实验编号

1

题目

Linux(虚拟机)安装及Linux常用命令使用

实验目的

1.安装虚拟机

2.学习linux基本操作

实验内容

1.安装虚拟机

2.熟悉linux操作

报告内容要求

(1)实现方法和思路

(2)测试及结果

报告正文

实验一:

安装虚拟机

由于我一直使用linux物理机

在本系列实验中我将使用的是我自己的linux物理机,所以就不用安装虚拟机了

实验二:

熟悉linux操作

Linux的基本操作有

一:

目录操作

lspwdmkdirrmdir

其中

1.ls是查看当前目录内容

使用方法ls-lls-al

2.pwd是显示当前所在目录的绝对路径

使用方法pwd

3.mkdir是创建一个新目录

使用方法mkdirdirname

4.rmdir是删除一个空目录

使用方法rmdirdirname注意dirname一定要是空目录才行

二:

文件操作

touch

使用方法touchfilename如果文件不存在则新建文件,否则不处理

cp

使用方法cpoldfilenamenewfilename拷贝oldfilename为newfilename

rm

使用方法rmfilename删除filename文件

mv

使用方法mvoldfilenamenewfilename将oldfilename移动到newfilename

find

使用方法findpathname-namefilename在pathname路径下寻找文件filename

 

三:

文本文件查看命令

cat

使用方法catfilename查看filename文件

more

使用方法morefilename也是查看filename不过不是一次将文件全部显示

less

使用方法lessfilename

head-nnfilename查看filename文件的前n行

tail

使用方法tail-nnfilename查看filename文件的后n行

 

实验编号

2

题目

makefile的编写及Linux内核编译

实验目的

1.通过自己编译linux内核的过程,理解并掌握linux内核的编译方法,以及linux启动过程

2.了解linux的makefile文件的编写,明白make在linux工程中的重要作用

实验内容

1.自己用源代码编译linux内核

2.学习并熟悉linux的makefile语法及编写方法

报告内容要求

(1)实现方法和思路

(2)测试及结果

报告正文

内容一:

编译linux内核

Ubuntu版本号

1.当前linux内核版本待编译内核版本首先解压内核源码压缩包

2.cd进入内核源码所在目录

3.makemenuconfig进入图形配置界面

4.在图形配置界面并设置版本号

5.执行make进入编译步骤,等待不短的时间直到编译完成

6.执行makemodule进行内核模块的编译

7.执行makeinstall安装内核

8.执行makemodules_install安装内核模块

9.执行sudomkinitramfs-o/boot/

更新grub执行update-grub2

10.重启即可

 

 

实验编号

3

题目

Linux的进程和线程

实验目的

1.通过自己动手编写进程创建等函数,了解linux中进程的概念以及基本使用方法

2.通过自己动手编写线程的一系列函数,连接linux中线程的概念以及基本使用方法

实验内容

1.掌握常用的进程函数forkwaitsignalpausekillexit等

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

题目

同步与互斥

实验目的

1.学习理解并发中的互斥原理

2.掌握peterson算法的原理及实现方法

3.实现生产者消费者模型

实验内容

1.实现peterson算法

2.利用peterson算法的原理,实现生产者消费者模型

报告内容要求

(1)实现方法和思路

(2)测试及结果

报告正文

一:

本实验利用软件方法实现同步互斥,也就是通过peterson算法,不通过中断等物理机制实现同步互斥

Peterson算法特点:

使用两个全局变量(flg[]和turn)

Flg[]表示哪个进程正在占用临界区及临界区的状态

Turn表示能进入临界区的进程序号。

此算法涉及两个原则:

忙则等待

空闲让进

实现代码如下

该算法满足解决临界区问题的三个必须标准:

互斥访问,进入,有限等待.互斥访问P0与P1显然不会同时在临界区:

如果进程P0在临界区内,那么或者flag[1]为假(意味着P1已经离开了它的临界区),或者turn为0(意味着P1只能在临界区外面等待,不能进入临界区).进入进入(Progress)定义为:

如果没有进程处于临界区内且有进程希望进入临界区,则只有那些不处于剩余区(remaindersection)的进程可以决定哪个进程获得进入临界区的权限,且这个决定不能无限推迟。

剩余区是指进程已经访问了临界区,并已经执行完成退出临界区的代码,即该进程当前的状态与临界区关系不大。

有限等待有限等待(Boundedwaiting)意味着一个进程在提出进入临界区请求后,只需要等待临界区被使用有上限的次数后,该进程就可以进入临界区。

即进程不论其优先级多低,不应该饿死(starvation)在该临界区入口处。

Peterson算法显然让进程等待不超过1次的临界区使用,即可获得权限进入临界区。

二:

用peterson算法生产者消费者模型

运行结果如下

可以看出在结果中,消费者必须等待生产者生产了数才能对临界区进行访问

代码中,shared_num为临界区,每次进行能存放一个数字

shared_num是自动递增的

生产者每次生产一个数字

而消费者要在生产者生产出数字后才能进行数字的读取

可以看出,即使生产者在最后sleep了一秒,消费者还是不能进行,因为此时临界区已经是空的了,消费者不能继续进行

 

实验编号

5

题目

文件系统

实验目的

1.掌握锁的结构和操作

2.掌握如何对文件进行加锁,解锁

3.学会如何协调不同进程对同一文件的互斥操作

实验内容

1.文件锁的测试

以下选做

2.获取文件的状态信息

3.创建一个带有空洞的文件

4.掌握lseek函数的用法

报告内容要求

(1)实现方法和思路

(2)测试及结果

报告正文

实验一:

文件锁的测试

实验代码如下

首先定义两个锁结构,并对其进行初始化然后fork一个子进程,接着在父进程中加上独占锁,并对文件进行写操作,同时在子进程中对文件试图进行加锁,由于父进程已经对文件上了锁,所以子进程输出文件当前正被锁住

也就是结果lockon

运行结果如下

 

实验二(选做):

创建带有空洞的文件

这个实验能够同时学习如何创建带有空洞的文件以及lseek函数的使用

程序首先创建一个空文件,然后在文件开始处写入十个字符abcdefghij

然后用lseek定位到100字符位置处(即使中间为空洞,中间被自动填充为0)

然后写入十个字符ABCDEFGHIJ

因此最后文件大小应该是110字节

如下图

命令od-c

查看文件内容如下,可以看到中间全为\0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1