《操作系统原理》实验报告材料_第1页
《操作系统原理》实验报告材料_第2页
《操作系统原理》实验报告材料_第3页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、操作系统原理实验报告书班级:学号:姓名:指导教师:2013-2014学年第二学期实验名称:LINUX 用户界面实验时间:2014年4月2_日 第1_周 星期三_一、实验目的1, 熟悉Linux字符操作界面,熟练掌握常用 Shell命 令。2, 熟悉Linux文本编辑方法,学会编辑软件 VI的使 用。3, 了解Linux编译器gcc的功能,掌握基于Linux平台的C程序的开发二、实验预习(预备知识的问题及回答)1. 为什么在Linux系统中,诸如光盘、U盘等要先挂载而后才能使用?如何获得U盘的设 备名?装载点在文件系统中的位置是什么?由于文件系统的差异, Linux在默认情况下并不支持软盘,光盘

2、,U盘,所以需要通过装在相应盘片才可以访问其中的数据装载点是挂载文件系统的目录位置2. 从虚拟机界面退出进入 Windows OS界面的操作是 Ctrl+Alt,从 Windows OS界面进入虚拟机界面的方法是鼠标点击虚拟机界面。3权限的含义是什么?如何使用数字法设定文件的权限?Linux系统中的每个文件和目录都有相应的访问许可权限,访问权限分为只读(r),可写(w)和可执行三种,有三种不同类型的用户可以对文件或者目录进行访问,分别是文件所有 者(u),同组用户(g)和其它用户(o)。所有的文件和目录都被创建他们的人所拥有。只要 你是这个文件的所有者或者你登陆为用户,你就拥有了改变所有者,群

3、组和其他人权限的权利。使用数字法改变权限:命令格式chmod权限数值文件名说明给指定文件赋予数值所规定的权限在数字设定法中,每种权限设置均可以用数值来代表,其中0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,这些值之和便可以用来设定特定权 限。4.什么过滤操作?在 Linux中如何实现?过滤操作:将一个命令的输出作为一个命令的输入Linux实现的命令格式:命令|命令5在Linux中挂载u盘并能显示其文档的中文信息,所使用的挂载命令是:Moun t/dev/sdal/m nt/usb 6.什么是vi?其三种操作模式的含义是什么?给出三种工作模式间的转换图。命令模式:vi启动后的

4、默认模式,控制光标的移动,复制删除文字,进入输入模式和末行 模式输入模式:进行文字输入末行模式:保存文件,退出VI三、实验内容(包含实验所用命令或相关程序源代码)1. shell操作命令(给出每题所用的 Shell命令或命令结果)(1 )创建名为stu1、stu2的2个用户,设置密码分别为 student1和student2 ,并将它们 设为组group1中的成员。#groupadd group1#useradd stu1 - g group1#su stulSpasswd stul回车后敲入密码 stude nt1$exit#useradd stud2 - g groupl#su stu2$

5、passwd stu2$exit(2) 在每个用户的主目录下建立2个目录,分别命名为dirl和dir2。#su stul$cd$mkdir dirl$exit#su stu2$ cd$mkdir dir2$exit(3) 查找stul用户主目录、下属各子目录的默认存取权限,并给出结论。#su stul$cd.$ls-1用户主目录权限为:drwx,即目录的用户可读,写,执行,同组和其它的用户无任何权限#su stu'$cd$ls-1Dirl目录权限为:drwxr-xr-x,即目录的用户可读,写,执行(4) 调试pwd和cd命令,回答下列关于 Linux文件系统中目录的有关问题。 用户主目

6、录的绝对路径如何表示? /home/stu1/home/stu2 根目录如何表示? root 和分别表示什么目录? 子目录,父目录 表示什么目录?用户主目录 当前目录如何表示?Cd(5) 新建用户stu3,设置其密码为student3,并将其设置为group2中成员。尔后,以stu3 登录,在其主目录下建立名为text的目录,在text目录下再建立名为 dirl的子目录,并使其成为当前目录。#groupadd group2#useradd stu3 - g group2#su stu3$passwd回车后敲入密码 student3$cd$mkdir text$mkdir dirl$cd tex

7、t/dirl(6) 使用cat>sneakers.txt命令,分析命令行cat sneakers.txt的显示结果。$ cat>s neakers.txtbuy some sn eakersthe n go to the coffee shopthe n buy some coffAD$cat sn eakers.txt从键盘中创建一个名为sn eakers.txt文件,文件内容为:buy some sn cakersThen go to the coffee shopThen buy some coff(7)使用上题的方法,在dirl目录中建立home.txt文件,其内容为:br

