进程与线程(补充)

什么是进程

进程与线程(补充)

 

宏观来讲:

操作系统是包含多个进程的容器,而每个进程又都是容纳多个线程的容器。

 

Oracle文档的官方定义

进程:使用fork(2)系统调用创建的UNIX环境(例如文件描述符,用户ID等),它被设置为运行程序。

线程:在进程上下文中执行的一系列指令

 

进程(Process),指的是程序的一次执行。在用户下达运行程序的命令后,就会产生进程。

 

Java把一个类new出来,这是实例化的过程,进程就相当于代码的实例化,每一次的运行,进程都是不完全一样的,就像实例与实例之间不完全一样。

 

总结:进程是程序的真正运行实例,是资源分配的基本单位。

 

什么是线程

定义:线程是CPU的基本调度单位,每个线程执行的都是进程代码的某个片段

 

进程和线程的六点不同

1.起源不同

先有进程,后有线程。处理器的速度往往比外设要快,为了提高CPU的利用率,提高程序的执行效率,诞生了线程。

2.概念不同

进程是有独立功能的一个程序运行起来的活动、实例,是系统分配资源和调度的单位

线程是CPU的调度单位

3.内存共享方式不同

对于进程而言,不同的进程都会被操作系统分配到一定的内存,不同进程之间的资源通常是不共享的。进程间通讯需要使用进程间通信(IPC)

线程与线程之间内存共享容易,因为服务于同一个进程,要想服务的好,需要合作,所以两个线程之间通讯很容易,可以直接访问共享的内存,不需要额外的处理。

4.拥有的资源不同

线程是进程的一部分,拥有的资源一定少于进程。但是线程拥有一些独有的内容

1)进程代码段(重点)

2)进程的共有数据(利用这些共享的数据,线程很容易的实现相互的通讯)

3)进程打开的文件描述符

4)信号的处理器

5)进程的当前目录

6)进程用户ID与进程组ID

线程之间独有的内容

1、线程ID

2、寄存器组的值

3、线程的堆栈(重点)

4、错误返回码

5、线程的信号屏蔽码

5.进程和线程数量不同

进程一个,线程可以有多个。一个线程至少拥有一个线程,否则没有办法执行

6. 开销不同

1)线程的创建、终止时间比进程短

2)同一进程内的线程切换时间比进程切换短

3)同一进程的各个线程间共享内存和文件资源,可以不通过内核进行通信

相似点:生命周期