嵌入式Linux中的进程同步无竞争态读写

发布者:电子设计探索者最新更新时间:2012-03-29 来源: 单片机与嵌入式系统应用 关键字:嵌入式  Linux进程同步  无竞争态读写 手机看文章 扫描二维码
随时随地手机看文章

引 言
   在对实时采集更新的数据进行处理时,往往会遇到数据更新速度与数据处理的速度不匹配的问题。这种情况下,会出现数据丢失而导致数据处理结果不准确,甚至会带来不可预测的后果,因此需要一种机制来协调数据更新与数据处理,从而保证数据的完整性和处理结果的准确性。作为一个多任务、多用户操作系统,Linux 支持多个进程在系统中并发运行,由于进程本身的动态特性,用来描述实时数据处理非常合适,因此,解决好Linux进程间的同步与通信问题就能解决实时数据处理的问题。
    在Linux环境下,进程通常存在运行(running)、阻塞(blocked)、就绪(ready)、终止(terminated)四种状态。当多个进程并发执行时,往往会出现进程间的竞态。我们希望进程能协调彼此间的行为,使得一个进程只有在其他的进程执行到一个特定的点时才会执行一个动作,即控制同步;同时,当并发进程访问共享数据时不应当出现竞争条件。这一点通过在访问共享数据时执行互斥来确保,即数据访问同步。
    实现同步的基本技术是阻塞一个进程,直到一个特定条件满足为止;实现数据访问同步是通过阻塞一个进程直到另外的进程完成访问共享数据。

1 有限长度缓冲区的生产者一消费者问题模型
    当仅存在单个生产者和消费者时,生产进程和消费进程所对应的是同样的数据结构,它们共享同一个数据空间。生产进程和消费进程如何进行相互协调,使得消费进程每次使用的数据都是生产进程新生产写人的,又使生产进程新写入的数据不会覆盖还未被消费进程读出使用的数据,是该问题模型实现的关键问题。
    在生产者一消费者问题模型中,生产者进程不断生产产品并把它们放入缓冲区,消费者进程不断从缓冲区中取走产品进行消费。当缓冲区中产品已经放满时,表示生产速度高于消费速度,出现了供过于求,此时生产者必须等待产品被消费;当缓冲区为空时,表示消费速度高于生产速度,出现了供不应求,此时消费者进程必须等待产品的生产。生产和消费的进程必须达到同步运行,才能实现供需平衡。
    处理读写同步的两种常见的策略被称为“强读者同步(strong reader synchronization)”和“强写者同步(strongwriter synchronization)”。在强读者同步中,总是给读者以优先权,只要写者当前没有进行写操作,读者就可以获得访问权;在强写者同步中,写者总是获得优先权,只要强读者当前没有进行读操作,写者就可以获得访问权。而生产者消费者同步与单纯的读写同步又有不同,消费者可以通过访问资源对资源进行删除或销毁。
    一个有限长度缓冲区的生产者消费者问题模型,是由若干生产者和消费者进程以及一个有限的缓冲池构成的。每个缓冲区能够存储一个信息记录,一个生产者一次生产一个信息记录。产生一个记录之后,等待单独进入一个空的缓冲区后将记录写入缓冲区。一个消费者进程一次消费一个信息记录。当它需要消费时,它等待单独进入一个满的缓冲区后将记录读出。
    通过上面的描述可以得出,解决生产者一消费者问题模型的方案需要满足以下几个条件:
    ◇生产者不应覆盖一个满的缓冲区;
    ◇消费者不应使用一个空的缓冲区;
    ◇生产者和消费者应按互斥方式访问数据缓冲区;
    ◇数据必须按照先进先出(FIFO)方式;
    ◇不能出现忙等待。
    必须避免数据写进程不断、反复地检查缓冲区直到找到一个空缓冲区为止,而读进程也必须避免不断检查直到找到一个满缓冲区为止。这相当于系统内部产生忙等待,是在仅使用临界段(CS)算法实现进程同步时难以避免的问题。
    针对问题模型解决方案的限制条件,采用信号量方式解决实时更新数据处理的进程同步问题,即上述的生产者一消费者问题模型。
    信号量是一个非负值的共享整数值,只能用于初始化和不可分操作。不可分操作是指在对一个数据D进行操作时不能与任何其他对D的操作重叠的操作。定义操作P 和V为不可分操作。P和V的不可分性意味着这些操作不能并发执行,避免了对信号量的竞争条件。定义P和V的操作语义为:

   
    由上述定义的语义看,对一个信号量S的操作,P和V为改变S的值,或者挂起或唤醒一个对S进行P操作的进程。被挂起的进程为阻塞状态,因而避免了忙等待问题。一个二进制的信号量只取0和1,用来实现互斥。
    在P和V操作中,对进程的阻塞和唤醒需要操作系统的进程管理组件的参与,因此信号量会被操作系统实现而不是应用程序实现。
    生产者一消费者问题模型描述:

   
