操作系统第二次实验报告.docVIP

  • 200
  • 0
  • 约7.59千字
  • 约 13页
  • 2017-01-30 发布于重庆
  • 举报
操作系统第二次实验报告

操作系统进程实现文件誊抄 计算机科学与技术学院 目录 一、实验目的和要求 2 2 三、实验步骤 2 四、与分析 3 4.的 3 4.2、大文件的拷贝 4 4.3检测 5 6 5.1.并发进程 6 5.2.顺序进程 9 六、实验体会 12 一、要求1) 掌握Linux操作系统的进程创建和终止操作; 2) 利用Linux操作系统提供的信号量工具实现进程间的同步; 3) 掌握对共享内存的相关操作; 4) 基于生产者-消费者同步的原理实现双缓冲区的誊抄。 二、实验内容 任意选择一个文本文件,采用并发进程实现文件誊抄,将其复制为另一个文件。 创建get、copy、put三个进程共用两个缓冲区s、t。get进程负责不断地把原始文件内容送入缓冲区s中,copy进程负责从缓冲区s中取出上述内容复制到缓冲区t中,而put进程负责把上述内容从缓冲区t中取出复制到目标文件中,用p、v操作实现这三个进程之间的同步。 三、步骤 1、并发进程: 1)、新建一个文本文件get.txt,并在文件中写入10KB的数据; 2)、在终端中编译写好的并发进程程序文件co_pro_copy.c,输入指令:gcc co_pro_copy.c -o co_pro_copy ; 3)、编译成功后,运行生成的可执行文件co_pro_copy:./co_pro_copy ; 4)、查看程序运行的时间,并且观察是否生成了备份文件put.txt; 2、顺序进程: 1)、在终端中编译写好的并发进程程序文件pro_copy.c,输入指令:gcc pro_copy.c -o pro_copy ; 2)、编译成功后,运行生成的可执行文件pro_copy:./pro_copy ; 3)、查看程序运行的时间,并且观察是否生成了备份文件put.txt; 3、比较并发进程和顺序进程的运行时间,比较两种方式的运行速度快慢; 4、将get.txt文件中的数据加大,使get.txt文件大小达到100KB,在来比较两种方式的运行速度的快慢。 四、实验与分析 4.1、小文件的拷贝 如下图图1所示,待拷贝的小文件get.txt的大小为3.1KB。 图1 小文件大小 如下图图2所示,并发进程的文件拷贝的运行时间为1.000736s,我在程序中设置三个子进程都执行完时才结束程序,也就是设置了三个子进程都同时完成的机制。只要其中有个子进程没执行完,它就会等待1s。 顺序进程的文件拷贝运行时间为1.001154s,也是这种等待机制实现所有子进程同时完成。从中可以看出顺序进程与并发进程的时间差不多,并发进程的时间稍微比顺序进程短一点。 图2 小文件的运行时间 4.2、大文件的拷贝 如下图图3所示,待拷贝的大文件get.txt的大小为31.5KB。 图3 大文件的大小 如下图图4所示,并发进程的时间为1.006561s,顺序进程的运行时间为1.011219s, 和小文件的运行时间比较可以看到。小文件时并发进程的运行速度就比顺序进程快1.71倍,大文件时并发进程的运行速度就比顺序进程快1.56倍。 图4 大文件的运行时间 4.3、拷贝结果检测 从下图图5中可以看到待拷贝文件get.txt的内容和拷贝文件put.txt的内容一致,说明文件拷贝功能实现。 图5 拷贝结果 五、程序 并发进程源代码:************************************* *File_Name:co_pro_copy.c *Author: *Date:2013/12/22 *Function:并发进程文件的誊抄***************************************/ #includestdio.h #includestdlib.h #includestring.h #includesys/types.h #includesys/sem.h #includesys/shm.h #includesys/ipc.h #includesys/time.h #includeunistd.h const size_t CACHE_LENGTH = 1024; //采用信号灯机制实现p、v操作的数据结构和函数 union semun { int val; struct semid_ds *buf; unsigned short *array; struct seminfo *_buf; }; int P(int semid, int semnum) { struct sembuf sops = {semnum, -1, SEM_UNDO}; return (semop

文档评论(0)

1亿VIP精品文档

相关文档