绝对的物超所值,如果你还在为操作系统课程设计而头疼,这绝对是你值得下载的资料!此文档为2010年课程设计所做内容。高分通过!
1
在Windows 2000/XP环境下,使用多线程和信号量机制实现经典的读者写者问题,每个线程代表一个读者或一个写者。每个线程按相应测试数据文件的要求,进行读写操作。请用信号量机制分别实现读者优先和写者优先的读者-写者问题。 读者-写者问题的读写操作限制: (1)写-写互斥,即不能有两个写者同时进行写操作 (2)读-写互斥,即不能同时有一个读者在读,同时却有一个写者在写 (3)读-读允许,即可以有二个以上的读者同时读 读者优先的附加限制:如果一个读者申请进行读操作时已有另一读者正在进行读操作,则该读者可直接开始读操作。 写者优先的附加限制:如果一个读者申请进行读操作时已有另一写者在等待访问共享资源,则该读者必须等到没有写者处于等待状态后才能开始读操作。 运行结果显示要求:要求在每个线程创建、发出读写操作申请、开始读写操作和结束读写操作时分别显示一行提示信息,以确信所有处理都遵守相应的读写操作限制。 3 测试数据文件格式 测试数据文件包括n 行测试数据,分别描述创建的n 个线程是读者还是写者,以及读写操作的开始时间和持续时间。每行测试数据包括四个字段,各字段间用空格分隔。第一字段为一个正整数,表示线程序号。第二字段表示相应线程角色,R 表示读者是,W 表示写者。第三字段为一个正数,表示读写操作的开始时间。线程创建后,延时相应时间(单位为秒)后发出对共享资源的读写申请。第四字段为一个正数,表示读写操作的持续时间。当线程读写申请成功后,开始对共享资源的读写操作,该操作持续相应时间后结束,并释放共享资源。下面是一个测试数据文件的例子: 1 R 3 5 2 W 4 5 3 R 5 2 4 R 6 5 5 W 5.1 3
1
{ Wait(i,1,2,"第一个读者"); P(Sdoc);//锁 printf("--------------[%d]----------------缓冲区以被占用\n",i); Wait(i,1,2,".......取得缓冲区的控制权"); } V(Scnt);//读锁 V(Sr);//读写锁 Wait(i,2,5,"正在读........."); Wait(i,1,2,"读完,推出"); P(Scnt);//读锁 g_cntReader--; if(g_cntReader==0) { Wait(i,1 ,2,"最后一个读者"); printf("--------------[%d]----------------缓冲区空闲\n",i); V(Sdoc);//锁 } printf("//:%d Readers Left,[%d]is out\n",g_cntReader,i); V(Scnt);//读锁 if(g_cntReader==0)Wait(i,5,3,"读者全部读完");
2021-12-19 14:53:55 4KB 操作系统 读者写者问题 pv操作
1
c语言实现读者写者问题,操作系统课程设计专用
2021-12-15 15:24:20 5KB c语言
1
在Windows2000环境下,创建一个控制台进程,此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件(后面介绍)的要求进行读写操作。用信号量机制分别实现读者优先和写者优先问题。 读者-写者问题的读写操作限制(包括读者优先和写者优先) 1) 写-写互斥:不能有两个写者同时进行写操作 2) 读-写互斥:不能同时有一个线程在读,而另一个线程在写。 3) 读-读允许:可以有一个或多个读者在读。 读者优先的附加限制:如果读者申请进行读操作时已有另一个读者正在进行读操作,则该读者可直接开始读操作。 写者优先的附加限制:如果一个读者申请进行读操作时已有另一个写者在等待访问共享资源,则该读者必须等到没有写者处于等待状态后才能开始读操作。 运行结果显示要求:要求在每个线程创建、发出读写申请、开始读写操作和结束读写操作时分别显示一行提示信息,以确定所有处理都遵守相应的读写操作限制。
2021-12-15 00:56:58 78KB 操作系统,读者写者问题
1
用C写的进程同步与互斥,初学《操作系统》的可以看看,在控制台界面实现单个进程的生产者与消费者问题
1
利用信号量集机制解决读者-写者问题 读者—写者问题,增加了一条限制,即最多只允许RN个读者同时读。 为此,又引人了一个信号量L,并赋予其初值为RN,通过执行wait(L,1,1)操作,来控制读者的数目,每当有一个读者进入时,都要先执行wait(L,1,1)操作,使L的值减1。当有RN个读者进入读后,L便减力0,第RN+1个读者要进入读时,必然会因wait(L,1,1)操作失败而阻塞。
2021-11-28 21:07:25 6.79MB 操作系统
1
一个数据文件或者记录可被多个进程(或线程)共享。其中,有些进程(或线程)要求读;而另一些进程(或线程)要求能写或者修改。只要求读的进程(或线程)称为“Reader进程”,其他进程(或线程)称为“Witer进程(或线程)”。允许多个Reader进程(或线程)同时读一个共享对象,不允许一个Writer进程(或线程)和其他Reader进程(或线程)或者Writer进程(或线程)同时访问共享对象。所谓读者—写者问题是指保证一个Writer(或线程)进程必须与其他进程(或线程)互斥地访问共享对象的同步问题。
1
进程间的同步问题 利用互斥型信号量,实现读者-写者问题
2021-11-21 15:17:45 24KB 进程间的同步
1
这是一个关于读者写者问题的源代码!是用VC++6.0来编程实现的!
2021-11-19 20:27:39 1KB 读者写者
1