操作系统上机报告.docx
西安电子科技大学计算机学院操作系统实验实验报告姓名:学号:班级:一、题目实验1:LINUX/UNIXShell部分()系统基本命令1 .登陆系统,输入whoami和pwd,确定自己的登录名和当前目录;登录名admi×x,当前目录/root2 .显示自己的注册目录?命令在哪里?a.键入echo$HoME,确认自己的主目录;主目录为/rootb.键入echo$PATH,记下自己看到的目录表;usrlibqt-3.3binusrkerberossbinusrkerberosbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/XHR6/bin:/root/binc.键入whichabed,看看得到的错误信息;usrbinwhich:noabedin(usrlibqt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/XHR6/bin:/root/bin再键入whichIs和whichvi,对比刚刚得到的结果的目录是否在a.、b.两题看到的目录表中;aliasIs=zIs-coIor=ttyzbinlsbinvi3 .Is和cd的使用:a.键入Is,Is-I,Is-a,Is-al四条命令,观察输出,说明四种不同使用方式的区别。Is:列出目录内容Is-I:以长格式详细显示文件信息Is-a:列出所有文件,包括以文件Is-al:以长格式显示当前目录下的所有文件b.利用cd转到/bin,sbin,/etc,dev,再利用Is列出各个目录的内容,如果"迷路”,可以利用pwd确定位置,或键入Cd,cd-观察效果.cd,cd的区别:cd:回到上层目录cd:可进入用户的HOME目录(二)基本操作1 .用CP将usrshare目录下的exercise子目录连同目录下的文件拷贝到自己的主目录下,然后进入自己的exercise目录.2 .输入/输出重定向和cat,more等显示命令的配合使用:a.输入cat命令列出目录下Iongtext文件中的内容;b.输入cat命令列出目录下Iongtext文件中的内容,是否发现一屏显示不完?是c.使用more命令列出Iongtext的内容:d.输入cathello.txt>hello2.txt,再输入cathello.txt>>hello2.txt,再检查hello2.txt的内容有何变化;说明>与>>的区别。>是把hello.txt的内容覆盖在hello2.txt内>>是把hello.txt的内容续写在hello2.txt内e.对比两条命令:moreIongtext和catIongtextmore,两者有何不同点?moreIongtext显示出已经显示出来的内容的百分比CatlOngteXtlmOre不显示f.执行命令echo<hello.txt,观察发生了什么?啥都没发生但如果输入echo>hello.txt文档就会被清空g.输入命令cat<<end,看看屏幕上的反应:出现>符号并可以输入文档h.设计一条命令,使该命令可以从标准输出中读入;cat<<end>hello3.txtcathello3.txt就可以看到3 .特殊字符:输入catalsoatext.txt,看看能否打开目录下的alsoatext.txt文件,若不能,该怎么办?输入cat"alsoatext.txt”(参考答案:Catalsoatext.t×t)4 .文件链接:a.用In命令为目录下的IOngteXt文件建立一个硬链接,链接名为IOngteXt2,然后把IongteXt复制一个新文件IongteXt3,用cat命令将hello,txt的内容追加到IOngteXt的末尾,再用diff命令比较Iongtext,Iongtext2和IongteXt3,看看有什么结果,特别是比较一下Iongtext和IongtextZ是否相同;Iongtext和IOngteXt2一直是相同的在Iongtext后续写hello.txt之后,Iongtext和IOngteXt2均与Iongte×t3不同了b.用In命令给IOngteXt3建立一个符号链接IongteXt4,用cat命令看看IOngteXt4;然后删去IongteXt3,再用cat命令看看IOngteXt4,是否有什么不同?没有不同c.删去Iongte×t2,看看能否用cat命令看到Iongtext?能d.试着执行ln-sabcde./nulllink,看看是否能建立文件链接.不能5 .查找命令find:用find命令查找当前目录下所有以del开头或以del结尾的文件,并将其删除,要求删除前征求用户许可.find./-namedel*rm-idel*find./(-namedel/*-o-name*del)-execrm-i;find./(-namedel/*-o-name*del)-exec-okrm;6 .文件的属性:a.用Is-I列出exercise目录下所有的文件和目录,观察其权限位;b.将hello2.txt的读权限去掉,看看还能否用cat打开该文件;不能c.将program目录的读权限去掉,看看是否能用Is命令看到其中内容?不能(三)SheIl程序设计编写一个Shell过程完成如下功能:1 .合并两个$1、$2文件为$3,并显示。2 .如果缺少$3,那么先报告缺少$3,将合并后的内容输出到CHENG.TXT,显示。3 .如果缺少$2、$3那么先报告缺少$2、$3,只显示$1的内容。iftest-f"$3"thencat$1$2>$3cat$3elseiftest-f"$2"thenecho"$3isnotafileornotinthisdirectory"cat$l$2>CHENG.TXTcatCHENG.TXTelseecho"Neither$2or$3isafileorinthisdirectory"cat$1fifi实验2:实验题目进程的建立实验目的创建进程及子进程在父子进程间实现进程通信实验软硬件环境Linux、WindoWS98、WindowsZOOO实验内容创建进程并显示标识等进程控制块的属性信息:显示父子进程的通信信息和相应的应答信息。(进程间通信机制任选)实验步骤创建进程;显示进程状态信息;实现父子进程通信;考核指标显示创建的进程及控制块参数;显示进程间关系参数源程序:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/wait.h>#include<fcntl.h>#defineBUFFERSIZE32intmain()pid_tpid;intstatus;intfd2;charbufBUFFERSIZE="Thisisapipen"if(pipe(fd)<O)printf("pipeerrorn");exit(l);pid=fork();if(pid<O)printf("forkerrotn");e×it(l);)if(pid=O)printf(,childprocess:n");/childprocessprintf("pid=%dn",getpid();printf(',ppid=%dn"zgetppid();printf("gid=%dn",getgid();printf("write:%sn",buf);close(fd0);/closewritewrite(fdlzbufzsizeof(buf)writeexit;else/parenrprocessif(pid!=wait(&status)printf("waiterrorn");)printf(,parentprocess:n");printf("pid=%dn",getpid();printf("ppid=%dn"zgetppid();printf("gid=%dn"zgetgid();实验题目进程间的同步实验目的理解进程同步和互斥模型及其应用实验软硬件环境Linux、Windows98>Windows2000实验内容利用通信API实现进程之间的同步:建立司机和售票员进程;并实现他们间的同步运行。实验步骤创建进程;实现同步操作或函数;实现公共汽车司机和售票员开关车门及行车运行过程的同步模型;显示同步运行的结果。考核指标显示司机和售票员进程的同步运行轨迹。司机进程代码:#include<systypes.h>include<stdlib.h>#include<unistd.h>#include<sysipc.h>include<sysshm.h>include<stdio.h>#include<semaphore.h>include<systypes.h>#include<sysstat.h>#include<fcntl.h>charSEM_NAMEl="sl"inti;sem_t*sl;sem_t*s2;si=Sem_oPen(SEM_NAMEl,O_CREA10644,0);if(sl=SEM_FAILED)(perror("unabletocreatesemaphore");sem_unlink(sl);exit(-l);)s2=Sem_oPen(SEM_NAME2,CLCREA7;0644,0);if(s2=SEM_FAILED)perror("unabletocreatesemaphore");sem_unlink(s2);exit(-l);)for(i=0;i<=2;i+)printf("driverreachstation,stopcarn");sem_post(s2);printf("driverwaitingclosingdoorn");sem_wait(sl);printf("driverleavingstationn");printf("carisrunningn");)seep(2);sem_close(sl);sem_close(s2);sem_unlink(SEM_NAMEl);sem_unlink(SEM_NAME2);.exit(O);)售票员进程代码:#include<systypes.h>include<sysipc.h>#include<sysshm.h>include<unistd.h>/include<stdlib.h>#include<stdio.h>#include<semaphore.h>include<systypes.h>inclu