进程和线程的区别和联系
1. 进程和线程的联系
1.1 进程
进程就是一个运行起来的一个程序。如下图所示,打开电脑的任务管理器,就可以看到电脑正在运行的程序,而每一个正在运行的程序就是一个进程。

站在操作系统的角度上要管理进程就需要一个非常大的结构体来描述进程的核心属性,这个结构体就是进程控制块(PCB),然后再把进程组织起来。对于linux操作系统使用链表的形式将多个PCB串到一起。创建一个进程,就创建一个PCB,并初始化其属性,再添加到链表中;销毁一个进程时,就是把PCB从链表中删除;要查看进程列表就是遍历整个链表把重要信息显示出来。
PCB的中关键点
1.pid (进程身份的标识符)
2.内存指针(一组指针,通过内存指针得知要执行的指令在哪里)
3.进程描述符表(进程在读取文件时,需要先打开文件,每打开一个文件,就会把这个文件的信息保存在进程描述符表中)
4.进程状态(就绪和阻塞)
5.进程优先级(有的进程优先级高,分配的资源多)
6.进程上下文(沿着上次的执行状态进行往下执行)
保存上下文:把CPU中寄存器的值中保存在内存(PCB中)
恢复上下文:把PCB中的保存的数据,返还给寄存器
6.进程的记账信息(统计每个进程在CPU执行时间)
1.2 线程
由于进程的创建和销毁都是比较“重”的操作,因此,引入了轻量级的线程,开销相对应进程来说是比较小的。一个进程包含有一个线程或多个线程。
2. 进程和线程的区别
1.进程是操作系统资源分配的基本单位;线程是操作系统调度的基本单位。
2.进程之间所涉及到的资源是互不影响的,而一个进程中的多个线程之间共用当前进程中的资源。
3.进程的创建需要申请资源,进程中的第一个线程和进程同时创建,需要申请资源,但是如果有多个线程的创建,后面的线程就不需要申请资源了。
4.进程的销毁需要释放资源,进程中的线程只有当所有的线程都销毁(进程销毁)时才会释放资源。