UNIX 程序设计实验二 同步与异步write的效率比较

该实验旨在比较UNIX系统中同步与异步write的效率。程序通过不同大小的缓冲区读取文件并使用write进行写操作,利用times()函数测量write的时间。实验结果显示,通过调整缓冲区大小和同步/异步模式,可以优化文件I/O性能。
摘要由CSDN通过智能技术生成


                                     实验二同步与异步write的效率比较

一:实验目的

掌握unix的文件I/O系统调用。

二:要求

1.      实验要求程序必须指定输出的文件名,而该文件是否按同步方式打开,则是可以选择的。因此程序至少带一个,至多两个输入参数。程序默认从标准输入STDIN_FILENO读取输入文件,可以利用shell的输入定向功能选择具体的输入文件。

2.     系统调用times()的说明

#include <sys/times.h>

clock_t times(struct tms *buf);

struct tms {

       clock_ttms_utime;    /* 记录进程除系统调用外所使用的CPU时间 */

       clock_ttms_stime;    /* 记录进程的系统调用所使用的CPU时间 */

     clock_t tms_cutime; /* 记录子进程除系统调用外所使用的CPU时间 */

   clock_t tms_cstime; /* 记录子进程的系统调用所使用的CPU时间 */

};

times函数的返回值是进程迄今为止的存活时间。所有时间都是以滴答为单位的,函数sysconf(_SC_CLK_TCK)可获得所运行系统每秒的滴答数(参考课本P33)

三.设计和实现的主要原理、构思、算法、执行过程。

1.    将打开的文件的BUFFSIZE大小的块读入缓冲区,循环执行到全部读完,在每次读的过程中调用write进行写操作。

2 在每次写之前调用时间函数测量一次时间,之后再调用一次时间函数测量时间,两次时间差就是write的写时间,将其记录就得到了write写整个文件的时间。

3   每次将BUFFSIZE增大两倍,调用lseek函数使文件偏移量在整体读完一次后返回文件头。

 

四.具体的程序如下

#include "apue.h"

#include <sys/times.h>

#include <malloc.h>

#include <fcntl.h>

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值