精华内容
下载资源
问答
  • 进程间通讯方式以及各个方式优缺点 2014-7-19阅读99 评论0 进程通信的含义 进程是转入内存并准备执行的程序,每个程序都有私有的虚拟地址空间,由代码,数据以及它可利用的系统资源(如文件,管道)组成.多进程/多...

    进程间通讯方式以及各个方式的优缺点




    进程通信的含义


    进程是转入内存并准备执行的程序,每个程序都有私有的虚拟地址空间,由代码,数据以及它可利用的系统资源(如文件,管道)组成.多进程/多线程是windows操作系统的一个基本特征.Linux系统一般都统称为进程.


    由于不同的进程运行在各自不同的内存空间中,其中一个进程对于变量的修改另一方是无法感知的,因此,进程之间的消息传递不能通过变量或其他数据结构直接进行,只能通过进程间通信来完成.进程间通信是指不同进程间进行数据共享和数据交换.


    进程通信的分类


    根据进程通信时信息量大小的不同,可以将进程通信划分为两大类型:控制信息的通信(低级通信)和大批数据信息的通信(高级通信).


    低级通信主要用于进程之间的同步,互斥,终止和挂起等等控制信息的传递.


    高级通信主要用于进程间数据块数据的交换和共享,常见的高级通信有管道,消息队列,共享内存等.


    进程通信的方式


    1)文件和记录锁定


    为避免两个进程间同时要求访问同一资源而引起访问和操作的混乱,在进程对共享资源进行访问前必须对其锁定,该进程访问完后再释放.这是UNIX为共享资源提供的互斥性保障.


    2)管道


    管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系.管道一般用于两个不同进程之间的通信.当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式.


    3)有名管道


    有名管道也是一种半双工的通信方式,但是它允许无亲缘关系进程间的通信.


    4)FIFO


    FIFO是一种先进先出的队列.它类似于一个管道,只允许数据的单向流动.每个FIFO都有一个名字,允许你不相关的进程访问同一个FIFO,因此也成为命名管.


    5)信号量


    信号量是一个计数器,可以用来控制多个线程对共享资源的访问.,它不是用于交换大批数据,而用于多线程之间的同步.它常作为一种锁机制,防止某进程在访问资源时其它进程也访问该资源.因此,主要作为进程间以及同一个进程内不同线程之间的同步手段.


    6)信号


    信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生.


    7)消息队列


    消息队列是消息的链表,存放在内核中并由消息队列标识符标识.消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等特点.消息队列是UNIX下不同进程之间可实现共享资源的一种机制,UNIX允许不同进程将格式化的数据流以消息队列形式发送给任意进程.对消息队列具有操作权限的进程都可以使用msget完成对消息队列的操作控制.通过使用消息类型,进程可以按任何顺序读信息,或为消息安排优先级顺序.


    8)共享内存


    共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问.共享内存是最快的IPC(进程间通信)方式,它是针对其它进程间通信方式运行效率低而专门设计的.它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步与通信.


    9)套接字(socket)


    套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同进程及其间进程的通信.


    通信方式的优缺点


    几种通信方法总结综上所述.进程之间的多种通信方法各自有各自的优点和缺点:如果用户传递的信息较少.或是需要通过信号来触发某些行为.前文提到的软中断信号机制不失为一种简捷有效的进程间通信方式.但若是进程间要求传递的信息量比较大或者进程间存在交换数据的要求,那就需要考虑别的通信方式了。无名管道简单方便.但局限于单向通信的工作方式.并且只能在创建它的进程及其子孙进程之间实现管道的共享:有名管道虽然可以提供给任意关系的进程使用.但是由于其长期存在于系统之中,使用不当容易出错.所以普通用户一般不建议使用。消息缓冲可以不再局限于父子进程.而允许任意进程通过共享消息队列来实现进程间通信.并由系统调用函数来实现消息发送和接收之间的同步.从而使得用户在使用消息缓冲进行通信时不再需要考虑同步问题.使用方便,但是消息队列中信息的复制需要额外消耗CPU的时间.不适宜于信息量大或操作频繁的场合。共享内存针对消息缓冲的缺点改而利用内存缓冲区直接交换信息,无须复制,快捷、信息量大是其优点。但是共享内存的通信方式是通过将共享的内存缓冲区直接附加到进程的虚拟地址空间中来实现的.因此,这些进程之间的读写操作的同步问题操作系统无法实现。必须由各进程利用其他同步工具解决。另外,由于内存实体存在于计算机系统中.所以只能由处于同一个计算机系统中的诸进程共享,不方便网络通信。不同的进程通信方式有不同的优点和缺点.因此.对于不同的应用问题,要根据问题本身的情况来选择进程间的通信方式。


    一般来说,进程间的通信根据通信内容可以划分为两种:即控制信息的传送与大批数据传送。有时也把进程间控制信息的交换称为低级通信,而把进程间大批量数据的交换称为高级通信。

    展开全文
  • 在这种情况下,我们实现了使用串口的 空闲中断 + DMA(传输完成中断 + 传输一半中断) 接收不定长数据的方法。这种情况又分为 裸机 和 移植操作系统 的情况。下面是对这两种情况的简单描述: 裸机 一、优点: 1.1 ...

    在STM32的串口开发过程中,我们在接收数据时,如果按照函数定义,总会受到数据长度的限制。但是因为各种因素,总希望能够通过某些操作来越过这一限制,即接收不定长数据。

    在这种情况下,我们实现了使用串口的 空闲中断 + DMA(传输完成中断 + 传输一半中断) 接收不定长数据的方法。这种情况又分为 裸机 和 移植操作系统 的情况。下面是对这两种情况的简单描述:

    裸机

    一、优点:

    1.1 应用程序通过空闲线路检测或DMA TC/HT事件获取通知

    1.2 应用程序只有在接收到3个中断中的任何一个时才必须处理数据

    1.3 应用程序不需要轮询新更改

    1.4 应用程序接收事件中断

    1.5 应用程序可能进入低功率模式以延长电池寿命(如果使用电池操作)

    二、缺点:

    2.1 在中断中读取(处理)数据。我们努力尽可能快地执行中断程序

    2.2 长时间中断执行可能会破坏应用程序中的其他兼容性

    另外需要注意的是:传入数据的处理来自2个中断向量,因此它们不能互相抢占很重要。将两者设置为相同的抢占优先级!

    移植操作系统

    三、优点

    3.1 应用程序通过空闲线路检测或DMA TC/HT(传输完成中断 / 传输一半中断)事件获取通知

    3.2 应用程序只有在接收到3个中断中的任何一个时才在单独的线程中处理数据

    3.3 处理不是在中断中,而是在单独的线程中

    3.4 中断只通知处理线程进行处理(或唤醒)

    3.5 在等待事件时,操作系统可能会将正在处理中的线程置于阻塞状态

    四、缺点

    4.1 需要考虑单独线程+消息队列(或信号量)的内存使用情况

    通过以上介绍,我们可以看出,在操作系统中使用 串口的空闲中断 + DMA(传输完成中断 + 传输一半中断) 是使用和处理UART接收字符的最佳方式。

    展开全文
  • 进程的通信方式及其优缺点

    千次阅读 2017-09-17 17:41:35
    通信方式优缺点 几种通信方法总结综上所述.进程之间的多种通信方法各自有各自的优点和缺点:如果用户传递的信息较少.或是需要通过信号来触发某些行为.前文提到的 软中断 信号机制不失为一种简捷有效的进程间...

    进程通信的含义

    进程是转入内存并准备执行的程序,每个程序都有私有的虚拟地址空间,由代码,数据以及它可利用的系统资源(如文件,管道)组成.多进程/多线程是windows操作系统的一个基本特征.Linux系统一般都统称为进程.

    由于不同的进程运行在各自不同的内存空间中,其中一个进程对于变量的修改另一方是无法感知的,因此,进程之间的消息传递不能通过变量或其他数据结构直接进行,只能通过进程间通信来完成.进程间通信是指不同进程间进行数据共享和数据交换.

    进程通信的分类

    根据进程通信时信息量大小的不同,可以将进程通信划分为两大类型:控制信息的通信(低级通信)和大批数据信息的通信(高级通信).

    低级通信主要用于进程之间的同步,互斥,终止和挂起等等控制信息的传递.

    高级通信主要用于进程间数据块数据的交换和共享,常见的高级通信有管道,消息队列,共享内存等.

    进程通信的方式

    1)文件和记录锁定

    为避免两个进程间同时要求访问同一资源而引起访问和操作的混乱,在进程对共享资源进行访问前必须对其锁定,该进程访问完后再释放.这是UNIX为共享资源提供的互斥性保障.

    2)管道

    管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系.管道一般用于两个不同进程之间的通信.当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式.

    3)有名管道

    有名管道也是一种半双工的通信方式,但是它允许无亲缘关系进程间的通信.

    4)FIFO

    FIFO是一种先进先出的队列.它类似于一个管道,只允许数据的单向流动.每个FIFO都有一个名字,允许你不相关的进程访问同一个FIFO,因此也成为命名管.

    5)信号量

    信号量是一个计数器,可以用来控制多个线程对共享资源的访问.,它不是用于交换大批数据,而用于多线程之间的同步.它常作为一种锁机制,防止某进程在访问资源时其它进程也访问该资源.因此,主要作为进程间以及同一个进程内不同线程之间的同步手段.

    6)信号

    信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生.

    7)消息队列

    消息队列是消息的链表,存放在内核中并由消息队列标识符标识.消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等特点.消息队列是UNIX下不同进程之间可实现共享资源的一种机制,UNIX允许不同进程将格式化的数据流以消息队列形式发送给任意进程.对消息队列具有操作权限的进程都可以使用msget完成对消息队列的操作控制.通过使用消息类型,进程可以按任何顺序读信息,或为消息安排优先级顺序.

    8)共享内存

    共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问.共享内存是最快的IPC(进程间通信)方式,它是针对其它进程间通信方式运行效率低而专门设计的.它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步与通信.

    9)套接字(socket)

    套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同进程及其间进程的通信.

    通信方式的优缺点

    几种通信方法总结综上所述.进程之间的多种通信方法各自有各自的优点和缺点:如果用户传递的信息较少.或是需要通过信号来触发某些行为.前文提到的软中断信号机制不失为一种简捷有效的进程间通信方式.但若是进程间要求传递的信息量比较大或者进程间存在交换数据的要求,那就需要考虑别的通信方式了。无名管道简单方便.但局限于单向通信的工作方式.并且只能在创建它的进程及其子孙进程之间实现管道的共享:有名管道虽然可以提供给任意关系的进程使用.但是由于其长期存在于系统之中,使用不当容易出错.所以普通用户一般不建议使用。消息缓冲可以不再局限于父子进程.而允许任意进程通过共享消息队列来实现进程间通信.并由系统调用函数来实现消息发送和接收之间的同步.从而使得用户在使用消息缓冲进行通信时不再需要考虑同步问题.使用方便,但是消息队列中信息的复制需要额外消耗CPU的时间.不适宜于信息量大或操作频繁的场合共享内存针对消息缓冲的缺点改而利用内存缓冲区直接交换信息,无须复制,快捷、信息量大是其优点。但是共享内存的通信方式是通过将共享的内存缓冲区直接附加到进程的虚拟地址空间中来实现的.因此,这些进程之间的读写操作的同步问题操作系统无法实现。必须由各进程利用其他同步工具解决。另外,由于内存实体存在于计算机系统中.所以只能由处于同一个计算机系统中的诸进程共享,不方便网络通信不同的进程通信方式有不同的优点和缺点.因此.对于不同的应用问题,要根据问题本身的情况来选择进程间的通信方式。

    一般来说,进程间的通信根据通信内容可以划分为两种:即控制信息的传送与大批数据传送。有时也把进程间控制信息的交换称为低级通信,而把进程间大批量数据的交换称为高级通信。

    展开全文
  • GO优缺点

    千次阅读 2016-08-06 09:06:49
    GO优缺点 1.1 不允许左花括号另起一行 1.2 编译器莫名其妙地给行尾加上分号 1.3 极度强调编译速度,不惜放弃本应提供的功能 1.4 错误处理机制太原始 1.5 垃圾回收器(GC)不完善、有重大缺陷 1.6 禁止未使用...
    

    GO优缺点

    1.1 不允许左花括号另起一行
    1.2 编译器莫名其妙地给行尾加上分号
    1.3 极度强调编译速度,不惜放弃本应提供的功能
    1.4 错误处理机制太原始
    1.5 垃圾回收器(GC)不完善、有重大缺陷
    1.6 禁止未使用变量和多余import
    1.7 创建对象的方式太多令人纠结
    1.8 对象没有构造函数和析构函数
    1.9 defer语句的语义设定不甚合理
    1.10 许多语言内置设施不支持用户定义的类型
    1.11 没有泛型支持,常见数据类型接口丑陋
    1.12 实现接口不需要明确声明
    1.13 省掉小括号却省不掉花括号
    1.14 编译生成的可执行文件尺寸非常大
    1.15 不支持动态加载类库

    Go语言的优点:
    并发/网络/性能/工具(fmt/pprof/test)/标准库(http/json/log/flags/atomic)/Google
    Go语言垃圾回收器真正致命的缺陷是,会导致整个进程不可预知的间歇性停顿。
    像某些大型后台服务程序,如游戏服务器、APP容器等,由于占用内存巨大,其内存对象数量极多,GC完成一次回收周期,可能需要数秒甚至更长
    时间,这段时间内,整个服务进程是阻塞的、停顿的,在外界看来就是服务中断、无响应,再牛逼的并发机制到了这里统统失效。垃圾回收器定期
    启动,每次启动就导致短暂的服务中断,这样下去,还有人敢用吗?这可是后台服务器进程,是Go语言的重点应用领域。

    小米网在使用Go的开发第二版抢购系统的过程中也遇到了Go程序消耗大量内存后,GC缓慢,最终导致服务不可用的问题.C语言使用网络框架库比如
    libevent/libev/libuv/acl(Advanced C/C++ Library)后是否就能抵消Go的优势,而又没有Go垃圾回收时卡顿的缺点呢?在OpenResty(Nginx)
    上进行Lua编程也是另一种开发高性能网络应用的选择.


    ----------------------------------------------------------------
    Go 缺点
    1 GO很慢,运行速度比Java慢,一个编译型的语言居然比解释性的还慢.
    2 GO缺少安全检查,在第三方包调os.exit((1)的我见过太多了.
    3 泛型不想吐槽,就没有泛型支持
    4 err成为函数返回值成为标配,写起来千篇一律,if太多,没意思
    5 :=这种定义我真不想说什么,看代码的时候左值什么类型都不知道,还要深入看右值的函数去看,尤其是没有一个好的IDE可以点进去看函数定义.
    Go 优点
    6 没有一个好的工程版本管理,尤其是github上第三方的.
    1 开发速度很快,代码比较简洁.
    2 标准库比较强大
    3 编译简单,最后就一个可执行文件

    展开全文
  • windows 内存管理方式及其优缺点

    千次阅读 2016-03-17 19:37:57
    windows 内存管理方式主要分为:页式管理,段式管理,段页式管理。页式管理基本原理是将各进程的虚拟空间划分为若干个长度相等的页;页式管理把内存空间按照页的大小划分成片或者页面,然后把页式虚拟地址与内存地址...
  • 二、四种I/O控制方式优缺点及适用场景 1.程序I/O控制方式 (1)优点 控制简单,不需要多硬件支持 (2)缺点 CPU利用率低 不能实现设备间的并行工作 无法发现和处理产生的错误 ...
  • 一、常见使用方式 ...二、各种使用方式优缺点 1、Redis 单副本 Redis 单副本,采用单个 Redis 节点部署架构,没有备用节点实时同步数据,不提供数据持久化和备份策略,适用于数据可靠性要求不高的纯缓存业务...
  • 缺点:(1)在非实时环境中,由于延时的存在会影响系统的响应效率 (2)串口在收发不定长度数据时候可能会接受数据不完整 2、超时接收 原理:设置一个倒计时标志和接收完成标志,需要开启串口接收中断。串口接收...
  • 云计算的优缺点–云计算的优缺点

    千次阅读 2020-04-17 11:58:05
    介绍 云计算是指对驻留在远程计算机上并作为服务通过网络交付给最终用户的计算资源... 但是,云计算成功突破了炒作,并真正改变了当今IT工作方式的范式。 云降低了企业成本,并帮助用户专注于核心业务,而不受IT问...
  • 问:线程池常用的几种类型?答:Java通过Executors提供四种线程池,分别为:1 newCachedThreadPool创建一个... 缺点:大家一般不用是因为newCachedThreadPool 可以无线的新建线程,容易造成堆外内存溢出,因为它的...
  • 比较并说明下述几种I/O控制方式优缺点及其应用场合。 I/O控制方式: (1)直接程序控制方式 (2)程序中断方式 (3)DMA方式 答: (1)直接程序传送方式用于系统调试或对速度要求不高的系统。 这种方式...
  • 缺点:在生产者/消费者模式里,当LPOP没有消息的时候即证明消息暂时被消费完毕,并且生产者还没有来得及生成数据,LPOP没有等待队列里有值就直接消费。 弥补:可以通过在应用层引入Sleep机制去调用LPOP重试,进而...
  • 2) 处理机状态(处理机状态信息) 主要是由处理机的各种寄存器中的内容组成的,处理机被中断时,所有这些信息都必须保存在PCB中, 以便在该进程重新执行时,能从断点继续执行。 通用寄存器、指令计数器、程序状态字...
  • Windows内存管理的几种方式优缺点

    千次阅读 2016-07-27 11:34:03
    Windows内存管理方式主要分为:页式管理、段式管理和段页式管理。 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页。把内存空间按页的大小划分为片或者页面,然后把页式虚拟地址与内存地址建立...
  • 摘要: redis作为一种NoSql数据库,其提供了一种高效的缓存方案,本文则主要对其单例,主从模式,sentinel以及集群的配置方式进行说明,对比其优缺点,阐述redis作为一种缓存框架的高可用性。  redis作为一种...
  • a、使用socket通信的方式实现起来简单,可以使用因特网域和UNIX域来实现,使用因特网域可以实现不同主机之间的进出通信。 b、该方式自身携带同步机制,不需要额外的方式来辅助实现同步。 c、随进程持续。 共享...
  • spring的优缺点

    千次阅读 2018-11-10 14:57:32
    再来看看Spring有哪些缺点 1.jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器 2.Spring不支持分布式,这也是EJB仍然在用的原因之一。 首先Spring 是一个框架,使用Spring并不代表代码质量的提高,就像...
  • WINDOWS内存三种管理方式优缺点

    千次阅读 2013-09-04 09:11:29
    WINDOWS内存管理方式综述 WINDOWS内存管理方式主要分为:段式管理、页式管理、段页式管理。 页式管理:页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分...
  • AsyncTask的优缺点

    千次阅读 2018-10-29 17:07:36
    继上篇简单介绍AsyncTask之后,本片开始介绍下AsyncTask的优缺点。 (注:本人所写文章仅作为自己学习使用) AsyncTask的优点: 封装了Thread和Handler给用户使用,操作比较简单。用户需要使用时,仅需继承...
  • mmap优缺点

    千次阅读 2013-08-06 10:55:50
    当对某些页进行引用的时候,会引起一个缺页中断,再将页面调入到内存当中,这样避免了对内存的浪费。 优点是:  操作文件就像操作内存一样,适合于对较大文件的读写。 缺点是:  
  • 云计算的优缺点

    千次阅读 2020-11-30 16:49:37
    云计算的优点和缺点 介绍 云计算是指驻留在远程计算机上并通过网络作为服务交付给最终用户的计算资源的使用,这些资源是硬件和/或软件,最普遍的示例是互联网。根据定义,用户将其数据委托给远程服务,远程服务对此...
  • 多线程的优缺点

    2019-04-12 16:41:30
    多线程的优缺点 何时使用多线程技术,何时避免用它,是我们需要掌握的重要课题。多线程技术是一把双刃剑,在使用时需要充分考虑它的优缺点。 多线程处理可以同时运行多个线程。由于多线程应用程序将程序划分成多个独立...
  • java框架,优缺点

    千次阅读 2020-02-07 10:53:13
    java2e框架,优缺点。 Spring 框架 优点 1.提供了一种管理对象的方法,可以把中间层的对象有效地组织起来 2.采用了分层结构,可以增量引入到项目中。 3.代码测试较容易 4.非侵入性,应用程序对Spring API的依赖可以...
  • RAID 1的优缺点: 由于对存储的数据进行百分之百的备份,在所有RAID级别中,RAID1提供最高的数据安全保障。同样,备份数据占了总存储空间的一半,因而镜像磁盘空间利用率低,存储成本高。Mirror虽不能提高存储...
  • 多线程开发优缺点及应用场景分析

    千次阅读 2019-03-10 11:07:02
    多线程技术是一把双刃剑,在使用时需要充分考虑它的优缺点。 多线程应用场景: 是否需要创建多个线程取决于各种因素。在以下情况下,最适合采用多线程处理: (1)耗时或大量占用处理器的任务阻塞用户界面操作; (2)...
  • koa express 优缺点

    千次阅读 2019-05-13 23:31:00
    关于 Express 优点。Express 的优点是线性逻辑:路由...再说缺点。Express 是基于 callback 来组合业务逻辑。Callback 有两大硬伤,一是不可组合,二是异常不可捕获。Express 的中间件模式虽然在一定程度上解决这两...
  • 主流操作系统及其优缺点

    万次阅读 多人点赞 2019-06-09 21:07:00
    文章目录主流操作系统介绍目录如下:简介:更多信息中文名外文名英文简称组成部分主流操作系统及其优缺点:85~95年主要操作系统- DOSMS-DOS的发展历史MS-DOS 1.0MS-DOS 2.0MS-DOS 3.XMS-DOS 4.0MS-DOS 5.0MS...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,025
精华内容 11,610
关键字:

中断方式的优缺点