通过使用一个计数器对共享资源进行访问控制,Semaphore构造器需要提供初始化的计数器(信号量)大小以及最大的计数器大小访问共享资源时,程序首先申请一个向Semaphore申请一个许可证,Semaphore的许可证计数器相应的减一,当计数器为0时,其他申请该信号量许可证的线程将被堵赛,直到先前已经...
分类:
编程语言 时间:
2014-07-31 02:22:05
阅读次数:
333
RTOS里面最常见也最核心的数据结构,双向链表实现VS 2008下可编译测试。/** @file
Copyright (c) 2008 - 2014, MX.Studio
All rights reserved.
Created by Cstyle
**/
#ifndef _LIST_H_
#define _LIST_H_
#ifdef __cplus...
分类:
其他好文 时间:
2014-07-30 20:44:44
阅读次数:
407
RTOS里面最常见的以及最核心的数据结构,队列的实现。可在VS2008 下编译测试。
/** @file
Copyright (c) 2008 - 2014, MX.Studio
All rights reserved.
Created by Cstyle
**/
#ifndef _QUEUE_H_
#define _QUEUE_H_
#ifdef ...
分类:
其他好文 时间:
2014-07-30 20:44:14
阅读次数:
344
一种动态内存管理Malloc/Free服务的链表实现 , 动态内存分配与回收服务,Malloc/Free的实现,最主要的核心内容是单向链表。其数据结构定义如下,一整段内存被SRAM或SDRAM,DRAM由系统的内存管理模块统一管理,这里主要是堆的管理:
typedef struct A_BLOCK_LINK
{
struct A_BLOCK_LINK *pxNextFre...
分类:
其他好文 时间:
2014-07-29 13:21:31
阅读次数:
433
线程同步技术:
原子锁
临界区(段)
互斥
事件
信号量(线程示例时已经使用过)
可等候定时器
使用范围:原子锁
效率: 原子锁>临界区(用户态)>互斥(内核态)
一般用临界区。
//等候多个信号
DWORD WaitForMultipleObjects(
DWORD nCount, // number of han...
分类:
编程语言 时间:
2014-07-29 13:14:26
阅读次数:
295
进程间通讯有多种方式,包括信号,管道,消息队列,信号量,共享内存,socket等1.共享内存Python可以通过mmap模块实现进程之间的共享内存mmap文件对象既像一个字符串也像一个普通文件对象。像字符串时因为我们可以改变其中的单个字符,如,obj[index] = 'a',同时我们也可以改变一小...
分类:
编程语言 时间:
2014-07-28 23:46:04
阅读次数:
349
Windows进程
进程是一个容器,包含程序执行需要的代码、数据、资源等信息,
windows进程的特点:
每个进程都有自己的ID号
每个进程都有自己的地址空间,进程之间无法访问对方的地址空间。
每个进程都有自己的安全属性
每个进程至少包含一个线程。
获取和释放环境信息
GetEnvironmentStrings
FreeEnvironmentStrings
获取或设置 本程序...
分类:
编程语言 时间:
2014-07-28 15:55:23
阅读次数:
283
1、 linux驱动分类
2、 信号量与自旋锁
3、 platform总线设备及总线设备如何编写
4、 kmalloc和vmalloc的区别
5、 module_init的级别
6、 添加驱动
7、 IIC原理,总线框架,设备编写方法,i2c_msg
8、 kernel panic
9、 USB总线,USB传输种类,urb等
10、android boot 流程...
分类:
系统相关 时间:
2014-07-27 23:43:09
阅读次数:
380
共享内存允许两个或多个进程共享一给定的存储区,因为数据不需要来回复制,所以是最快的一种进程间通信机制。共享内存可以通过mmap()映射普通文件(特殊情况下还可以采用匿名映射)机制实现,也可以通过系统V共享内存机制实现。应用接口和原理很简单,内部机制复杂。为了实现更安全通信,往往还与信号量等同步机制共同使用。下面主要介绍系统V共享内存机制,主要用到的系统API包括:
1.shmget函数:获得一个...
分类:
系统相关 时间:
2014-07-26 02:33:37
阅读次数:
317
信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。
一、信号量的分类:
在学习信号量之前,我们必须先知道——Linux提供两种信号量:
(1) 内核信号量,由内核控制路径使用。
(2) 用户态进程使用的信号量,这种信号量又分为POSI...
分类:
系统相关 时间:
2014-07-26 02:16:06
阅读次数:
303