随笔分类 -  nachos

摘要:锁:只是将原来由信号量的value改成现在的 cheld(bool) 开始用false表示没锁 接下来 Acquier()后就有锁 当release()后重新获得锁 --释放锁 其余的改变主要是条件变量是要用到 isheldbycurrenThread() 用到保存当前线程的cheldThread线程变量指针.条件变量: wait(); 直接添加进条件变量的队列 锁放开 睡觉 锁的获得(竞争锁) signal();条件变量不会向锁一样需要死循环的等到能进入缓冲区所以释放不需要改变 value与cheld的值以让别人不需要死循环或 判断是否需要执行与 判断该是否还可以执行。信号量与锁与条件变量的 阅读全文
posted @ 2012-12-05 15:58 xjx_user 阅读(319) 评论(0) 推荐(0)
摘要:nachos下的线程编程一、 实验内容本次实验的目的在于掌握使用nachos中的线程来解决较为复杂的并发问题。实验内容分三部分:实现事件栅栏原语并进行正确性测试;实现闹钟原语并进行正确性测试;利用事件栅栏和闹钟原语来解决电梯问题实现事件栅栏原语事件栅栏(EventBarrier)是一种同步机制,使用事件栅栏可以让一组线程以同步的方式等待和应答某事件(Event)。事件栅栏的调用者分为两类:或者调用Wait操作,或者调用Signal操作。使用事件栅栏,无论是Wait操作的调用者或者是Signal操作的调用者最终都将同步地通过栅栏(如果他们原先不同步,则进度较快... 阅读全文
posted @ 2012-12-05 15:53 xjx_user 阅读(1146) 评论(0) 推荐(0)
摘要:nachos下双向量表的设计(通过锁机制排除1的错误)21、理解线程并发和同步的概念2、学会实现两个常用的线程同步的机制---锁和条件变量3、学会使用锁和条件变量来确保共享变量是线程安全的二、实验内容:本次实验的目的在于将nachos中的锁机制和条件变量的实现补充完整,并利用这些同步机制实现几个基础工具类。实验内容分三部分:实现锁机制和条件变量,并利用这些同步机制将实验一中所实现双向有序链表类修改成线程安全的;实现一个线程安全的表结构;实现一个大小受限的缓冲区dllist类:#include<cstdlib>#include"dllist.h"#include& 阅读全文
posted @ 2012-12-05 15:45 xjx_user 阅读(541) 评论(0) 推荐(0)
摘要:nachos下双向量表的设计一. 实验目的本次实验的目的在于对nachos进行熟悉,并初步体验nachos下的并发程序设计。二. 实验内容安装nachos;用C++实现双向有序链表;在nachos系统中使用你所写的链表程序并演示一些并发错误三. 实验运行实例一. 实验相关步骤实验需要编写三个相关文件,它们是dllist.h、dllist.cc、dllist-driver.cc,在dllist.h定义了双向链表,即定义了两个类,element和dllist,其具体代码如下:class element{public:int key;element *prev;el... 阅读全文
posted @ 2012-12-05 15:29 xjx_user 阅读(1068) 评论(0) 推荐(0)