8、ing the coffee hometake off shoesput on sn eakersmake some coffeerelax!$cd /home/stu1/dir1$cat>home.txtBring the coffee homeTake off shoesPut on sn eakersMake some coffeeRelax!ctrl+d(8 )试写出实现下列功能的shell命令: 将home.txt文件移至其上级目录中(即 text目录下)。$mv/home.txt 将home.txt 添加到sneakers.txt尾部形成新的文件saturday.txt 。$

9、cat home.txt>>Saturday.txt 将text目录树从stu3用户主目录下移至 stu2主目录下。【使用特权用户方法】su mv/home/stu3/text/home/stu2【修改目录权限方法】#cp/home/stu3/text/home/stu2(9)试画出上述命令后,用户stu1、stu2和stu3主目录中的目录树(3棵子树)。2. Linux C程序开发(1)编写Linux C程序,把一个文件的内容复制到另一个文件中,即实现简单的copy功能。要求:程序输入的第一个参数是源文件,第二个参数是目标文件。【源程序】#in clude<sys/type

10、s.h>#in clude<dire nt.h>#in clude<stdio.h>#in clude<crr no .h>Int main (i nt argc,char *argv)FILE *in, *out;Char ch;lf(argc!=3)Printf( “ you forgot to en ter a file name' n”);Exit(0);lf(in=fopen(argv1,” r ” )=NULLPrintf( “ can nit open outfilen ” ); Exit(O);If(out=fopen(argv

11、2, ” W )=NULLPrntf( “ can not open outfile ” ); Exit(0);While(!feof(i n)fputc(i n),out);Fclose(i n);Fclose(out);【运行命令】#gcc - o test copy.c#./test file1.c file2.c文件的(2)编写Linux C程序,列出stu2主目录中的文件信息,并将其中saturday.txt权限设置为文件所有者可读可写、同组用户只读、其他用户无权限。【源程序】#in clude<sys/types.h>#in clude<dire nt.h>

12、 #in clude<stdio.h>#in clude<crr no .h>Int main (i nt argc,char *argv)DIR *dp;Struct dire nt *dirp;Int n=0;lf(arge!=2)Printf( “ a signle argement is required” );Exit(O);If(dp=ope ndir(argv1)=NULL)Printf( “cannot open%s ” ,args1);Exit(0);While(dirp=readdir(dp)!=NULL)&&(*=50)lf(n%仁

13、=O)printf(“");N+;Printf( “ %10sn” ,dirp->d_name);System( “ chmod 640/home/stu2/text/dir1/Saturday.txt【运行命令】#gcc - o test list.c#./test.home/stu2实验名称: SHELL程序设计实验时间:2014 年4_月16 _日第_9_周 星期三一、实验目的熟悉SHELL脚本编程的步骤,掌握基于Bash的Shell 脚本开发。二、实验预习(预备知识的问题及回答)1. Linux 系统默认的shell语言是什么?欲查看该shell的版本,应使用什么命令?

14、Bash shell$echo $BASH_VERSION2. 预习shell有关变量和参数的相关知识,回答下列问题。(1)假设用户进行了如下的赋值操作:$ pers on=jenny试给出下面命令的输出结果。1)echo personperson2)echo $pers onjenny3)echo $person '$person4)echo“$person ”jenny(2)填充下列与环境变量、位置变量和预定义变量相关的表格。Shell变量定义HOME保存用户注册目录的绝对路径PATH保存用冒号分割的目录路径PWD当前工作目录的据对路径名PS1主提示符,特权用户为 #,普通用户为$

15、0当前shell程序的文件名$#位置参数的个数$?前一个命令执行后返回的状态$当前进程的PID写出下列expr命令的输出:(1)expr index“ value ” a'(2)a.»exprvalue:v.*u(3)a?expraaa : a+ '(4)a?expraaa : a?'(5)expr 2+3(6)expr 2 + 3(7)expr 2 * 3(8) expr 5 + 'expr 2 + 3'(9) expr len gth“ operat ing system ”(10) expr substr linux 2 32 4 3 1

