面试常问—进程与线程的区别

目录

一、进程

二、线程

三、进程与线程的区别


一、进程

做个简单的比喻:进程 = 火车;

进程是操作系统资源分配的最小单元。一个进程拥有的资源有⾃⼰的堆、栈、虚存空间(页表)、文件描述符等信息。 从编程的角度来理解进程,可以把它看作是⼀个类或一个 PCB
(Process Control Block)进程控制块的结构体。

进程是操作系统对一个正在运行的程序的一种抽象,可以把进程看作程序运行的一次运行过程。

进程的本质:PCB(Process Control Block),类似于java中的类,每一个PCB对象就代表着一个实实在在运行着的程序,也就是进程。PCB中包含了:

1.PID:进程ID,是进程的唯一身份标识,但是它不是固定不变的,是每次启动进程时动态分配的。

2.进程状态:①新建状态(NEW)  ②就绪状态  ③运行状态  ④阻塞状态  ⑤销毁状态

3.优先级:决定进程的执行顺序

4.记账信息:保证进程执行的公平性,它记录CPU调用次数和执行间隔,为进程调度器提供数据支持,规避进程饿死。

5.上下文信息:保存本次的执行状态,以便下次执行。

6.一组内存:指定进程需要使用的资源。

二、线程

做个简单的比喻: 线程 = 车厢;

线程是操作系统能够进行运算调度的最小单元。它被包含在进程中,是进程中实际运行的单位。一个进程中可以并发多个线程,每个线程执行不同的任务 。

虽然多进程也能实现并发编程,但是线程比进程更轻量

线程的优势

·  创建线程比创建进程更快 

·  销毁线程比销毁进程更快

·  调度线程比调度进程更快

三、进程与线程的区别

前面我们也比喻两者,即进程=火车,线程=车厢;

1.线程在进程下行进  (单纯的车厢无法运行);
2.一个进程可以包含多个线程  (一辆火车可以有多个车厢);
3.不同进程间数据很难共享  (一辆火车上的乘客很难换到另外一辆火车,比如站点换乘);
4.同一进程下不同线程间数据很易共享 (A车厢换到B车厢很容易);
5.进程要比线程消耗更多的计算机资源 (采用多列火车相比多个车厢更耗资源);
6.进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中问的一节车厢着火了,将影响到所有车厢);
7.进程可以拓展到多机,进程最多适合多核(不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上);
8.进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。(比如火车上的洗手间)一"互斥锁";
9.进程使用的内存地址可以限定使用量(比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去)一“信号量”;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小y979

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值