好文档 - 专业文书写作范文服务资料分享网站

南京邮电大学操作系统实验报告

天下 分享 时间: 加入收藏 我要投稿 点赞

通过这次实验,掌握了进程的概念,明确了进程的含义,认识并了解了并发执行的实质。这次实验学会了用fork()函数创建实验,了解到进程与子进程的创建过程。另外还掌握了LINUX系统中输出流重定向的使用,将程序的输出结果输出到文件中,而不是直接显示在屏幕上。

实验名称 实验学时 试验三 进程间通信 3 实验类型 实验时间 综合 2016.6.2,2016.6.9 一、 实验目的和要求

1、掌握进程另外的创建方法。

2、熟悉进程的睡眠、同步、撤消等进程控制方法。 3、了解什么是管道。

4、熟悉UNIX/LINUX支持的管道通信方式。

二、实验环境

Windows XP + VMWare + RedHat Enterprise Linux(RHEL) 4 三、实验原理及内容

1.实验原理

编写程序实现进程的管道通信。用系统调用pipe( )建立一管道,二个子进程P1和P2分别向管道各写一句话: Child 1 is sending a message! Child 2 is sending a message!

父进程从管道中读出二个来自子进程的信息并显示(要求先接收P1,后P2)。 2.实验步骤

(1)在文本编辑器输入程序:

#include #include #include int pid1,pid2; main( ) {

int fd[2];

char outpipe[100],inpipe[100];

pipe(fd); /*创建一个管道*/ while ((pid1=fork( ))= =-1); if(pid1= =0) {

lockf(fd[1],1,0);

sprintf(outpipe,\

/*把串放入数组outpipe中*/

write(fd[1],outpipe,50); /*向管道写长为50字节的串*/ sleep(5); /*自我阻塞5秒*/ lockf(fd[1],0,0); exit(0);

}

else

{

while((pid2=fork( ))= =-1); if(pid2= =0)

{ lockf(fd[1],1,0); /*互斥*/

sprintf(outpipe,\

write(fd[1],outpipe,50); sleep(5);

lockf(fd[1],0,0);

exit(0); } else

{ wait(0); /*同步*/

read(fd[0],inpipe,50); /*从管道中读长为50字节的串*/

printf(\

wait(0);

read(fd[0],inpipe,50); printf(\

exit(0); } }

}

(2)在终端中,编译程序。 (3)输入./a.out执行程序 3、实验结果

实验输出结果如下 延迟5秒后显示

child 1 process is sending message!

再延迟5秒

child 2 process is sending message!

四、实验小结(包括问题和解决方法、心得体会、意见与建议等)

通过这次实验,熟悉了进程的睡眠、同步、撤消等进程控制方法,了解什么是管道,了解了UNIX/LINUX支持的管道通信方式。

实验名称 实验学时 实验四 文件的操作和使用 1 实验类型 实验时间 验证 2016.6.9 一、 实验目的和要求

熟悉文件系统的操作和使用方法。

二、实验环境

Windows XP + VMWare + RedHat Enterprise Linux(RHEL) 4 三、实验原理及内容

1、实验内容

设计一个程序,通过用密码字符串对文件内容进行逐字符异或操作的方法,实现对一个文件的加/解密。 2、实验步骤 (1)实验程序:

#include

int main(int argc,char *argv[]) {

FILE *fd1, *fd2, *fd3;

int n;

char jiami[4];

jiami[0]=’1’; jiami[1]=’2’; jiami[2]=’3’; jiami[3]=’4’; int k=0;

char temp;

fd1=fopen(“hello.c”,”r”); //源文件hello.c

fd2=fopen(“B13011206”,”w”); //加密后文件B13011206

while ((n=fgetc(fd1))>0) }

fclose(fd1); fclose(fd2); }

(2)打开终端,使用gcc编译,vi编译程序。生成可执行文件4。 (3)输入 ./4 hello.c aaa ,对hello.c程序加密并保存至aaa

(4)使用vi指令进入hello.c和aaa ,前者为加密前,后者为加密后程序。 3、实验结果:B13011206中的内容

_[]W]GWQ_AGPX]_\\_8_]_Q_AUW_GEV_]S_[_;[]@__R]___>J8CFX\\GR__[Q]^\\_m\\__ 8AQEGAZ___>L8 {

n=n^jiami[k]; k++; if (k>=4)

k=0;

fputc(n,fd2);

四、实验小结(包括问题和解决方法、心得体会、意见与建议等)

通过本次实验,我将课本上的理论知识应用于实践,加深了对操作系统基本概念的理解。在实验过程中,查询了不少相关资料,不断的发现问题、提出问题、解决问题。在对自己所编写的源程序段的纠错的过程中,使我更好的理解了操作系统中文件系统的理论知识。

这几次操作系统的实验让我学到很多,不仅仅是加深了我对理论知识的印象,更重要的是能够将理论知识应用于实践。希望以后的专业课程都能够开设一定的实践课程,亲自实践跟书本学习真的是完全不同的两种感受。最后,感谢老师的耐心教导和实验指导,这次实验我收获了很多。

指导教师评语 成 绩 批阅人 日 期

南京邮电大学操作系统实验报告

通过这次实验,掌握了进程的概念,明确了进程的含义,认识并了解了并发执行的实质。这次实验学会了用fork()函数创建实验,了解到进程与子进程的创建过程。另外还掌握了LINUX系统中输出流重定向的使用,将程序的输出结果输出到文件中,而不是直接显示在屏幕上。实验名称实验学时试验三进程间通信3实验类型实验时间综合2016.6.2,2016.6.9一、实验目的和要求
推荐度:
点击下载文档文档为doc格式
222tv74t832r4yi9c8hj79c964hjsm00ldr
领取福利

微信扫码领取福利

微信扫码分享