程序员学操作系统到底有什么好处?

 我来答
科创17
2022-06-15 · TA获得超过5866个赞
知道小有建树答主
回答量:2846
采纳率:100%
帮助的人:170万
展开全部
之前面试了一个来应聘的同学,我问了他一个问题:“你知道什么是进程,什么是线程吗?”答:“进程是程序的一次执行过程,线程是......”答案几乎是书上的标准答案,我心想,这哥们和我当初找工作时一样,把概念背得滚瓜烂熟。

首先解释一下我为什么会问这个问题,原因很简单。我当初找工作那会儿也老被面试官问这个问题,至于他们为什么问,我也不知道。我后来又叫这位同学给我聊一聊自己对进程和线程的理解,他便聊不出来了。这样看来他肯定是没有写过多线程和多进程程序的。

我相信除了这位同学,很多同学都对进程和线程比较迷糊,也从来没有写过多线程和多进程程序。但话又说回来,我们为什么要写多线程或者多进程程序呢?进程和线程只是编程过程中一个比较典型的代表,代表操作系统、代表底层技术。说个现实点的问题,如果你的工作是写业务代码,一直接触不到基础架构相关的东西,那么你是很容易被替代的。如果大家想要在技术上更进一步,避免不了要去了解一些更底层的东西,操作系统就是学习底层技术的众多课程中必不可少的一门课。并且,有些东西只有自己亲自做过才能明白其中的原理。比如在并发程序中,我们可能用到线程池,到底开多少线程合适、选择异步还是多线程、多进程还是多线程等等这些问题都是基于经验的。

程序员学了操作系统有什么好处?除了能升职加薪,还能对技术有更深层次的理解。操作系统是很多技术的基石,所以,在校生们一定要好好学,已经毕业的同学也可以抽空看看书。既然我们今天提到了进程和线程,不妨换一种方式来聊一聊它们。当然,这里先说个题外话,以下内容都是基于我自己的理解而非标准的概念,如果有不妥之处,希望大家及时指正。书本告诉我们“进程是程序的一次执行过程”,“一个进程可以由多个线程构成”。最烦这种概念式的解释,它的作用就是用一种抽象的描述来解释另一种抽象的描述,反正不容易理解就是了。

现在我们用一个不恰当的比喻来描述进程。如果我们把一个人看成一个程序,那进程指的就是这个人的一生。人若丧失了灵魂,那么身体就是一个静止的物品,当物品有了生命,就有了活动,就像程序开始执行了一样。人这一生活动的过程可被称为进程。从概念上讲,“进程等于程序的一次执行过程”。程序是一种静态的东西,你可以理解成一串代码,而进程就是这段代码跑起来了,刚启动的那一刻就像婴儿出生,程序终止的那一瞬间就像人的死亡。

好了,现在我们阐述了进程,该来阐述线程了。

问大家一个俗气的问题,你蹲坑的时候还会做其他什么事情吗?我相信大部分人不会一门心思蹲坑,肯定还会玩手机。人可以一边蹲坑,一边玩手机,同时还能思考,我们就可以把我们同时做的每一件事情看作一个线程,人就是一个多线程的程序。

有些线程在工作一段时间后就进入了休眠状态,比如吃饭、蹲坑.... 一个人不可能一天24小时一直吃饭,所以吃饭这个线程是不定时执行的。人虽然是一个多线程程序,但是和真实的计算机一样,当线程数过多之后一样会处理不过来,就像我们不能同时做很多事情。但是,有些线程是不能停止的,一旦停止了整个进程就结束了,比如人的心跳就是我们这个进程中的主线程。

上述就是我对进程和线程的一个不恰当比喻,不知道大家有所体会没有,下次面试官让你谈一谈你对进程和线程的理解时你可以给他举这个例子。

为了进一步地理解进程和线程,我们用一个更直观的例子来讲解。相信大家都用过word这款文本记录软件吧,我们打开word写字的时候,word这个程序被执行的过程可以被称为进程。不知道大家有没有注意过word,当我们写字的时候,每过一段时间它都会为我们自动保存一下当前的文档,其实这个保存的操作就是由一个独立的线程来完成的。你通过键盘输入一些文字到计算机,word的一个线程在监听着你的“写”操作,而另一个线程则时不时地为你保存文档,这就是一个多线程程序工作的模式。当然,word肯定没有我们说得这么简单,这里我们只是对它进行了一定的抽象。

有了进程和线程,事情就变得简单多了。

首先,进程之间可以进行切换,这也就很好地解释了你的计算机为什么可以支持你一边打 游戏 一边放音乐,这是两个独立的进程。CPU的核心数是一定的,计算机能够同时运行成百上千个进程主要是由于进程之间的切换和调度。多线程也让我们的编程变得更加有效,要体现一个东西的重要性,一种好办法就是设想这种东西不存在会造成什么后果。假设世界上没有线程,那么我们的web服务器同一时间段只能支持一个用户访问,即当你在浏览淘宝页面的时候,其他同学的淘宝app将会显示“正在加载中”。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式