进程和线程简单理解

实现多任务方法:一是多颗CPU,二是单个CPU多个核心
一般桌面端产品(手机、计算机)等很注重体积的产品,一般采用多核;
而服务端领域,同时采用两者,更关注如何尽可能提升单台计算机的计算力密度

那么对于单核CPU如何实现多任务?
答案是分时系统:将CPU时间切成一段段时间片,每个时间片只运行某一个软件,比如这个时间段给软件A,下个时间段给软件B,由于时间片很小,我们会感觉AB同时运行,这种分时间片来实现的多任务系统就是分时系统。

分时系统实现原理:把当前任务保存起来,把另一个任务的状态恢复,并把CPU执行权交给它。

从CPU角度来看,执行程序主要依赖内置存储:寄存器和内存(RAM)

1、寄存器:数量少,通过寄存器名进行数据存取。

在把cpu执行权从软件A切换到软件B时候,要把软件A所有用到的寄存器先保存起来,以便于后续轮到软件A执行时候恢复,并把寄存器值恢复到软件B上一次执行时的值,然后把执行权交给软件B

2、内存(RAM):cpu在实模式和保护模式下的内存访问机制完全不同。

在实模式下,多个执行体同在一个地址空间,相互并无干扰

在保护模式下,不同任务可以有不同的地址空间,它主要通过不同的地址映射表来体现,怎么切换地址映射表,也是寄存器。

总结:执行体的上下文,就是一堆寄存器的值,要切换执行体,只需要保存和恢复一堆寄存器的值即可,无论是进程、线程、协程均如此。

1、进程(类比火车)

进程是资源(cpu、内存等)分配的基本单位。

进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。

2、线程(类比车厢)

线程是独立调度的基本单位。

一个进程中可以有多个线程,它们共享进程资源。

QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。

3、两者的区别

Ⅰ 拥有资源

进程是资源分配的基本单位,但是线程不拥有资源,线程间可以共享进程的所有资源。
一个进程可以包含多个线程,不同进程间数据很难共享,同一进程下不同线程间数据很容易共享,进程间不会相互影响,一个线程挂掉一般导致整个进程挂掉

Ⅱ 调度

线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换。(火车换车厢)

Ⅲ 系统开销

进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,操作昂贵,而线程共享进程资源,使用相同的地址空间,因此线程切换开销要小

由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置,而线程切换时只需保存和设置少量寄存器内容,开销很小。

Ⅳ 通信方面

线程间可以通过直接读写同一进程中的数据进行通信,但是进程通信需要借助 IPC。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wangchuang2017

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

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

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

打赏作者

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

抵扣说明:

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

余额充值