2 结构设计
    对于有限缓冲区的生产者消费者问题模型的执行包括以下部件:共享数据一缓冲区组、操作一缓冲区的访问、进程一生产者消费者。[page]
    在生产者一消费者同步中,由生产者创建资源,与单纯的读程序不同,消费者可以通过访问资源,将资源删除或销毁。由于生产者进程和消费者进程共享一个缓冲区,因此在插入和删除条目时必须同步。实现中必须避免表l所列的同步异常问题。

    生产者一消费者问题的传统的信号量解决方案使用了2个信号量,分别用来表示缓冲区中的条目数和空闲槽的数目。当进程需要特定类型的资源时,它可以通过函数调用对相应的信号量进行减量操作;同样,当进程释放资源时,它可以通过函数调用来对相应的信号量进行增量操作。由于信号量永远不会降到零以下,所以进程不能使用不存在的资源。因此,始终将计数信号量初始化为开始时可用的资源数。
    定义循环队列缓冲区存放待处理数据,控制台数据处理进程从该循环队列缓冲区中消费数据,并将该数据存储位标记为“废弃”。数据采集写进程仅能将数据存放于标记为“废弃”的循环队列缓冲区中,如图1所示。

    在没有多个生产者或消费者的情况下,如果仔细实现,循环缓冲区就不需要锁。生产者是唯一允许修改写入索引以及该索引指向的数组位置的进程。只要写入者在更新写入索引之前将新的值保存到缓冲区,则读取者将始终看到一致的数据结构;同时,读取者是唯一可以访问读取索引以及该索引指向位置的数据的进程。只要确保两个指针不要互相重叠,生产者和消费者可以在无竟态的情况下访问该缓冲区,如图2所示。

    对于只有单个生产者和消费者,通过使用修正的使用信号量方式的生产者一消费者问题模型解决方案来实现。

   

    以上用信号量方式解决了优先缓冲区问题,信号量“empty”和“full”的值分别指示空和满的缓冲区的数量,如图3所示。缓冲区指针i和j用来确保缓冲区按先进先出的顺序提供并使用。只要系统中存在一些满的和空的缓冲区,数据更新进程和数据处理进程就能无竞态并发执行。笔者在华恒ARM嵌入式平台 HHARM2410-R5上按照上述方案成功实现了用例测试。

3  讨论

    以上的结构设计,将生产者与消费者分别简化为一个。当存在多个生产者和消费者的情况时,可以上述修正的解决方案为基础,设计多个计数器来统计并行读者(reader)、并行写者(writer)、读者或待读者(pre_reader)、写者或待写者(pre_writer)的数量。计数器的值在进程中的相应位置进行增减。读者和写者在被允许阅读和写入之前必须被阻塞,这可以通过P操作来完成。当读者或写者在进程被阻塞时控制开始阅读或书写的条件并未满足。这些条件随着任意一个计数器值的变化而改变,所以,进程在完成阅读或书写后必须执行相应的V操作。

    在实行多读、多写进程同步解决方案时,必须要避免不同计数器的竞争条件,因而必须在临界段(CS)中执行对允许读或写操作条件的检查。

关键字:嵌入式  Linux进程同步  无竞争态读写 引用地址:嵌入式Linux中的进程同步无竞争态读写

上一篇:嵌入式多任务GUI的通用解决方案
下一篇:在和欣操作系统上实明的 WEB SERVICE组件

推荐阅读最新更新时间:2024-05-02 21:59

