一、内核标志flag 在内核对象控制块中有一个标志成员flag(rt_uint8_t flag; ),这个标志在不同有内核对象中具有不同的含义。rt-thread的内核对象有定时器、线程、信号量、互斥锁、事件、邮箱、消息队列、内存堆、设备、模块,这些内核对象都继承了内核对象的成员,其中也就包含了内....
分类:
其他好文 时间:
2015-03-18 19:56:40
阅读次数:
301
1.信号量( 两个进程之间同步)
struct semaphore power_sem;
sema_init(&pdata->power_sem,1);
down(&pdata->power_sem);
up(&pdata->power_sem);
2.互斥量
struct mutex led_mutex;
mutex_init(&led_mutex);
m...
分类:
系统相关 时间:
2015-03-16 19:23:15
阅读次数:
237
linux驱动——并发和竟态序——正在运行的多个用户空间程序可能以一个令人惊讶的组合方式访问我们的代码。SMP系统甚至可能在不同的处理器上同时执行我们的代码。内核代码是可抢占的,因此我们的驱动程序代码可在任何时候丢失对处理器的独占。信号量(semaphore)的实现: 有一对..
分类:
其他好文 时间:
2015-03-16 06:30:42
阅读次数:
180
常用IPC有:1:管道2:命名管道(FIFO)3:共享存储4:套接字5:信号量6:消息队列7:信号管道 只允许亲缘进程间的通讯。命名管道(FIFO) 除了亲缘进程可以通讯外,非亲缘进程也可以通讯。共享内存 多个进程可以访问同一块内存空间,是最快的IPC方式。在进程间传递数据时无须任何内存的拷贝 。可...
分类:
系统相关 时间:
2015-03-15 18:17:54
阅读次数:
185
一、进程间的通信方式
# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
# 有名管道 (namedpipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
# 信号量(semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机...
分类:
编程语言 时间:
2015-03-12 20:52:46
阅读次数:
134
1.介绍: 1)同一主机: unix进程通信方式:无名管道,有名管道,信号 system v方式:信号量,消息队列,共享内存 2)网络通信:Socket,RPC2.管道: 无名管道(PIPE):使用一个进程的标准输出作为另一个进程的标准输入建立的一个单向管道,执行完成后消失。主要用于父...
分类:
系统相关 时间:
2015-03-11 19:07:30
阅读次数:
207
Semaphore(信号量)充当了操作系统概念下的“信号量”。它提供了“临界区中可用资源信号量”的相同功能。以一个停车场运作为例。为了简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然后放下车拦,剩下的车则必须在入口等待,此后来的车...
分类:
编程语言 时间:
2015-03-10 15:13:59
阅读次数:
121
在可剥夺性的内核中,当任务以独占方式使用共享资源的时候,会出现低优先级任务高于高优先级任务运行的情况,这种情况叫做优先级反转,对于实时操作系统而言,这是一场灾难,下面我们来说说优先级反转的典型环境. 我们假设有三个任务a,b,c,a优先级高于b,b优先级高于c,a和c都需要访问一个共享资源...
分类:
其他好文 时间:
2015-03-10 01:23:26
阅读次数:
2818
在实际的应用之中,一个任务经常需要等待多个信号量的同时生效,或者说任务需要根据多个信号量的组合作用的结果来决定任务的运行方式,为了实现这种多信号量组合的功能,ucos实现了信号量集的特殊结构. 信号量集的基础仍然是信号量,它如同一个多个信号量组成的与非门来构成逻辑结果控制任务的执行. 信号量...
分类:
其他好文 时间:
2015-03-10 01:22:26
阅读次数:
178
之前说到事件,讲了事件,信号量和互斥信号量,还有一个队列没说,今天说说队列. 队列是用在任务之间传送多个消息的时候,a任务发送消息,b任务发送消息,然后c任务可以依次去提取出b和a传递的消息,不会造成系统的阻塞,他的实现结构如下在队列的实现中,也是使用事件ecb,OSEventType为OS_EV....
分类:
其他好文 时间:
2015-03-10 01:20:40
阅读次数:
255