1 / 13
文档名称:

nachos系统实验报告:实验三.docx

格式:docx   大小:748KB   页数:13页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

nachos系统实验报告:实验三.docx

上传人:mh900965 2017/6/24 文件大小:748 KB

下载得到文件列表

nachos系统实验报告:实验三.docx

相关文档

文档介绍

文档介绍:实验三

学会运用实验二中实现的工具来实现一些多线程并发问题。

EventBarrier:EventBarrier与某个事件相联系。事件有signaled和unsignale两种状态。线程想通过事件时必须等待事件被另外线程 signal。只有当所有进入事件的线程完成动作时发出signal的线程才将事件状态设为unsignaled
AlarmClock:AlarmClock让某个线程停止指定时间单位。当事件到达时重新将线程放入就绪队列。
Bridge:Bridge是一个单行桥且最大允许3量车在桥上行驶。实现应解决注意公平性与饥饿问题。
Elevator:实现Elevator类,并解决3个并发问题
a)一个电梯,电梯容量无限。
b)一个电梯,电梯容量有限。
c)多个电梯。

EventBarrier
enum BarrierStatus { unsignaled, signaled } ;
class EventBarrier{
public:
EventBarrier() ;
~EventBarrier() ;
void Wait() ;
void Signal() ;
plete() ;
int Waiters() ;
private:
LockO *lock ;
ConditionO *conSignal ; //用于挂起和唤醒调用Signal()函数的线程。
ConditionO *plete ; //用于挂起和唤醒完成response 而处于等待别的事件response的线程
ConditionO *conWait ; //用于挂起和唤醒那些当事件处于unsignaled而调用Wait()的线程
BarrierStatus status ; //事件状态
int waiterNum ;
};
类定义:

主要函数void EventBarrier::Complete () {
lock->Acquire() ;
waiterNum-- ;

if (waiterNum == 0) {
conSignal->Signal(lock); //通知Signal线程全部事件已处理完
}
plete->Wait(lock) ; //等待其它线程response
lock->Release();
}
void EventBarrier::Wait() {
lock->Acquire();
waiterNum++ ;
if (status == signaled) {
//处于 signaled 状态,直接return
lock->Release();
return ;
}
//处于 unsignaled 状态
//等到处于Signaled状态为止。
conWait->Wait(lock);
lock->Release();
}
void EventBarrier::Signal (){
lock->Acquire();

status = signaled ;
conWait->Broadcast(lock);
//通知所有等待Event的事件
while (waiterNum != 0){
conSignal->Wait(lock);
//当还有事件没response时挂起
}
plete->Broadcast(lock);
//通知所有等待别的线程response的线程
status = unsignaled ;
lock->Release();
}
1)Wait(): 线程挂起待事件被 signal,当事件已经处于signaled状态时直接return

2)Signal(): 线程通知所有等待事件的线程。并且挂起等待所有调用Wait()的线程 结 plete()通知此线程(包括在挂起过程中调用Wait()的线程)。

plete():当所有Wait()plete后通知Signal线程,此线程已 经完成操作,并且的等地其它线程response。


测试结果:
测试中主线程来释放Signal信号。
另4个线程做为等待线程,名字分别为 Thread 1~4。
Thread 1,2在主线程Signal之前就调用Wait()函数,Thread 3,4在事件被标志Signaled 状态时才调用Wait()。最终结果如下图所示,事件在四个线程都response自后才改变 状态,四个线程个主线程都运行正

最近更新

基于综合比较优势的湖南农业竞争力研究开题报.. 2页

基于组织层面的公司企业家精神与新产品创新绩.. 2页

基于红外测温的油页岩反应炉温度场数值仿真研.. 2页

基于粗糙集-BP神经网络的客户群服务方案构建的.. 2页

基于空间计量分析的浙江省经济空间结构研究的.. 2页

基于移动激光扫描点云的路面目标检测算法的开.. 2页

胃癌外科学课件 47页

基于社交网络和信任模型的推荐系统的研究与实.. 2页

基于矿产资源价值最大化的最优开采速度研究的.. 2页

肿瘤内科幻灯片 32页

2024年年度工作总结15篇(精) 58页

基于生态位理论的哈尔滨星级酒店竞争力研究的.. 2页

肾病综合症51 50页

基于特征的图像拼接技术研究的开题报告 2页

2024年年度保安工作计划集合十篇 36页

基于熵权模糊综合评价法的建设项目后评价研究.. 2页

基于热力学熵的城市快速路辅路的交通状态判别.. 2页

基于滑模变结构控制的网络化自动发电控制系统.. 2页

2024年年会活动策划方案15篇 53页

2024年年会总结发言稿精选范文三篇 6页

基于海量金融交易数据的客户交易行为挖掘与应.. 2页

2024年年中财务工作总结(通用13篇) 34页

第三单元整体教学设计-部编版语文七年级下册 12页

2023年全国高考英语新课标I和II卷听力原文 3页

初中3500常用字 26页

2023年高考物理试卷(全国二卷)(含详细解答) 25页

进口电子元器件管理办法 4页

洗衣机工作流程图与PLC接线端子图 6页

中石化油卡对账单 1页

2021年嫌疑人X的献身书评优质课件讲义 16页