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

操作系统实验报告线程并发拷贝程序

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

操作系统实验报告线程

并发拷贝程序

文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]

操作系统:线程(进程)并发拷贝程

附录一:程序代码 #include<> #include #include #include<> #include<> #include<> #include<>

#define PSIZE 4096 /*管道文件的大小*/ #define BSIZE 128 /*默认缓冲区的大小*/

#define NOFILE 20 /*u_ofile3575表可分配的个数*/ #define NFILE 20 /*file表可分配的个数*/ #define NPIPE 20 /*pipecb3575可分配的个数*/ /*进程的u_file表*/ int u_ofile3575[NOFILE]; /*模拟file表*/ struct {

char f_flag;/*读写标志,'w'表示写,'r'表示读*/

int f_count;/*表示此表项的状态,=0表示此表项没被使用,可分配;=1表示此表项在被使用,不可再分配*/

int f_inode;/*对应的pipecb3575表下标*/ long f_offset;/*读写指针,当前已读或已写个数*/ }file[NFILE]; /*管道控制块*/ struct {

char *p_addr;/*管道文件基地址*/ int p_size;/*管道文件大小,PSIZE*/

int p_count;/*=2表示读写都在被进行,=1表示在被读或被写,=0表示管道没被使用,可分配*/ }pipecb3575[NPIPE]; /*模拟管道文件*/ char *pfile;

/*管道的写入写出端*/ int fd[2];

/*锁机制,实现互斥*/

pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; /*进程间通信,实现同步*/

pthread_cond_t rflag = PTHREAD_COND_INITIALIZER;/*读信号量*/ pthread_cond_t wflag = PTHREAD_COND_INITIALIZER;/*写信号量*/ /*线程创建函数只能传一个参数,用结构体来封装所有参数*/ struct arg_set

{

char *fname; /*文件名*/ int f; /*传递fdp[]*/ };

/*u_ofile3575表初始化*/ int u_ofile_init3575() {

printf(\ int i;

for(i=0;i

/*创建管道*/

int pipe_simulate3575(int a[]) {

printf(\ int i;

for(i=0;i

{

if(u_ofile3575[i]==-1) {

a[0] = i;/*读*/

u_ofile3575[i] = 0;/*读端*/ break; } }

for(i;i

if(u_ofile3575[i]==-1) {

a[1] = i;/*写*/

u_ofile3575[i] = 1;/*写端*/ break; } }

if(i>=NOFILE) {

printf(\分配失败,failure to create a pipe\\n\ return -2; }

操作系统实验报告线程并发拷贝程序

操作系统实验报告线程并发拷贝程序文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]操作系统:线程(进程)并发拷贝程序附录一:程序代码#include#i
推荐度:
点击下载文档文档为doc格式
9v1ea4jg8n79c964hjsm5kaxd91bwp00kvw
领取福利

微信扫码领取福利

微信扫码分享