进程与线程的概念,区别,联系
基本概念:
进程是运行时程序的封装,
是系统进行资源调度和分配的基本单位,
实现了操作系统的并发。
线程是进程的子任务,
是CPU调度和分配的基本单位,
用于保证程序的实时性,
实现进程的内部并发;
线程是操作系统可识别的最小执行和调度单位。
区别:
1)线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
2)一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
3)进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见;
4)调度和切换:线程上下文切换比进程上下文切换要快得多。
通信方式:
进程间通信主要包括
管道、
系统IPC(包括消息队列、信号量、信号、共享内存等)、
以及套接字socket。
管道:
1)半双工的(单向),具有固定读写方向
2)只能用于亲缘关系的进程之间的通信
3)它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。
消息队列:
消息队列,是消息的链接表,存放在内核中。
一个消息队列由一个标识符(即队列ID)来标记。
具有写权限的进程可以按照一定的规则向消息队列中添加新信息;
对消息队列有读权限的进程则可以从消息队列中读取信息。
特点:
1)面向记录,具有特定格式及特定优先