lionel chang

导航

2012年11月27日 #

生产者和消费者问题

摘要: 生产者-消费者是一个典型的同步问题。生产者将生产出来的产品放到缓冲区中,消费者从缓冲区取出产品进行消费,每次只能有一个人对缓冲区进行操作。生产者生产产品时要保证缓冲区未满,消费者消费产品时要保证缓冲区未空。代码在http://files.cnblogs.com/woshizyl/producer_consumer.zip遇到的问题:1.init_MUTEX()和init_MUTEX_LOCKED编译出错解决方法:在网上查了一下这是比较早的内核版本支持的初始化方式,可分别用以下方式替换:init_MUTEX(&sem_producer)替换为:sema_init(&sem_pro 阅读全文

posted @ 2012-11-27 16:37 woshizyl 阅读(472) 评论(0) 推荐(0) 编辑

内核同步

摘要: 一.概念1.临界区:访问临界资源的代码段临界资源:可以被多个进程同时访问的资源2.竞争状态多个内核任务同时访问同一临界区的状态3.共享队列和加锁这是一种特殊的竞争状态。队列中的每个节点代表一个”请求“。有出队列和入队列两个函数对其进行操作。多个进程之间通过加锁防止竞争。4.确定保护对象<1>.不需要保护的对象: a.内核任务的局部数据 b.只被特定进程访问的数据<2>.需要加锁的对象:大多数内核数据结构都需要加锁如果有其他内核任务可以访问这些数据,那么就给这些数据加上某种形式的锁;如果其他东西能看到它,那么就要锁住它。5.死锁6.并发执行的原因<1>.中断& 阅读全文

posted @ 2012-11-27 10:35 woshizyl 阅读(212) 评论(0) 推荐(0) 编辑