基于ARM嵌入式系统的一种远程可控电源插座设计
互联网的迅速发展,实现了信息的高速传输和资源共享,极大地方便了人们的生活。嵌入式系统广泛应用于各种电器产品、智能仪表和控制设备中,它与互联网的结合是一种必然的趋势。 嵌入式系统和网络技术的快速发展,为网络远程控制的发展和完善提供了技术基础。 笔者综合运用嵌入式系统和Web技术,设计了一种可通过互联网进行远程控制的电源插座系统,实现对家用或工业电器的远程实时控制。用户通过网页浏览器访问该系统,对各插座进行打开或关闭的操作,实现对与其相连接的电器的远程控制。 1 嵌入式Web工作原理 嵌入式Web的体系结构如图1所示。客户端和嵌入式系统中Web服务器之间的通信协议采用HTTP(超文本传输协议)。嵌入式操作系统提供TCP
[单片机]
基于ARM<font color='red'>嵌入式</font>系统的一种远程可控电源插座设计
嵌入式系统制造商面临的IP安全性的挑战
公司的未来发展取决于知识产权(IP)的开发与保护。知识产权(IP) 在维基百科中被定义为法律概念,指的是被赋予专有权的智力创作。尽管该定义只涉及法律含义,但IP其实是组织或个人开展创新和努力工作的成果。IP是公司创新的制胜法则,相对于竞争对手能够为产品带来优势。对于生产嵌入式系统的企业来说,知识产权可能是: · 系统的固件实现方案 · 硬件实现方案;例如利用创新方法实现信号链或输出控制,从而让产品脱颖而出 · 任何解决系统中特殊问题的创新方法 例如,采用尽可能少的硬件资源的嵌入式系统实现方案就是一个很好的例证。这种实现方案可以降低产品制造成本,使产品在竞争激烈的市场中更加畅销。 知识产权 (IP) 安全问题公司任何成功所面
[单片机]
<font color='red'>嵌入式</font>系统制造商面临的IP安全性的挑战
基于S3C2410嵌入式处理器实现CAN/Ethernet网关的设计
CAN(Controller Area Network)为控制器局域网络,CAN总线规范已经被国际标准化组织制订为国际标准ISO11898,并得到众多半导体器件厂商的支持,推出各种集成有CAN协议的产品。CAN属于总线式串行通信网络,由于其采用了许多新技术和独特的设计,低成本、高可靠性、实时性、灵活性、抗干扰能力强等特点,已被广泛应用于各个自动化控制系统中。在汽车电子、自动控制、电力系统等领域,CAN总线具有无可比拟的优越性。 以太网以其通信数据量大、传输速度快、开放性好、成本低等优点,弥补了现场总线通信速率低的缺陷,成为现阶段信息网络应用最广的局域网技术。用以太网直接进入工业控制领域,目前还存在一些问题,以太网的媒体访问方式
[单片机]
基于S3C2410<font color='red'>嵌入式</font>处理器实现CAN/Ethernet网关的设计
Tensilica公司HiFi 音频引擎嵌入Sonic Network音频合成技术
可配置处理器供应商 Tensilica 公司和向手持消费设备和乐器市场提供音频合成技术的全球提供商 Sonic Network 公司日前共同宣布, Sonic 公司的嵌入式音频合成技术( EAS ? )已被嵌入到 Tensilica 公司最新 Diamond 330HiFi 音频处理器内核和 Xtensa ? HiFi 2 音频引擎中。 Sonic 公司的 EAS 技术专为移动设备而设计,该类设备需要低存储器或处理器占用面积解决方案,和极高质量的多音效果。 Sonic Network 公司总裁及创始人 Jennifer Hruska 表示,“ Tensilica 公司 24 位嵌入式音频处理器内核相比 S
[新品]
嵌入式语音识别处理ISD-SR3000的特性及应用
    摘要: ISD-SR3000是Winbond公司推出的新型嵌入式语音识别处理器,它由语音识别引擎、语音压缩引擎和录间功能组成。并带有最优指令系统为核心的PISC/PSP、灵活的CODEC接口和串行主控制器接口,文中介绍了ISD-SR3000的特点、引脚排列和功能。给出了一个用SR3000组成的语音识别系统电路。     关键词: 语音识别 微处理器 CODEC SR3000 1 概述 ISD-SR3000是Winbond公司推出的新型嵌入式语音识别处理器,它由语音识别引擎、语音压缩引擎和录音功能部分组成。芯片内包含一个以最优指令系统为核心的并行PISC/DSP、灵活的CODEC接口和一个串行主控制
[应用]
嵌入式系统设计师必备的在线ARM仿真器知识
本文提供了一些关于在线 ARM 仿真器 的信息,以及给作为嵌入式系统设计师的你带来的好处。根据你的需要,你将在产品开发中对开发工具作出更恰当的选择。    一、嵌入式产品的开发周期   典型的嵌入式微控制器开发项目的第一个阶段是用C编译器从源程序生成目标代码,生成的目标代码将包括物理地址和一些调试信息。目前代码可以用软件模拟器、目标Monitor或在线仿真器来执行和调试。软件模拟器是在PC机或工作站平台上,以其CPU(如x86)及其系统资源来模拟目标CPU(如P51XA),并执行用户的目标代码;而目标Monitor则是将生成的目标代码下载到用户目标板的程序存储器中,并在下载的代码中增加一个Monitor任务软件,
[单片机]
基于嵌入式系统的USB(HID)设备设计
  0 引言   目前嵌入式系统在数字化电子产品领域应用越来越广泛。随着其成本的降低,大有取代单片机的趋势。USB 设备以其小巧、便携、即插即用、成本低廉等优势在当前的桌面应用中有相当的比重,尤其是HID(人机接口)设备,其免驱的特点(不用安装驱动程序)更是给用户带来极大方便。现在市场上USB 设备多是由专门的USB 控制芯片来实现其应用控制,芯片内集成了USB 协议,成本较高。PCB 板的面积较大。本文提出了仅用一片MCU(微处器-单片机)或嵌入式系统芯片来实现其与PC 机的通讯的方法。就单片机而言,多数单片机速度较慢,对事件的响应能力较弱,对全速USB 应用不是很好的选择。而嵌入式系统,由于其速度较之单片机快很多,内部RA
[嵌入式]
免费借测,限时体验 | 研华Socket Type 4英寸嵌入式单板MIO-4370来袭!
MIO-4370是研华4 EPIC 嵌入式单板电脑 ,支持第12/13代 Intel socket 式CPU,性能选择更灵活。同时也提供了更丰富的I/O接口及扩展能力,是医疗、机器视觉、机器人和测试仪器等应用的理想选择。现推出免费借测活动,限时开启,欢迎各位伙伴报名体验!
[工业控制]
免费借测,限时体验 | 研华Socket Type 4英寸<font color='red'>嵌入式</font>单板MIO-4370来袭!
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved