进程和线程

1 进程

1.1 什么是进程

一个可执行文件运行起来,就可以看作是一个进程,进程是操作系统分配资源的最小单位。

1.2 怎么描述进程?

内核中使用进程控制块(PCB)来描述一个进程,每创建一个进程就会同时创建一个PCB这样的类的实例。

描述使用的PCB

组织使用的链表

1.2.1  PCB包含哪些信息?

  1. pid(进程id):身份标识
  2. 一组内存指针:指向进程运行时依赖的指令和数据在内存的哪个位置
  3. 进程的状态:是正在运行还是休眠
  4. 进程的优先级:这个进程是优先于CPU执行还是放到后面
  5. 进程的记账信息:记录了进程在CPU上一共执行了多长时间,通过这个时间来吸纳之不要让某个进程霸占CPU太久,导致其他进程无法进行
  6. 上下文:保存了上次进程在CPU上执行的进度,以便下次进程上CPU的时候能够继续执行

2 线程

2.1 为什么引入线程?

  1. 线程比进程更轻量,并发编程的时候,效率更高
  2. 线程之间共享的资源多,完成一些操作时更方便

其实就是因为进程太“重了”, 如果使用进程作为调度的基本单位的话,太消耗性能了。

所谓的线程是“轻量级”的进程,也是一种实现并发编程的方式。

创建一个线程比创建一个进程的成本低,销毁一个线程比销毁一个进程的成本也

成本低的原因是:创建一个线程,不需要给这个线程分配很多的资源(因为大部分资源都是和原来的资源共享的)

同一个进程的多个线程之间共享的资源主要是两个方面:

  • 内存资源(但是两个不同进程之间的内存不能共享)
  • 打开的文件

不能共享的资源:

  1. 上下文/优先级/状态/记账信息(每个线程之间都要独立的参与CPU的调度)
  2. 内存中有一块特殊的区域  栈  空间是每个线程要独立一份

2.2 进程和线程的区别和联系?

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

线程是调度和执行的最小单位

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值