进程与线程

目录

进程

多进程通信方式

                  管道(无名管道、命名管道)

                  信号

                  共享内存

                  消息队列

父子进程的关系   

线程

多线程同步

多线程互斥


进程

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

多进程通信方式

                  管道、信号、共享内存、消息队列

                  管道(无名管道、命名管道)

                         a. 管道是半双工方式的,以先进先出方式保存一定数量的数据。

                         b. 使用无名管道互相连接的任意进程必须位于一个相关的进程家族里。因为管道必须受到内核的限制,所以如果    进程没有在管道创建者的家族里面,则该进程将无法访问管道。

                         c. 管道的实质其实是一个内核缓存区。

                  信号

                         a. 进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。是一种异步通信方式。

                         b. 信号是Linux 系统中用于进程之间通信或操作的一种机制,信号可以在任何时候发送给某一进程。

                  共享内存

                         a. 共享内存即允许两个或者多个进程共享一个存储区,这段存储区进程可以映射至自身地址,大家共享这块存储区域。

                         b. 效率高,可直接读写内存不需要任何数据拷贝。

                  消息队列

                         a. 消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列    有写权限的进程可以向消息队列中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队                                 列中读走消息。消息队列是随内核持续的。

                         b. 可以按需要读取特定类型消息,不需要按队列次序。 

 

父子进程的关系   

  • 关于资源。子进程除了代码段和父进程共享外,剩余就是一个复制过来的副本,二者也不共享地址空间。
  • 关于文件描述符。父子进程共享文件表项,一个进程修改,另一个进程会知道此文件被修改。

线程

线程是程序执行的最小单位,即CPU调度的基本单位。

多线程同步

                  两个或两个以上的进程或线程在运行过程中协同步调,按预约的先后次序运行。

多线程互斥

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


线程与进程之间的关系

        a. 一个进程的所有线程都共享该进程所获得的资源

        b. 各线程有属于自己的一小部分资源,就是栈空间,保存其运行状态和局部自动变量。

        c. 在线程中 malloc 等申请的空间都是占的进程的资源,即堆资源。

 

多进程与多线程的区别

a. 进程是系统资源分配的最小单位,线程是程序执行的最小单位,即CPU调度的最小单位。

b. 进程创建开销大,线程创建开销小。

c. 进程间通信比较麻烦,线程间通信比较方便。

d. 多进程程序更加健壮。多线程出现某个线程有问题导致整个业务有问题,多进程有独立的地址空间,一个进程有问题影响并不大。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值