【nachos】山东大学操作系统课设实验nachos系统(2):线程同步
来源:互联网 发布:淘宝客cms免费 编辑:程序博客网 时间:2024/05/23 19:18
1.观察/threads/synch.h中Semaphore的定义
2.观察/lib3/ring.h和ring.cc
可知,slot定义了一个可以存取thread_id(用来存放生产者id)和value(用于存放代表信息的数字)的结构。而Ring定义了一个可以存取slot的循环队列。
3.补全/lib3/producons.cc中的代码实现生产者消费者
大致要补充的内容可以分成四部分
①初始化信号量
简单初始化nempty,nfull,mutex三个信号量即可
nempty = new Semaphore(“emptyS”, BUFF_SIZE);
nfull = new Semaphore(“fullS”, 0);
mutex = new Semaphore(“mutex”, 1);
②创建和fork生产者消费者线程
按实验一中代码实例初始化和fork
Thread *t = new Thread(prod_names[i]);
t->Fork(Producer, i);
③生产者线程中的信号量使用
先对nempty调用P原语,对mutex调用V原语。
添加完信息后对mutex调用V原语,对nfull调用V原语。
发送信息之前要对massage->thread_id和value做合理更改
④消费者线程中的信号量使用
先对nfull调用P原语,对mutex调用V原语。
添加完信息后对mutex调用V原语,对nempty调用V原语
- 打开shell,make。
5.发现错误,原因是有头文件未包含,添加stdlib.h,unistd.h,fcntl.h后正常编译。
6../nachos -rs 10 运行程序后,发现结果如下
实验成功。
阅读全文
0 0
- 【nachos】山东大学操作系统课设实验nachos系统(2):线程同步
- 【nachos】山东大学操作系统课设实验nachos系统(1):线程初探
- 【nachos】山东大学操作系统课设实验nachos系统(4)用户程序与系统调用
- 【nachos】山东大学操作系统课设实验nachos系统(6)系统调用Exec()和Exit()
- 【nachos】山东大学操作系统课设实验nachos系统(3)扩展文件系统
- 【nachos】山东大学操作系统课设实验nachos系统(5)扩展地址空间
- Nachos操作系统课设 浅谈优先级调度
- 操作系统Nachos实验
- nachos 线程同步机制
- nachos lab3-线程同步
- Nachos系统编译和安装---操作系统高级教程实验一
- 操作系统:Nachos,java实现线程部分
- nachos操作系统-基于优先级的线程调度
- nachos操作系统初步认识
- 基于nachos系统开发的课设作业 ——Project 1 .5
- nachos线程优先级控制
- Nachos线程管理
- NACHOS 线程调度
- Bootstrap 代码片段插件--简单说
- android_easytouch(下)
- 求所有pair
- 欢迎使用CSDN-markdown编辑器
- linux网络编程之socket(五):tcp流协议产生的粘包问题和解决方案
- 【nachos】山东大学操作系统课设实验nachos系统(2):线程同步
- Echart问题
- 命令行退出和遇到的一些问题
- 基于双向链表的list
- offsetLeft与style.left的区别
- Python中的X[:,0]和X[:,1]
- Bitmap 图像解码以及缩略图生成----BitmapFactory类
- 【CF768G】The Winds of Winter 可持久化线段树 DFS序
- UVa10537 Toll! Revisited