理解吃饭
本文共991字,用简单的类比探索计算机科学的哲理。
理解操作系统:就像吃饭一样
01
最熟悉的陌生人
类比这种方法并不严谨,但它会帮你快速找到自己想要的方向。
Hobo吃撑了,公众号:又吃撑了理解操作系统:就像吃饭一样(内存篇)
我们无时不刻不在和进程、线程、轻量化进程、协程等打交道,它们就是活跃在内存和CPU之间的动态实体,是它们造成了计算机的交互和程式化,是计算机中我们“最熟悉的陌生人”。
前期文章将进程“大人吃的大碗饭菜,小孩吃的小碗饭菜”,线程比作“大小碗饭菜里不同的菜和饭”,轻量化进程、协程比作“拌好的一汤匙更易食的菜和饭”,表示它们之间有着层次递进的关系,越细致说明越容易成为组件,越宽泛说明越是集合体。
我们用“色香味形意”去形容饭菜,也会使用一些属性去描述进程(线程、协程等,下同),例如饭菜的香就可以类比为进程的信号描述,我们顺着香气寻找美味的事物,操作系统利用信号调动一个个进程。这里将进程的其他重要描述信息列举如下:进程基本信息、指向内存描述符的指针、与进程相关的tty、当前目录、指向文件描述符的指针等。
02
变换角度看进程
前期文章提到过内核态调用可类比吃需要后厨加工的事物,而用户态可类比吃直接可以吃的事物,如西红柿等。那么问题来了,厨子和食客对待饭菜的角度一样吗?
一边看到油盐酱醋茶和食物材料,而另一边只是看到香喷喷的饭菜,当然不一样!
所以进程这东西同理的,我们可以用封装简化的角度去考虑,但实际上内核处理它、CPU处理它要层层分解,这会导致一些认知上的偏差。
以进程的最基本描述符,编号,pid,举例。如下图,从用户视图来看,可能只有两个进程在运行,但是对于系统内核来说,42号进程的同组进程也是需要单独管理的,是需要单独加工处理的!我们一般说的PID/pid即是用户视图(USER VIEW)的编号。
03
假设进程有生命
这是一个很有意思的类比,因为操作系统或者说电脑正是因为动态化的原因让人感到AI生命的未来可期。
进程作为设想的“AI生命”的细胞,状态机就是它的生老病死,也可类比食物的生长、加工、消化、腐烂。这就是进程的复制(衍生)、结束。
一旦有了生命,那就一定要争抢资源的,这是求生的本能,所谓的“竞态”。有竞争的时候,排队是少不了的,甚至还需要等待区,有的时候还要有各种规则来约束。这里就蕴含着进程的切换。
生命短暂,进程亦如此,记住一切都为了高效。
往期推荐
理解操作系统:就像吃饭一样
操作系统各种延时时间
[入门级]编程语言选择思维导图
“护航效应”与社会调度法则
点击蓝字
关注我们