进程和程序的关系

进程管理是关键,病毒进程需及时清除。

这就是坑:忽视进程监控,病毒可能潜藏。

别信:误杀系统进程,系统会崩溃。

别这么干:手动杀毒前,先备份重要数据。

进程和程序的关系

哎哟,这俩词儿啊,得好好说说。
先说“程序”,这玩意儿就像是一份菜谱,告诉你怎么做菜,但你自己得动手做,菜谱本身是不会动的。
我记得我第一次接触这概念是在2 008 年,那时候我刚接触计算机科学,那时候老师就给我讲,程序这东西,它就是个静态的指令集合,没有运行的含义。

再来说“进程”,这就像是你按照菜谱做菜的过程。
你开始做菜,这就是一个进程,你先洗菜,再切菜,最后炒菜,这个过程就是一个动态的执行过程。
我第一次听说进程这个词儿,也是在2 008 年,那时候我还在上大学,计算机组成原理课,老师讲得挺有意思。

那为什么同一个程序可以对应多个进程呢?举个例子,比如你打开一个文档编辑软件,这个软件就是一个程序,你打开它,编辑文档,这就是一个进程。
如果你又打开一个文档编辑软件,编辑另一个文档,这就是另一个进程。
所以,同一个程序可以对应多个进程。

至于你提供的链接,我去看了一下,确实解释得挺详细的。
程序和进程这两个概念,对于理解计算机工作原理很重要,不过说实话,我当时也没想明白,得慢慢来,多实践,多思考。

一个应用程序是多个进程么?

说实话,你这问题问得挺有意思的,正好把我最近琢磨的这块儿给勾出来了。
咱们聊聊程序和进程这事儿,得从最实在的地方说。

你说的没错,一个程序(比如你桌面上那个微信.exe)是存硬盘上的静态代码块,跟你说再怎么熟,它就是个冷冰冰的文件。
但这个程序跑起来的时候,它就变成进程了——就像你打开微信,系统给它分了一块内存,给它喂饭,它才活过来干活。

有意思的是,单进程和多进程这事儿,得看应用怎么设计。
像计算器这种简单玩意儿,它要是一启动就开好几个进程,那纯属浪费资源。
所以多数情况下,它就自己蜷缩在一个进程里,里面开几个线程干活,比如你发条文字消息,另个线程在传语音,反正都在一个房子里吵闹,但至少房子是同一个。

但到了复杂应用这儿,设计就变了。
想想Chrome浏览器,你要是开十个标签页,要是每个都单开进程,那系统资源得被榨干。
但要是全在一个进程里,万一一个标签页死掉了,整个浏览器都得趴窝。
所以Chrome就玩了个花活,每个标签页、每个插件都单独开进程,一个出事儿了,其他的好好的还得继续转。

说白了,这背后是设计者跟操作系统较劲的结果。
稳定性要高,就多开进程隔离风险;性能要猛,就得让多核CPU同时干活。
比如视频剪辑软件,渲染画面和响应用户操作最好分开跑,不然你拖动进度条的时候画面卡成狗,那体验就极差。

不过也有坑,比如Android系统,一个App默认就是一个进程,但开发者可以通过在AndroidManifest.xml里加个android:process属性,让多个App实例跑同一个进程。
我当时也没想明白为啥要这么干,后来发现可能是为了省内存,或者某些特定场景下通信更方便?这块我没亲自跑过,数据我记得是X左右,但建议你核实。

最关键的是,别被"一个应用只能一个进程"这种说法给忽悠了。
进程是线程的容器,一个进程里肯定得有线程,但线程跟应用本身关系不大,更像是进程这个大房子里的水电工。
你把水电工换成谁,房子还是那个房子。

这事儿说到底,就是看你怎么权衡稳定性和性能,操作系统给的限制也得考虑进去。
没个绝对的对错,就看应用场景怎么取舍。