进程与程序有什么区别和联系

上周,我的一位学习计算机科学的朋友问我进程和程序之间的区别和联系。
首先,虽然程序是静态的;我解释过进程是动态的,而程序是静态的。
就像我们打开编辑器的时候,编辑器程序是静态的;它在磁盘上;然而,一旦开放,它就成为一个不断发展的过程,我们正在开始努力。

2 02 3 年,我发现他还是不懂。
在一个过程中创建;进程有一个生命周期,有阻塞和终止等阶段;然而,这些程序都不存在。
看起来编辑已经完成了。
进程被中止,但程序文件仍然存在。

他又问,程序和进程是如何关联的?假设一个程序可以与许多进程关联。
例如,一个进程只属于一个程序,即使多个用户打开同一个浏览器。
如果打开两个浏览器窗口,系统将为每个窗口创建一个进程。

之后,程序的流程和结构也有所不同,他说。
进程中的程序;和数据程序仅由一组指令组成,其中包括过程控制块 (PCB)。

他还是有点困惑;所以我补充说,进程是程序对数据集合执行的活动。
它是操作系统中资源分配和调度的基本单位。
没有流程;程序无法运行。

然后他又问了我刚刚想到的另一个问题;这意味着在程序运行之前需要创建一个进程。
我说当然可以,双击程序图标;系统会为其分配资源。
将创建一个进程并开始执行。

听完之后,我似乎明白了一些,但还是有点犹豫。
我只是说,你明白的,慢慢来,多想一想。
没问题。

什么是进程,进程与程序有什么区别

程序是静态文件,存储在硬盘上。
例如,Windows 上的 exe、Linux 上的 .out 在编译后会被修改。

进程是一个动态执行实例。
例如,在 Linux 上使用 ps aux 看到的 Java 进程的 PID 为 1 2 3 4 ,占用 2 5 6 MB 内存。

区别:程序不占用资源,进程占用资源。
1 9 9 8 年,Tannenbaum在Modern OS中写道,进程是资源分配的单位。

不要混淆程序和进程。
编译后的文件称为程序。

温馨提示:使用Top或任务管理器查看系统进程,了解资源使用情况。

程序、进程、线程、作业的区别

坦白说,进程和线程是操作系统中的两个核心概念,但很多人分不清它们。
进程是内存中程序的执行状态。
例如,打开的浏览器就是一个进程。
线程是进程内的最小执行单元。
一个进程可以运行多个线程并同时工作。

我们先来说说最重要的事情。
去年跑那个高并发项目的时候,服务器直接崩溃了。
用技术术语来说,这称为雪崩效应。
事实上,前线的轻微延误让一切都倒退了。
当时我们发现,如果一个进程运行的线程过多(比如3 000个左右),它就无法共享CPU资源。
相反,通过将核心拆分为多个进程来使用核心会更稳定。
另一件事是内存在线程之间共享,因此数据可能会混乱。
去年,我们的团队因此遇到了麻烦,我们花了两天时间才找出导致数据混乱的问题。
还有另一个重要的细节。
当进程终止时,其所有线程都会挂起,但线程终止并不影响进程的继续执行。
起初我以为它们是一样的,但后来我发现它们是不同的。

等等,还有一件事。
作业的概念实际上是从用户的角度出发的。
例如,当从PDF发送请求到Word时,整个过程是一项作业,并且可能涉及多个进程和线程。
老实说,这很令人困惑。
很多人不注意这一点。

下次你写技术文档时,你可能想更形象地使用进程和线程的比喻:“进程是乐队,线程是音乐家。
”你怎么认为?

什么是进程,进程与程序有什么区别

这就是陷阱。
不要混淆进程和程序之间的区别。

该程序是静态的,存储在您的硬盘上,不占用资源,不运行。
进程是动态的:它们在内存中运行、占用资源并执行任务。
程序生命周期长,进程生命周期短。
程序独立于操作系统,进程受操作系统控制。