`

进程与线程区别,以及各自的通信方式

 
阅读更多

1, 区别

      进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。

      线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。

     一个程序至少一个进程,一个进程至少一个线程。

2,进程之间的通信方式

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


      2).高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。


      3).有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。


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


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


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


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


      8).套接字( socket ) : 套解字也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。

 

注释:刚听到这个面试题的时候,本能的想到java线程间的通讯方式,共享内存,比如ThreadLocal,volatile在主内存与副内存之间通信,semophore(这个没用过),只能说操作系统知识是基础,对于理解java线程有一定的提升。

 

3,线程间的通信方式

 

         1)锁机制

  • 互斥锁:提供了以排它方式阻止数据结构被并发修改的方法。
  • 读写锁:允许多个线程同时读共享数据,而对写操作互斥。
  • 条件变量:可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。

        2)信号量机制:包括无名线程信号量与有名线程信号量

        3)信号机制:类似于进程间的信号处理。

线程间通信的主要目的是用于线程同步,所以线程没有象进程通信中用于数据交换的通信机制。

 

 

 

分享到:
评论

相关推荐

    进程与线程的区别进程的通信方式线程的通信方式文.pdf

    进程与线程是操作系统中并行处理任务的两种基本概念,它们在计算机系统中扮演着重要的角色,尤其是在多任务和多处理器环境下。 首先,我们来理解进程的概念。进程可以被比喻为马路上的马车,每个进程都有独立的资源...

    Qt线程之间通信、线程和进程之间通信实例

    本实例将深入探讨Qt如何实现线程间通信以及线程与进程间通信,并提供简单易懂的代码示例。 一、Qt线程间通信 Qt通过信号和槽机制,使得线程间的通信变得直观且易于理解。信号是对象状态变化的通知,而槽是响应这些...

    进程和线程之间的关系

    下面将详细阐述进程与线程之间的区别及其相互作用。 #### 一、进程的概念 进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位。每一个进程都有独立的地址空间和系统资源,包括但不限于内存段、打开的...

    进程与线程--小练习

    进程与线程的主要区别在于资源分配和独立性。进程是资源分配的基本单位,而线程是调度的基本单位。一个进程内的多个线程可以并发执行,共同完成一项任务,从而提高了程序的执行效率。但是,线程间的资源共享也带来了...

    操作系统中的进程与线程

    进程是操作系统资源分配的基本单位,它拥有独立的内存空间,包括代码、数据、堆栈等资源,而线程则是执行调度的基本单位,线程共享同一进程的内存资源,但拥有各自的程序计数器、寄存器状态和栈。 **进程与线程的...

    c语言多进程多线程编程

    3. **线程通信与同步**:线程间的通信通常通过共享内存实现,因为它们本就属于同一个进程。线程同步可以使用`pthread_mutex_lock()`和`pthread_mutex_unlock()`进行互斥锁操作,或者使用条件变量(`pthread_cond_t`...

    feiQhongzha进程与线程

    本文将深入探讨"feiQhongzha"这个场景下,进程与线程的应用。 首先,我们需要理解什么是进程。在操作系统中,进程是正在执行的一个程序实例,它拥有自己的内存空间,包括代码、数据和栈等。每个进程都有独立的资源...

    线程和进程的区别.txt

    综上所述,进程和线程各自有着不同的特点和应用场景。选择合适的方式对于提升程序的性能和可靠性至关重要。在实际开发过程中,根据具体需求合理地利用进程和线程的概念,可以有效地优化软件的设计和实现。

    进程线程及堆栈关系的总结

    ### 进程线程及堆栈关系的总结 #### 一、进程与线程的概念及其关系 **进程**是具有一定独立功能的程序在一个特定数据集合上的运行活动,是系统进行资源分配和调度的一个独立单位。进程是操作系统进行管理和调度的...

    进程线程 句柄

    进程与线程之间的关系紧密,但又各自扮演着不同的角色。具体来说: 1. **资源分配角度**:进程是资源分配的基本单位,而线程是处理机调度的基本单位。 2. **通信方式**:进程间通信较为复杂,通常需要通过共享内存...

    por.rar_进程与线程

    在计算机科学中,进程与线程是操作系统中的两个基本概念,尤其在多任务环境中起着至关重要的作用。这里,我们以“por.rar_进程与线程”为例,结合医院候诊系统的应用场景,来深入理解这两个概念。 首先,我们来解释...

    线程与进程

    #### 二、线程与进程的区别 1. **资源拥有与共享**:进程拥有独立的地址空间和其他资源,而线程与同进程中的其他线程共享进程的大部分资源,包括内存、文件句柄等。 2. **创建与销毁成本**:创建或销毁一个进程的...

    Windows下查看进程中的线程

    查看进程中的线程可以帮助我们理解程序运行时的情况,比如CPU使用率高的原因可能是某个线程在进行密集计算,或者线程间通信出现问题导致的。 在Windows操作系统中,我们可以使用以下几种方法来查看进程中的线程: ...

    创建线程及线程间通信

    本话题将深入探讨如何创建线程以及线程间如何进行通信,特别是通过互斥信号量实现线程的互斥访问。 首先,我们要理解什么是线程。线程是操作系统分配处理器时间的基本单位,它是进程内的执行单元。在同一个进程中,...

    消息队列在Linux线程或进程间通信中的应用.pdf

    在多线程环境中,除了上述的进程间通信方式,线程间通信也可以使用上述的IPC机制,特别是当线程在同一个进程中时。线程间通信相比进程间通信通常更快,因为它们共享相同的地址空间。 在选择通信机制时,应根据具体...

    axd.rar_进程与线程

    3. **进程与线程的区别**:进程之间相互独立,拥有各自的资源,而线程是共享资源的,因此线程间的切换成本比进程低,但数据同步和保护更复杂。 4. **多线程的优势**:提高程序的执行效率,特别是在I/O操作密集型的...

    在线程中启动进程

    本文将深入探讨在线程中启动进程这一技术,以及如何通过管道(pipe)来实现线程与子进程之间的通信。 首先,我们来理解一下多线程和多进程的概念。多线程是指在一个进程中可以同时执行多个线程,它们共享同一地址...

    Linux下的多进程/线程网络通信

    程序运行之后,用户可以随时终止程序的运行(比如按下CTRL+C),要求两个进程P1和P2在结束前将各自读取的报文数量(N_rev_P1、N_rev_P2)和各自写入Packet文件中报文的数量(N_wrt_P1、N_wrt_P2)分别写入Report...

    操作系统课件:进程与线程

    在进行操作系统实验时,理解并熟练掌握进程与线程的创建、管理和通信至关重要。通过实践,可以更深入地理解操作系统如何调度资源,以及如何编写高效、并发的程序。对于操作系统原理的学习,这些实验提供了宝贵的实践...

Global site tag (gtag.js) - Google Analytics