自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

转载 死锁

产生死锁的原因:一是系统提供的资源数量有限,不能满足每个进程的使用;二是多道程序运行时,进程推进顺序不合理。产生死锁的必要条件是:1、互斥条件;2、不可剥夺条件(不可抢占);3、部分分配;4、循环等待。根据产生死锁的四个必要条件,只要使其中之一不能成立,死锁就不会出现。为此,可以采取下列三种预防措施: 1、采用资源静态分配策略,破坏"部分分配"条件; 2、允许进程剥夺使用其他进程占有的资源,从而破坏"不可剥夺"条件; 3、采用资源有序分配法,破坏"环路"条件。死锁的避免不严格地限

2011-03-21 23:19:00 626

原创 linux 补充原语, 中断,软中断

解决up可能会访问一个不存在的数据结构的问题(down后释放信号量): 见深入3,page216-217.1. completion()对应up()2. wait_for_completion()对应down与信号量的不同在于, completion等待队列的自旋锁确保completion()和wait_for_completion()不会并发,而信号量用于避免down()并发执行

2011-03-21 21:58:00 1167

原创 linux 内核信号量

fastcall void __sched__down(struct semaphore * sem) 58{ 59 struct task_struct *tsk = current; 60DECLARE_WAITQUEUE(wait, tsk); 61 unsigned long flags; 62 63tsk->state = TASK_UNINTERRUPTIBLE; 64spin_lock

2011-03-20 19:19:00 1014

原创 linux rcu

<br />读写都不需要保护<br /> <br />关键在于写者会创建新的写副本, 且当所有读者都使用完当前副本, 才允许写着释放旧副本(call_rcu)。<br /> <br />规定以下变化引起静止状态结束:<br />1. process switch<br />2.user space<br />3. null loop<br />规定读者在以上状态前调用rcu_read_unlock。<br /> <br />使用范围:<br />1.rcu只保护被动态分配并通过指针引用的数据结构<br />

2011-03-20 15:13:00 647

原创 linux 顺序锁

<br />读读不阻塞,<br />读写不阻簺,<br />写写阻塞,<br /> <br />两个字段<br />1. spinlock_t 字段, 阻塞写<br />2. sequence字段,写修改, 读检查, 值等不等或者是否偶数, 不等或不为偶,重读<br /> <br /> <br />相等且旧值为偶数:无写者<br />相等但旧值为奇数:写者正在写时读取sequence值,且还在写<br />不等且旧值为偶数,新值为奇数:在写者之前,开始读, 但现在已经在写了<br />不等且旧值为偶数, 新

2011-03-20 14:49:00 839

原创 linux rw lock

并发读,读和写互斥未锁:0x01000000读:0x00ffffff,0x00fffffe.....写:0x00000000break_lock初植为0递减之前大于0,获得读锁释放读锁, 简单增加读lock记数.减0x01000000为0, 获得写锁加0x01000000,释放写锁读锁的判断是非原子性的,但是不要紧,因为这个时候写锁是被阻止的.

2011-03-19 21:31:00 731

原创 linux spin_lock

spin lock在单cpu(UP)系统上无效。在多处理器(MP), 分内核抢占和非抢占两种, BUILD_LOCK_OPS定义了抢占式内核的spin lock:1. 调用prempty_disable禁止抢占2. 调用_raw_spin_trylock(), 检查自旋锁的slock字段是否为一,并设该字段为0,如果为1,获得内核锁,否则3. 开始循环等4. 调用prempty_enable, 使能抢占5. 检查自旋锁的break_lock字段是否为1, 非, 设为1,6. 如果不能

2011-03-19 17:55:00 699

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除