热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

操作系统的线程和进程的区别_理解操作系统:就像吃饭一样(进程、线程等)...

理解吃饭本文共991字,用简单的类比探索计算机科学的哲理。理解操作系统:就像吃饭一样01最熟悉的陌生人类比这种方法并不严谨,但它会帮你快速

 理解吃饭

caec453d41d09b747a650ef4da47c7fa.png

本文共991字,用简单的类比探索计算机科学的哲理。

理解操作系统:就像吃饭一样

01

最熟悉的陌生人

类比这种方法并不严谨,但它会帮你快速找到自己想要的方向。

Hobo吃撑了,公众号:又吃撑了理解操作系统:就像吃饭一样(内存篇)

我们无时不刻不在和进程、线程、轻量化进程、协程等打交道,它们就是活跃在内存和CPU之间的动态实体,是它们造成了计算机的交互和程式化,是计算机中我们“最熟悉的陌生人”。

前期文章将进程“大人吃的大碗饭菜,小孩吃的小碗饭菜”,线程比作“大小碗饭菜里不同的菜和饭”,轻量化进程、协程比作“拌好的一汤匙更易食的菜和饭”,表示它们之间有着层次递进的关系,越细致说明越容易成为组件,越宽泛说明越是集合体。

我们用“色香味形意”去形容饭菜,也会使用一些属性去描述进程(线程、协程等,下同),例如饭菜的香就可以类比为进程的信号描述,我们顺着香气寻找美味的事物,操作系统利用信号调动一个个进程。这里将进程的其他重要描述信息列举如下:进程基本信息、指向内存描述符的指针、与进程相关的tty、当前目录、指向文件描述符的指针等。

02

变换角度看进程

前期文章提到过内核态调用可类比吃需要后厨加工的事物,而用户态可类比吃直接可以吃的事物,如西红柿等。那么问题来了,厨子和食客对待饭菜的角度一样吗?

一边看到油盐酱醋茶和食物材料,而另一边只是看到香喷喷的饭菜,当然不一样!

所以进程这东西同理的,我们可以用封装简化的角度去考虑,但实际上内核处理它、CPU处理它要层层分解,这会导致一些认知上的偏差。

以进程的最基本描述符,编号,pid,举例。如下图,从用户视图来看,可能只有两个进程在运行,但是对于系统内核来说,42号进程的同组进程也是需要单独管理的,是需要单独加工处理的!我们一般说的PID/pid即是用户视图(USER VIEW)的编号。

bc833cf1efc5960c4916193ca2fa7ba4.png

03

假设进程有生命

这是一个很有意思的类比,因为操作系统或者说电脑正是因为动态化的原因让人感到AI生命的未来可期。

进程作为设想的“AI生命”的细胞,状态机就是它的生老病死,也可类比食物的生长、加工、消化、腐烂。这就是进程的复制(衍生)、结束。

一旦有了生命,那就一定要争抢资源的,这是求生的本能,所谓的“竞态”。有竞争的时候,排队是少不了的,甚至还需要等待区,有的时候还要有各种规则来约束。这里就蕴含着进程的切换。

生命短暂,进程亦如此,记住一切都为了高效。

往期推荐

理解操作系统:就像吃饭一样

操作系统各种延时时间

[入门级]编程语言选择思维导图

“护航效应”与社会调度法则

点击蓝字

关注我们




推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
author-avatar
翟厉害
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有