我是如何理解线程和进程的?

今天我去食堂打饭,看到几个窗口,几队人,差不多是这样的。

 突然我灵光一闪!!!


假设:

食堂大妈=CPU

打饭队列=进程

打饭人=线程


如果进程是操作系统资源分配的基本单位,把饭菜当做系统资源,那么打饭队列不就是分资源的基本单位吗?

如果线程是处理器任务调度和执行的基本单位,那么每一个大饭人都是带着请求饭菜的任务的,他们负责将饭菜带到不同的地方,不就是任务调度执行的基本单位吗?


突然想起了刘慈欣的《圆》。


1.每一个打饭队列(进程)之间是隔离的,互相不会影响的。而打饭人(线程)一个人卡住了,会导致后面一排人都无法打饭。

2.打饭人发生换位(线程上下文切换CS),资源损耗是很小的。而打饭队列发生换位(进程CS),损耗是很大的,打饭大妈会关闭打饭窗口,将打饭队列记录到小本本(寄存器)中,整个队列都会陷入等待状态,等她回来。

3.一个打饭队列包含多个打饭人,如果有食堂大妈给打饭,那么一个打饭人也可以当做是一个队列,只不过是轻量级的。

4.所有打饭人(线程)共享一个打饭队列(进程)的资源,也就是食堂大妈打的饭菜。

5.食堂大妈只能打饭吗?今天A列的食堂大妈给学生们发钱,B列食堂大妈给学生们送奔驰,每一个进程做的工作可以是完全不同的。


同样的例子,

什么是并行?

只有一个大妈给你打饭, 在一个绝对时间点只能打一份饭,一个食堂大妈累得要命打得飞快,看起来就像同时可以打好几份饭一样。

什么是并发?

8核8个大妈,8列同时去打饭,在一个绝对时间点,同时可以打8个人的饭,也就是一时间可以执行8个进程的8个线程。


超线程?

经常看到什么12核16线程,明显嘛,有四个核心要累死了。可以理解为食堂大妈打饭时发现她的另一只手闲置,干脆让她两个手同时打饭,这不就一个时间点可以执行多个线程了吗,当然两只手打饭速度肯定会慢一些。


人类对机器的压榨是无止境的,如果未来机器有了思想,变成了硅基生命,会如何“报答”我们呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值