浅谈多进程与多线程

线程与进程的区别

  • 进程:

    进程是系统资源分配的最小单位

  • 父子进程的关系:

    1,关于资源,子进程是父进程的副本,子进程获取父进程的数据内存,堆和栈的副本,他们只共享正文段。
    2,关于文件描述符,父子进程共享文件表项,一个进程修改,另一个进程也知道此文件被修改了。

  • 多进程通信方式

    1,管道(无名管道,有名管道)
    2,信号
    3,共享内存
    4,消息队列

  • 管道

     1,管道是半双工的,管道允许进程间按先进先出的方式传送数据
     2,无名管道只可在有亲缘关系的进程之间通信,有名管道则都可以
     3,管道的实质其实是一个内核缓存区,该缓存区可看作是一个循环队列
    
  • 消息队列

     1,消息队列就是一个消息链表,是一系列保存在内核中消息的列表
     2,消息队列对于管道通信的优点就是可以按需要读取特定类型消息,不需要按队列次序
    
  • 共享内存:

     1,共享内存即允许两个或多个进程共享一个存储区,这段存储区进程可以映射至自身地址,大家共享这块存储区域
     2,共享内存,效率高,可直接读写内存不需任何数据拷贝,而管道,消息队列需要拷贝4次,共享内存只需2次
    
  • 信号

     1,信号是Linux系统中用于进程之间通信或操作的一种机制,信号可以在任何时候发送给某一进程
     2,信号是软件层次上对中断机制的一种模拟,是一种异步通信方式
     3,信号事件来源,硬件来源,软件来源
     4,SIGKILL、SEGSTOP应用进程无法捕捉和忽略,这是为了使系统管理员能在任何时候中断或结束某一特定的进程。
    
  • 线程

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

  • 多线程同步:

    两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行。比如 A 任务的运行依赖于 B 任务产生的数据

  • 多线程互斥:

    一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。

  • 多进程与多线程的区别及优劣:

    1,进程是系统资源分配的最小单位,线程是程序执行的最小单位,即CPU调度的基本单位。
    2,进程创建开销大,线程创建开销小
    3,进程间通信比较麻烦,线程间通信比较方便
    4,多进程程序更加健壮,多线程出现某个线程挂掉导致整个业务挂掉,多进程有独立的地址空间,一个进程挂掉影响可能并不大。

你可能感兴趣的:(进程,线程,多线程,linux)