精华内容
下载资源
问答
  • 进程的通信方式

    2013-08-18 20:25:00
    进程的通信方式  (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。  (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除...
    # 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
    # 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
    # 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
    # 消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
    # 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
    # 共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
    # 套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。
    展开全文
  • 进程与线程的区别进程的通信方式线程的通信方式 进程与线程的区别: 通俗的解释 一个系统运行着很多进程,可以比喻为一条马路上有很多马车 不同的进程可以理解为不同的马车 而同一辆马车可以有很多匹马来拉--...
    
    

    进程与线程的区别进程的通信方式线程的通信方式

    进程与线程的区别:

    通俗的解释

    一个系统运行着很多进程,可以比喻为一条马路上有很多马车

    不同的进程可以理解为不同的马车

    而同一辆马车可以有很多匹马来拉--这些马就是线程

    假设道路的宽度恰好可以通过一辆马车

    道路可以认为是临界资源

    那么马车成为分配资源的最小单位(进程)

    而同一个马车被很多匹马驱动(线程)--即最小的运行单位

    每辆马车马匹数=1

    所以马匹数=1的时候进程和线程没有严格界限,只存在一个概念上的区分度

    马匹数1的时候才可以严格区分进程和线程

    专业的解释:

    简而言之,一个程序至少有一个进程,一个进程至少有一个线程.

    线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

    线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

    从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

    进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

    线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

    一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行

    进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。如果有兴趣深入的话,我建议你们看看《现代操作系统》或者《操作系统的设计与实现》。对就个问题说得比较清楚。


    进程概念

    进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。

    在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。

    线程概念

    线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。例如,假设用户启动了一个窗口中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。假设用户要从数据库中产生一份工资单报表,并传到一个文件中,这是一个子任务;在产生工资单报表的过程中,用户又可以输人数据库查询请求,这又是一个子任务。这样,操作系统则把每一个请求――工资单报表和新输人的数据查询表示为数据库进程中的独立的线程。线程可以在处理器上独立调度执行,这样,在多处理器环境下就允许几个线程各自在单独处理器上进行。操作系统提供线程就是为了方便而有效地实现这种并发性

    引入线程的好处

    (1)易于调度。

    (2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。

    (3)开销少。创建线程比创建进程要快,所需开销很少。

    (4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。

    ++

    进程和线程的关系:

    (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

    (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。

    (3)处理机分给线程,即真正在处理机上运行的是线程。

    (4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

    线程是指进程内的一个执行单元,也是进程内的可调度实体.

    与进程的区别:

    (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位

    (2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行

    (3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.

    (4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。+++

    进程间的通信方式:

    1.管道(pipe)及有名管道(named pipe):

    管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。

    2.信号(signal):

    信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一致的。

    3.消息队列(message queue):

    消息队列是消息的链接表,它克服了上两种通信方式中信号量有限的缺点,具有写权限得进程可以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可以从消息队列中读取信息。

    4.共享内存(shared memory):

    可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据得更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等。

    5.信号量(semaphore):

    主要作为进程之间及同一种进程的不同线程之间得同步和互斥手段。

    6.套接字(socket);

    这是一种更为一般得进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛。

    ++

    线程之间的同步通信:

    1.信号量二进制信号量互斥信号量整数型信号量记录型信号量

    2.消息消息队列消息邮箱

    3.事件event

    互斥型信号量:必须是同一个任务申请,同一个任务释放,其他任务释放无效。同一个任务可以递归申请。(互斥信号量是二进制信号量的一个子集)

    二进制信号量:一个任务申请成功后,可以由另一个任务释放。(与互斥信号量的区别)

    整数型信号量:取值不局限于0和1,可以一个任务申请,另一个任务释放。(包含二进制信号量,二进制信号量是整数型信号量的子集)

    二进制信号量实现任务互斥:

    打印机资源只有一个,a bc三个任务共享,当a取得使用权后,为了防止其他任务错误地释放了信号量(二进制信号量允许其他任务释放),必须将打印机房的门关起来(进入临界段),用完后,释放信号量,再把门打开(出临界段),其他任务再进去打印。(而互斥型信号量由于必须由取得信号量的那个任务释放,故不会出现其他任务错误地释放了信号量的情况出现,故不需要有临界段。互斥型信号量是二进制信号量的子集。)

    二进制信号量实现任务同步:

    a任务一直等待信号量,b任务定时释放信号量,完成同步功能

    记录型信号量(record semaphore):

    每个信号量s除一个整数值value(计数)外,还有一个等待队列List,其中是阻塞在该信号量的各个线程的标识。当信号量被释放一个,值被加一后,系统自动从等待队列中唤醒一个等待中的线程,让其获得信号量,同时信号量再减一。

    +++

    同步和互斥的区别:

    当有多个线程的时候,经常需要去同步这些线程以访问同一个数据或资源。例如,假设有一个程序,其中一个线程用于把文件读到内存,而另一个线程用于统计文件中的字符数。当然,在把整个文件调入内存之前,统计它的计数是没有意义的。但是,由于每个操作都有自己的线程,操作系统会把两个线程当作是互不相干的任务分别执行,这样就可能在没有把整个文件装入内存时统计字数。为解决此问题,你必须使两个线程同步工作。

    所谓互斥,是指散布在不同进程之间的若干程序片断,当某个进程运行其中一个程序片段时,其它进程就不能运行它们之中的任一程序片段,只能等到该进程运行完这个程序片段后才可以运行。如果用对资源的访问来定义的话,互斥某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的

    所谓同步,是指散步在不同进程之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。如果用对资源的访问来定义的话,同步是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源


    原文地址:http://blog.163.com/bobile45@126/blog/static/96061992201292111344175/

    展开全文
  • 【操作系统】进程的通信方式

    千次阅读 2014-04-29 00:24:06
    进程的通信方式

    进程通信的几种方式

           管道通信

           管道是指用于连接一个读进程和写进程以实现它们之间通信的一个共享文件,又名Pipe文件。管道机制需具备的三方面的协调能力:

    (1)      互斥:当读或写进程对Pipe进行操作时,另外一个进程需要等待

    (2)      同步: 当读(写)进程把一定数据写到Pipe中时,需要等待写(读)进程对Pipe执行相应的操作后才能把它唤醒

    (3)      确定对方: 只有当读写进程同时存在时管道才有效

     

           信号量( semophore ) :

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


           消息队列( message queue ) :

           消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。


           共享内存( shared memory ) :

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


           套接字( socket ) :

           Socket也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。


    本人由Cout_Sev 原创,部分资料参考网络及课本,转载注明出处。

    谢谢!


    展开全文
  • 一、进程间的通信方式(1) 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。 (2)有名管道 (namedpipe) : 有名管道也...

    一、进程间的通信方式

    (1) 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
    (2)有名管道 (namedpipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
    (3) 信号量(semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
    (4)消息队列( messagequeue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
    (5)信号 (sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
    (6)共享内存(shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
    (7)套接字(socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

    很好的ppt用于介绍这几种进程通信的特点、对比以及使用http://download.csdn.net/detail/u011774517/9831817

    二、线程间的通信方式

    (1)锁机制:包括互斥锁、条件变量、读写锁
    *互斥锁提供了以排他方式防止数据结构被并发修改的方法。
    *读写锁允许多个线程同时读共享数据,而对写操作是互斥的。
    *条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。
    (2)信号量机制(Semaphore):包括无名线程信号量和命名线程信号量
    (3)信号机制(Signal):类似进程间的信号处理
    线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。

    展开全文
  • 高级通信方式:指以较高的效率传输大量数据的通信方式。高级通信方式主要有以下三类: 一 、共享存储(存储空间) 在通信进程之间存在一块可以直接访问的共享存储空间,通过对该共享空间进行读/写操作实现信息交换...
  • 转自 进程通信的含义 ...由于不同的进程运行在各自不同内存空间中,其中一个进程对于变量修改另一方是无法感知,因此,进程之间消息传递不能通过变量或其他数据结构直接进行,只能通过进程通信
  • Linux进程的通信方式

    2013-10-13 22:38:15
    2010-09-17 09:13 linux进程间通信方式 转自网络 进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的...
  • 进程的通信方式及其优缺点

    千次阅读 2017-09-17 17:41:35
    进程通信的含义 进程是转入内存并准备执行程序,每个程序都有私有虚拟地址空间,由代码,数据以及它可利用系统资源(如文件,管道)组成.多进程/多线程是windows操作系统一个基本特征.Linux系统一般都统称为进程....
  • 这篇笔记主要解决的问题是Electron的主进程与渲染进程之间的通信. 使用ipcMain和ipcRenderer // 来自官方的示例 const {ipcMain} = require('electron') ipcMain.on('asynchronous-message', (event, arg) =&...
  • 通信方式: 管道(包括无名管道和命名管道)、消息队列、信号量、共享存储 管道/无名管道: 管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有血缘关系的进程间使用。进程的血缘关系通常指父子进程...
  • 1.有名管道(命名管道)说明 命名管道通过路径名来标识,并且在文件系统中是可见。 建立了管道之后,两个进程就可以把它当作普通文件一样进行读写操作。
  • 进程的通信方式

    2019-11-27 11:25:56
    不是的,其实我们经常会用到进程的通信方式,只是我们一直没有注意到罢了。 进程间的通信方式,有以下几种: 管道 消息队列 共享内存 信号量 信号 Socket 1、管道 管道分为匿名管道与命名管道。 (1)匿名...
  • 进程通信方式

    2012-10-21 17:21:58
    进程的通信方式  (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。  (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,...
  • 进程之间通信方式 (1) 管道(PIPE) (2) 命名管道(FIFO) (3) 信号量(Semphore) (4) 消息队列(MessageQueue) (5) 共享内存(SharedMemory) (6) Socket Java如何支持进程间通信。我们把Java进程理解为JVM进程。很明显,...
  • 进程通信方式

    2019-08-01 11:48:50
    管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常指父子进程关系。 命名管道(FIFO):有名管道也是半双工的通信方式,但是它允许无亲缘...
  • IPC进程通信的方式

    2017-04-10 19:34:29
    进程通信的方式

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,243
精华内容 7,297
关键字:

进程的通信方式