操作系统实验报告书参考模板.docx

上传人:b****8 文档编号:10218466 上传时间:2023-02-09 格式:DOCX 页数:14 大小:23.60KB
下载 相关 举报
操作系统实验报告书参考模板.docx_第1页
第1页 / 共14页
操作系统实验报告书参考模板.docx_第2页
第2页 / 共14页
操作系统实验报告书参考模板.docx_第3页
第3页 / 共14页
操作系统实验报告书参考模板.docx_第4页
第4页 / 共14页
操作系统实验报告书参考模板.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

操作系统实验报告书参考模板.docx

《操作系统实验报告书参考模板.docx》由会员分享,可在线阅读,更多相关《操作系统实验报告书参考模板.docx(14页珍藏版)》请在冰豆网上搜索。

操作系统实验报告书参考模板.docx

操作系统实验报告书参考模板

 

《操作系统原理》

实验报告书

班级:

学号:

姓名:

指导教师:

 

2011-2012学年第一学期

实验名称:

LINUX用户界面

实验时间:

年月日第周星期

一、实验目的

 

二、实验预习(预备知识的问题及回答)

1.为什么在Linux系统中,诸如光盘、U盘等要先挂载而后才能使用?

如何获得U盘的设备名?

装载点在文件系统中的位置是什么?

 

2.从虚拟机界面退出进入WindowsOS界面的操作是,从WindowsOS界面进入虚拟机界面的方法是。

3.权限的含义是什么?

如何使用数字法设定文件的权限?

 

4.什么过滤操作?

在Linux中如何实现?

 

5.在Linux中挂载u盘并能显示其文档的中文信息,所使用的挂载命令是:

6.什么是vi?

其三种操作模式的含义是什么?

给出三种工作模式间的转换图。

 

 

 

三、实验内容(包含实验所用命令或相关程序源代码)

1.shell操作命令(给出每题所用的Shell命令或命令结果)

(1)创建名为stu1、stu2的2个用户,设置密码分别为student1和student2,并将它们设为组group1中的成员。

 

(2)在每个用户的主目录下建立2个目录,分别命名为dir1和dir2。

 

 

(3)查找stu1用户主目录、下属各子目录的默认存取权限,并给出结论。

 

(4)调试pwd和cd命令,回答下列关于Linux文件系统中目录的有关问题。

用户主目录的绝对路径如何表示?

根目录如何表示?

.和..分别表示什么目录?

~表示什么目录?

⑤当前目录如何表示?

(5)新建用户stu3,设置其密码为student3,并将其设置为group2中成员。

尔后,以stu3登录,在其主目录下建立名为text的目录,在text目录下再建立名为dir1的子目录,并使其成为当前目录。

 

 

(6)使用cat>sneakers.txt命令,分析命令行catsneakers.txt的显示结果。

$cat>sneakers.txt

buysomesneakers

thengotothecoffeeshop

thenbuysomecoff

^D

$catsneakers.txt

 

(7)使用上题的方法,在dir1目录中建立home.txt文件,其内容为:

bringthecoffeehome

takeoffshoes

putonsneakers

makesomecoffee

relax!

 

(8)试写出实现下列功能的shell命令:

将home.txt文件移至其上级目录中(即text目录下)。

 

将home.txt添加到sneakers.txt尾部形成新的文件saturday.txt。

 

 

将text目录树从stu3用户主目录下移至stu2主目录下。

【使用特权用户方法】

 

【修改目录权限方法】

 

将Saturday.txt文件从stu2目录中复制到stu1目录中。

 

(9)试画出上述命令后,用户stu1、stu2和stu3主目录中的目录树(3棵子树)。

 

 

2.LinuxC程序开发

(1)编写LinuxC程序,把一个文件的内容复制到另一个文件中,即实现简单的copy功能。

要求:

程序输入的第一个参数是源文件,第二个参数是目标文件。

【源程序】

 

【运行命令】

 

 

(2)编写LinuxC程序,列出stu2主目录中的文件信息,并将其中saturday.txt文件的权限设置为文件所有者可读可写、同组用户只读、其他用户无权限。

【源程序】

 

 

【运行命令】

 

实验名称:

SHELL程序设计

实验时间:

年月日第周星期

一、实验目的

 

二、实验预习(预备知识的问题及回答)

1.Linux系统默认的shell语言是什么?

欲查看该shell的版本,应使用什么命令?

 

2.预习shell有关变量和参数的相关知识,回答下列问题。

(1)假设用户进行了如下的赋值操作:

$person=jenny

试给出下面命令的输出结果。

1)echoperson

2)echo$person

3)echo‘$person’

4)echo“$person”

(2)填充下列与环境变量、位置变量和预定义变量相关的表格。

Shell变量

定义

HOME

PATH

PWD

PS1

$0

$#

$?

$$

3.写出下列expr命令的输出:

(1)exprindex“value”‘a’

(2)expr“value”:

‘v.*u’

(3)expr“aaa”:

‘a\+’

(4)expr“aaa”:

‘a\?

(5)expr2+3

(6)expr2+3

(7)expr2\*3

(8)expr5+`expr2+3`

(9)exprlength“operatingsystem”

(10)exprsubstrlinux23

三、实验内容

1.编写Shell脚本,从命令行中接收一个二元算术表达式并计算其结果。

【源程序】

 

【运行】

 

2.编写一个以文件列表作为输入的过滤器程序,要求文件名含有以句点“.”分隔的后缀,过滤器输出每个文件的不带句点和后缀的文件名。

【源程序】

 

 

【运行】

 

3.将下面的shell脚本命名为myscript,分析其功能:

count=$#

cmd=echo

while[$count–gt0]

do

cmd="$cmd\\$$count"

count=`expr$count-1`

done

eval$cmd

【命令行输入】

chmoda+xmyscript

./myscriptfirstsecondthird

【运行结果】

 

【脚本功能分析】

 

4.设计一个程序cuts,它从标准输入读入数据,获取由第一个参数n和第二个参数m所限定范围的数据(包括这两个字符),n和m都是整数。

例如:

$cuts1114

Thisisatestofcutsprogram(输入)

test(显示结果)

【源程序】

 

实验名称:

进程控制与通信

实验时间:

年月日第周星期

一、实验目的

 

二、实验预习(预备知识的问题及回答)

1.写出下列系统调用功能:

(1)fork()用于

(2)getpid()用于

(3)wait()用于

(4)exit()用于

(5)pipe()用于

(6)signal()用于

(7)kill()用于

2.阅读fork系统调用,用伪码写出其实现流程。

3.图示pipe系统调用生成无名管道时所涉及的数据结构。

 

4.在UNIX系统中运行下面程序,最多可以产生多少个进程?

画出进程家族树。

main()

{fork();

fork();

fork();

}

 

5.下列程序运行后,a的值是多少?

main()

{inta,pid;

a=55;

pid=fork();

if (pid< 0)     {   printf("error in fork!

");

exit(0);}

elseif(pid==0){sleep(5);a=99;printf(“a=%d\n”,a);sleep(5);exit(0);}

else{sleep(7);

printf(“a=%d\n”,a);

wait(0);

}

}

三、实验内容

1.调试下面的程序,观察可能的并发结果,给出简要分析,并画出进程家族树。

#include 

#include 

#include

main ()

{intstatus;

int pid1=-1,pid2=-1,pid3=-1;

 pid1=fork();

 if (pid1 == 0)

              printf("pid1=0,my process id is %d\n",getpid());

else if (pid1 > 0)

{printf("pid1>0,my process id is %d\n",getpid());

pid2=fork();

if (pid2 == 0)

printf("pid2=0,my process id is %d\n",getpid());

else if (pid2 > 0)

printf(" pid2>0,my process id is %d\n",getpid());

}

pid3=fork();

 if (pid3 == 0)

              printf("pid3=0,pid1=%d,pid2=%d, my process id is %d\n",pid1,pid2,getpid());

 else if (pid3 > 0)

               printf("pid3>0,pid1=%d,pid2=%d,my process id is%d\n",pid1,pid2,getpid());

wait(&status);

exit(0);

}

 

2.编程实现进程间管道通信。

要求:

父子进程共享一无名管道,两个子进程作为发送方分别向管道发送一行信息,父进程先读出子进程P1发来的信息行,将其转换为大写字母输出;再读出子进程P2发来的信息行,将其转换为小写字母输出。

【源程序】

 

【运行与测试】

附加题

3.学习下面共享存储区的内容,并用共享存储区的方式实现“观察者——报告者”问题(共享的count变量存于共享存储区),并验证“与时间有关的错误”。

共享存储操作使得两个或两个以上的进程可以共用一段物理内存(一般情况下,两个进程的数据区是完全独立的,父进程用fork创建子进程后,子进程会复制父进程数据到自己的数据区)。

(1)创建共享内存

#include

intshmget(key_tkey,size_tsize,intpermflags);

参数key是共享内存的标识,size是共享内存段的最小字节数,permflags是访问权限,值的设置同semget一样。

(2)共享内存的控制

#include

intshmctl(intshmid,intcommand,structshmid_ds*shm_stat);

command可设为IPC_STAT,IPC_SET,IPC_RMID。

参数shm_stat指向存放属性的结构体,具体内容请参考手册。

(3)共享内存的附接和断开

#include

void*shmat(intshmid,constvoid*addr,intshmflags);

intshmdt(constvoid*addr);

由于两个函数需指出进程地址空间中的地址,因此比较复杂。

简化的方法是将shmat中的地址设为NULL。

【源程序】

 

 

【运行与测试】

 

实验名称:

虚拟存储

实验时间:

年月日第周星期

一、实验目的

 

二、实验预习(预备知识的问题及回答)

1.描述请求分页的地址转换过程。

2.解释FIFO页面置换算法所产生的Belady现象。

 

三、实验内容

1.计算并输出下列页面置换算法在不同内存容量(4页至32页)下的命中率.

(1)最佳置换算法(OPT)

(2)先进先出算法(FIFO)

(3)最近最久未用页面置换算法(LRU)

具体要求如下:

(1)通过随机函数产生一个指令序列,共320条指令.指令地址的生成原则如下:

1)50%的指令是顺序执行的;

2)25%的指令是均匀分布在前地址部分;

3)25%的指令是均匀分布在后地址部分;

程序中的具体实施方法是:

1)在[0,319]的指令地址之间随机选取一起点地址m;

2)顺序执行一条指令,即执行地址为m+1的指令;

3)在前地址[0,m+1]中随机执行一条指令,该指令的地址为m’;

4)顺序执行一条指令,即执行地址为m’+1的指令;

5)在后地址[m’+2,319]中随机执行一条指令;

重复上述步骤

(1)~(5),直到执行320条指令为止.

将指令序列变换成为页地址流:

设:

页面大小为1k,用户内存容量为4页逐步增加到32页,用户虚存容量为32k.

假定在用户虚存中,每页存放10条指令,即320条指令在虚存中的存放方法为:

第0条~第9条指令在第0页;

第10条~第19条指令在第1页;

……

第310条~第319条指令在第31页.

按以上方式用户指令共组成32页.据此可得出指令地址m和页面号page以及页内位移量offset之间的计算公式为:

page=m/10,offset=m%10.页地址流长度为320。

【源程序】

 

 

【运行与测试】

 

友情提示:

范文可能无法思考和涵盖全面,供参考!

最好找专业人士起草或审核后使用,感谢您的下载!

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

当前位置:首页 > 法律文书 > 辩护词

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

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