重庆大学操作系统实验三(线程同步)(2)

2020-04-17 05:17

生产者消费者函数:

voidtsk_producer(void*pv){ }

voidtsk_consumer(void*pv){ }

while(1) { }

task_exit(0);

sem_wait(full);//还有产品么? sem_wait(mutex); inti;

for(i=0;i<=arrayNumber-1;i++) { }

sem_signal(mutex);//让出临界区使生产与消费并行 sort_m(temp[count],arrayNumber,count*230); //冒泡排序

resetAllBK(temp[count],arrayNumber,count*230); //清空该缓冲区 count=(++count)%N;

sem_signal(empty);//消费完一个产品

temp[count][i]=array[count][i];

while(1) { }

task_exit(0);

inti=0;

srand((unsigned)time(NULL)); sem_wait(empty);//是否有空闲位置? sem_wait(mutex);

for(i=0;i<=arrayNumber-1;i++) { }

startposition=(++startposition)%N; sem_signal(mutex);

sem_signal(full);//有产品生产好

array[startposition][i]=random() 0;

draw(i*10,startposition*230,startposition*230+array[startposition][i]); DELAY(100000);

主函数:

intvalue=1;

intsetResult1=setpriority(tid_producer,2); intsetResult2=setpriority(tid_consumer,2);

inttid_producer=task_create(stack_producer+1024*1024,tsk_producer,(void*)0); inttid_consumer=task_create(stack_consumer+1024*1024,tsk_consumer,(void*)0); unsignedchar*stack_producer=(unsignedchar*)malloc(1024*1024); unsignedchar*stack_consumer=(unsignedchar*)malloc(1024*1024); initGraphics(0x0118); value=N;

empty=sem_create(value); value=0;

full=sem_create(value); mutex=sem_create(value);

五、实验结果及分析(实现的效果,包括屏幕截图、系统总体运行情况和测试情况等)

intsetResult1=setpriority(tid_producer,2); intsetResult2=setpriority(tid_consumer,2);

inttid_producer=task_create(stack_producer+1024*1024,tsk_producer,(void*)0); inttid_consumer=task_create(stack_consumer+1024*1024,tsk_consumer,(void*)0); unsignedchar*stack_producer=(unsignedchar*)malloc(1024*1024); unsignedchar*stack_consumer=(unsignedchar*)malloc(1024*1024); initGraphics(0x0118); empty=sem_create(value);

五、实验结果及分析(实现的效果,包括屏幕截图、系统总体运行情况和测试情况等)

通过互斥量保护Setpixel解决了实验二优先级调度的花屏现象 通过做本实验,我对书本上信号量概念有了实践性的理解


重庆大学操作系统实验三(线程同步)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:超声波测距实习报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: