进程(Process)
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
线程(Thread)
线程(Thread)是程序执行流中的最小单元,是一个单一的顺序控制流程,是进程内一个相对独立的、可调度的执行单元。另外线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程彼此之间共享进程所拥有的全部资源。另外线程也被称为是轻型线程。线程具有以下属性:
- 轻型实体:轻型意味着不拥有系统资源,线程的切换非常迅速且开销小。
- 独立调度和分派的基本单位
- 可并发执行
- 共享进程资源
进程与线程的关系
- 一个进程可以有多个线程,但是至少要有一个线程,一个线程只能属于一个进程。
- 资源分配给进程,进程内的所有线程共享资源。
- 线程是进程的一个实体,进程的程序的一个实体。
进程与线程的区别
- 调度:程作为调度和分配的基本单位,进程作为拥有资源的基本单位
- 并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执
- 拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。更细化地讲,进程拥有自己独立的堆和栈,彼此之间不共享堆也不共享栈。线程拥有自己独立的栈和共享的堆,共享堆但是不共享栈。
- 系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
进程之间的通信方式
- 管道(Pipe)和有名管道(Named Pipe)
- 信号(Signal)
- 消息队列(Message Queue)
- 共享内存(Shared Memory)
- 信号量和互斥锁(Semaphore&Mutex)
- 套接字(Socket)