- 3
- 0
- 约3.35千字
- 约 13页
- 2017-08-17 发布于湖北
- 举报
Nachos同步机制实习报告概要
同步机制实习报告
善良的大姐姐
2015.3.30
目录
一:总体概述 3
二:任务完成情况 3
任务完成列表(Y/N) 3
具体Exercise的完成情况 3
三:遇到的困难以及解决方法 12
四:收获及感想 12
内容五:参考文献 13
一:总体概述
Lab3首先要求阅读chos系统提供的同步机制代码即的基础上实现ock锁和管程的dition(条件变量
二:任务完成情况
任务完成列表(Y/N)
Exercise1 Exercise2 Exercise3 Exercise4 Challenge1 Challenge2 Yes Yes Yes Yes Yes Yes
具体Exercise的完成情况
Exercise1:调研
任务
调研
调研情况
Linux的同步机制包括好几层
第一层:原子操作。
以定义在linuxX.X/include/asm-i386/atomic.h文件中文件内定义了原子类型
第二层
以
第三层信号量
以
Exercise2:源代码阅读
任务
code/threads/synch.h和code/threads/synch.cc
code/threads/synchlist.h和code/threads/synchlist.cc
阅读情况
Synch.cc(h)
文件中有三个类:Semaphore, Lock, Condition。
其中Semaphore是已经编写完成的主要功能是通过一个名字和一个初始值可以初始化一个maphore。P函数的作用是:判断当前线程能否进入临界区,如果可以(即初始值≠0),则进入,且初始值减一;如果不能(即初始值=0),则将当前线程放入Semaphore的等待队列中,线程进入休眠状态。V函数的作用是:如果Semaphore的等待队列不为空,将等待队列的队头线程取出来,将其状态标识为ReadyToRun,并且初始值加1。
另外两个类是本次作业需要完成的会在之后说明
Synchlist.cc(h)
文件中包括一个
具体来说,类中有一个Append函数,用于将元素加入队列;有一个Remove函数用于将队头元素移出队列而互斥访问的实现方式为保护起来
这两个函数模拟了monitor(管程cise3:实现锁和条件变量
任务
Lock
简述
使用Semaphore作为同步原语,定义的时候创建一个初始值为1的Semaphore。对应的,Acquire函数就是执行maphore的
验证正确性:
采用基于优先级抢占式调度一个线程递归生成优先级更高的线程如果没有Lock
但若在线程一开始加上了互斥锁那么只有当当前线程运行结束后它
Condition
简述
修改情况 简单解释 新增List变量conditionlistWait函数
对传入的Lock参数执行关中断
将当前线程加入
对传入的ck参数执行
开中断lease的原因是由于管程的互斥访问性当一个线程需要
关中断如果oRun队列
开中断cast函数
关中断
将
开中断dcast函数即唤醒所有正在等待这个条件变量的线程4:实现同步互斥实例
任务
基于Nachos中的信号量、锁和条件变量,采用两种方式实现同步和互斥机制应用(其中使用条件变量实现同步互斥机制为必选题目)。具体可选择“生产者-消费者问题”、“读者-写者问题”、“哲学家就餐问题”、“睡眠理发师问题”等。(也可选择其他经典的同步互斥问题)
完成情况
基于
(基于时间片轮转调度,时间片长度随机。为了使得中断有可能在任何地方发生,在所有临界区中的代码语句后面都调用了interrupt-onetick)
修改情况isFull信号量初始值为isEmpty信号量初始值为
M1信号量
生产数组如果生产数组内元素数量达到
M1信号量用于保证生产数组的互斥访问。 Producer函数
isEmpty-P()
在
isFull-V() 由于IsEmpty信号量初始值为Consumer函数
isFull-P()
在
isEmpty-V() 由于isFull信号量在生产者生产之后会被释放,因此此时消费者可以消费。相应的,isEmpty信号量被释放,使得生产者可以继续生产。 Test_Producer函数
For循环函数_consumer函数
For循环函数0次Test函数
新生成1个生产者线程_producer函数和_consumer函数
测试结果截图
基于
修改情况:
增改测试变量和函数 简单解释 Synchlist.cc: 新增变量
ListEmpty条件变量
Full条件变量
Listcount计数值
计数值用于判断生产队列是否满了
加锁
如果生产队列满Empty条件变量
Signal listFull条件变量
解锁
如果生产队列满,则等
您可能关注的文档
- Matlab实验指导书(含答案)概要.doc
- matlab电子教案概要.ppt
- MATLAB的基本知识概要.ppt
- Matlab数据插值与拟合概要.ppt
- Matlab解非线性超定方程组-恰定方程组-欠定方程组概要.docx
- Matlab实验及答案概要.docx
- Matlab程序设计(函数)概要.ppt
- matlab第4章概要.ppt
- matlab课后习题答案概要.doc
- MBA10新产品开发概要.ppt
- (2026春新版)部编版八年级语文下册《第一单元》PPT课件.pptx
- 2018电力监控系统网络安全监测装置技术规范.docx
- 2022电力监控系统安全防护方案审核要点.docx
- 2014电力电缆光伏系统EN 50618欧标.docx
- (2026春新版)人教版二年级数学下册《第三单元 万以内数的认识》教案.docx
- (2026春新版)人教版二年级数学下册《第四单元 万以内的加法和减法》教案.docx
- (2026春新版)人教版二年级数学下册《综合与实践 时间在哪里》教案.docx
- (2026春新版)苏教版二年级数学下册《综合与实践 时间有多长》教案 .pdf
- (2026春新版)部编版三年级语文下册第3单元(教案).docx
- (2026春新版)部编版三年级语文下册第8单元(教案).docx
原创力文档

文档评论(0)