16、2+35 6 mon-nu meric argume nt 16 inu三、实验内容1 编写Shell脚本,从命令行中接收一个二元算术表达式并计算其结果。【源程序】#!/bi n/bashIftest $#=3The nCase s2 in+)let z=$1+$3;-)let z=$1-$3;/)let z=$1/$3;x|x)let z=$1*$3;*)echo” warning -$2 in valid operator!” exitEsacEcho”an swer is szElseEcho” usage-$0 value1 operator value2fi【运行】Chmod a+x

17、 jisua n./jisuan 2+3分隔的后缀,2 编写一个以文件列表作为输入的过滤器程序,要求文件名含有以句点 过滤器输出每个文件的不带句点和后缀的文件名。【源程序】Read flagWhile test “ $flag ”DoLocation=' expr $location=1'Basename= expr substr= ” $flag ”1 $location 'Echo $basec nameRead flagdone【运行】Chmod a+x letter./letter3. 将下面的shell脚本命名为myscript,分析其功能: coun t=$

18、#cmd=echowhile $count- gt 0 docmd="$cmd $cou nt"coun t='expr $co unt - 1'doneeval $cmd【命令行输入】chmod a+x myscript./myscript first sec ond third【运行结果】Third sec ond first【脚本功能分析】将命令行输入的参数倒叙显示4. 设计一个程序cuts ,它从标准输入读入数据,获取由第一个参数n和第二个参数 m所限定范围的数据(包括这两个字符),n和m都是整数。例如:$ cuts 11 14This is a t

19、est of cuts program (输入)test(显示结果)【源程序】#!/bi n/bashRead bli neEcho $aline |cut-c $1-$2实验名称:进程控制与通信实验时间:2014年4月30日第11周星期三一、实验目的1加深进程的概念理解,体会进程创建过程,经一部 认识进程的异步并发特征2,了解Linux进程通信原理3,掌握Linux进程控制和进程通信相关的系统调用二、实验预习(预备知识的问题及回答)1 写出下列系统调用功能:(1) fork ()用于创建进程(2) getpid ()用于获取当前的进程ID号(3) wait ()用于等待子进程结束(4) ex

20、it ()用于 进程自我终止(5) pipe ()用于常见无名管道(6) signal ()用于 在信号和信号处理函数之间建对应关系(7) kill ()用于发送信号给指定进程 2阅读fork系统调用,用伪码写出其实现流程。Pid=fork()If pid 为负Print当前进程是子进程Else if pid 为 0Print当前进程是父进程3图示pipe系统调用生成无名管道时所涉及的数据结构。4.在UNIX系统中运行下面程序,最多可以产生多少个进程?画出进程家族树。main () fork();fork();fork();5. 下列程序运行后,a的值是多少?main () int a,pid

21、;a=55;pid=fork();in fork !"); exit(0); “ a=%dn” ,a);sleep(5);if (pid< 0)prin tf("errorelse if(pid=0) sleep(5); a=99; printf( exit(O);else sleep(7);printf(“a=%df ,a);wait(0);a=99 a=55;最终 a=55三、实验内容1调试下面的程序,观察可能的并发结果,给出简要分析,并画出进程家族树。#in clude<uni std.h>#in clude<sys/types.h>#i

22、n clude<sys/wait.h>main () int status;int pid1=-1,pid2=-1,pid3=-1;pid 1=fork();if (pid1 =0)prin tf("pid1=0,my process id is %dn ”,getpid();elseif (pid1 >0) prin tf("pid1>0,myprocess idis%dn ”,getpid();pid2=fork();if (pid2 =0)prin tf("pid2=0, myprocess idis %dn",getpid

23、();elseif (pid2 >0)printf("pid2>0, myprocessid is%dn",getpid();pid3=fork();if (pid3 = 0)printf("pid3=0,pid1=%d,pid2=%d,my processid is%dn",pid1,pid2,getpid();elseif (pid3 > 0)prin tf("pid3>0,pid1=%d,pid2=%d,my process id is %dn”,pid1,pid2,getpid();wait(&statu

24、s);exit(0);2 编程实现进程间管道通信。要求:父子进程共享一无名管道,两个子进程作为发送方分别向管道发送一行信息,父进程先读出子进程 P1发来的信息行,将其转换为大写字母输出;再读出子进程P2发来的信息行,将其转换为小写字母输出。【源程序】Int filedes2;Char buffer80;Ma in ()Pipe(filedes);Char str180;Char str280;In t pid1,pid2,l;While(pid=fork()=-1);If(pid1=0)Lockf(filedes1,1,0);Printf( “ child1 in put Stri ng1n”

25、);Scanf( “ %s ,str1);Write(filedes1,str,sizeof(str1);Lockf(filedes1,0,0);Exit(O);ElseWhile(pid=fork()=-1)If(pid2=0)Lockf(filedes1,1,0)Printf( “ child2 in put stri ng2n” );Scanf( “ s,sM2);Write(filedes1,str2,sizeof(stru2); Lockf(fildes1,0,0);Exit(0);ElseIf(waitpid(pid1, null,O)=pid1) Read(filedes0,bu

26、ffer,80);For(i=0;i<sizeof(str1);i+)bufferi=toupper(bufferi); Printf(“ parent=child1:%sn” ,buffer);ElsePrintf( “waitpid1 error! ”); lf(waitpid(pid2,NULL,0)=pid2) Read(filees0,bufferm80);For(i=0;i<sizeof(str2);i+)Bufferi=tolower(bufferi);,buffer);Printf(“ pare nt=child2:%snElsePrintf( “ waitpid2

27、 error! ”);【运行与测试】1th ivtnlll 默* 沖 it*1 山yiCU.rrwi 申;xI IwvI ilh i>i nilf . / ic mifiiHJl itr ingli kirr yuu严诈注t Lh IdL: 1UJ£V11ehild2 呷uh t.c rl»pa fen. I-1 hi Id? w Imi!附加题3 学习下面共享存储区的内容,并用共享存储区的方式实现“观察者一一报告者”问题 (共享的count变量存于共享存储区),并验证“与时间有关的错误”。共享存储操作使得两个或两个以上的进程可以共用一段物理内存(一般情况下,两个进程

28、的数据区是完全独立的,父进程用fork创建子进程后,子进程会复制父进程数据到自己的数据区)。(1)创建共享内存#in clude<sys/shm.h>int shmget(key_t key,size_t size, int permflags);参数key是共享内存的标识,size是共享内存段的最小字节数, permflags是访问权限,值 的设置同semget 一样。(2 )共享内存的控制#in clude<sys/shm.h>int shmctl(i nt shmid, int comma nd, struct shmid_ds *shm_stat);comma

29、nd可设为IPC_STAT,IPC_SET,IPC_RMID。参数shm_stat指向存放属性的结构体,具体内容请参考手册。(3 )共享内存的附接和断开# include<sys/shm.h>void *shmat(int shmid, const void *addr, int shmflags);int shmdt(c onst void *addr);由于两个函数需指出进程地址空间中的地址,因此比较复杂。简化的方法是将shmat中的地址设为NULL【源程序】【运行与测试】实验名称:虚拟存储实验时间:2014年4月_30_日第_11_周星期三一、实验目的1, 掌握虚拟存储器的概

30、念,理解实现虚拟存储器的基 本方法2, 体会分页存储器管理中,页面置换的过程3,进一步认识多种页面置换算法的实现机制二、实验预习(预备知识的问题及回答)1 描述请求分页的地址转换过程。2.解释FIFO页面置换算法所产生的Belady现象。Belady现象是指当进程分配的内存块数增加时,进程缺页率反而上升的现象。FIFO算法在页面置换时,总是淘汰先进入主存的页面,而先进入主存的页面并不一定是以后用不到的页 面,如果这些页面以后需要访问,则将产生缺页,因此即使分配的内存块数增加,缺页率依然有可能上升,这是由于使用的页面置换算法不合理导致的三、实验内容1计算并输出下列页面置换算法在不同内存容量(4页

31、至32页)下的命中率.(1)最佳置换算法(OPT)先进先出算法(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'

32、; +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。【源程序】In t page_stream320;I

33、nt b32;Void ran ()Int in struct320;Int I,j,m,m1,m2;Sran d(getpid();1=0;While(i<320)M=ra nd()%320;In structi=m;I+; lf(m+1)<320In structi=m+1;I+;M1= read()%(m+1);In structi=m1;I+;If(m1+1)<320)In structi=m1+1;I+;M1= read()%(m+1);In structi=m1;I+;If(m1+1)<320)In structi=m1+1; I+;If(m2+2)<320)M2=m1+2+ra nd()%(320-m1-2); In structi=m2;I+;Page_streami=i nstructi/10;Int in _block(i nt page,i nt block_co unt)Int flag,k;Flag=0;For(k=0;k<

温馨提示

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

评论

0/150

提交评论