进程和进程映像有啥区别?

Posted

技术标签:

【中文标题】进程和进程映像有啥区别?【英文标题】:What's the difference between a process and a process image?进程和进程映像有什么区别? 【发布时间】:2017-06-11 10:32:12 【问题描述】:

进程和进程映像有什么区别?

一个包含什么,另一个不包含什么?有哪些区别成分?

这都在进程控制结构和内存中的进程位置的上下文中。

【问题讨论】:

答案取决于您所指的内容。一个过程只有一种含义,而过程图像可以有多种含义。您在哪里以及如何看待该术语的使用? @user3344003 感谢您的回复。这些术语在进程控制结构和进程在内存中的位置的上下文中使用。进一步的研究表明,进程映像只是进程在虚拟内存中分配的空间?因此,进程和进程映像都可以包含完全相同的组件(程序代码、程序数据、堆栈、PCB)吗?如果有人能澄清这一点,我将不胜感激。 PCB是什么意思?那么,图像的范围是什么?进程地址空间包括系统地址空间。如果您正在考虑进程转储,那通常只是用户地址。如果您正在谈论整个过程的图像,那可能包括用户地址范围和系统地址范围。 @user3344003 PCB 表示过程控制块。那么你是说进程映像只是进程在虚拟内存中的物理表现? 【参考方案1】:

据我了解,进程映像是在执行前为其分配内存时所拍摄的进程映像。发生这种情况是因为,在多任务处理时,内核需要重新进入它停止的进程。如果要在执行过程中更改进程,则可能会发生坏事,因此操作系统会创建进程的只读版本并在执行期间使用它。

Here's a webpage with more details on process images

【讨论】:

感谢您的回复。那么进程映像只是进程在虚拟内存中分配的空间吗?因此,进程和进程映像都可以包含完全相同的组件(程序代码、程序数据、堆栈、PCB)? 是的。唯一的区别是进程映像是只读的(换句话说,不可编辑),而进程可以随时更改。 有趣。它被只读是因为它在辅助存储器而不是主存储器中?如果它在主内存中,它会是可编辑的吗? 它是只读的,因为在多任务处理过程中,内核需要退出并在轮到它访问CPU时重新进入进程中的指令。如果在另一个进程正在运行时更改了进程,那么当调度程序返回到有问题的进程时,它将崩溃,因为该进程现在不同了。 啊,我明白了。感谢您的帮助。【参考方案2】:

一个过程可能涉及的不仅仅是它的图像。它是一个实时变化的图像因此得名,由 CPU 运行。 一个进程可以有多个不同间隔的图像,以及它对 CPU 的影响,这些影响不直接包含在图像中,例如算术运算。

【讨论】:

【参考方案3】:

进程只是一个正在运行的程序的抽象。在流程控制结构的上下文中,当引用流程时,通常指的是流程控制块。

控制结构的简而言之:操作系统通过系统内存中的进程表/列表来跟踪所有进程。它看起来像这样:

Process 1
Process 2
...
Process n

这些列表项中的每一项都是过程映像。每个过程映像依次(通常)包含:

    用户数据(用户程序、用户堆栈、堆) 进程控制块(进程ID、状态信息、进程控制信息)

这样,过程映像就是PCB等等。

总而言之,操作系统保存了一个过程映像列表,其中包括过程控制块和与用户程序相关的所有数据。

【讨论】:

【参考方案4】:

当一个程序作为进程加载时,它会被分配一段虚拟内存,形成其可用的地址空间。在这个过程映像中,通常至少有四个元素:

程序代码(或文本)

要执行的程序指令。请注意,这不是必需的 让处理器将整个进程读入物理 程序运行时的内存,而不是通过称为 ?dynamic 的过程 分页?下一个指令块根据需要加载,并且可以 在进程之间共享。

节目数据

可以区分为初始化变量,包括外部变量 全局变量和静态变量,未初始化的变量(称为 bss Unix 衍生系统上的区域)。数据块之间不共享 默认处理。

堆栈

一个流程通常至少有两个后进先出 (LIFO) 堆栈,包括用户模式的用户堆栈和内核堆栈 内核模式。

过程控制块

操作系统控制进程所需的信息。

Source

【讨论】:

以上是关于进程和进程映像有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

进程和线程有啥区别?

nohup 和守护进程有啥区别?

Windows 服务和 Windows 进程有啥区别?

多进程和多线程有啥区别?

多线程和多进程模式有啥区别

“结束进程”和“结束进程树”有啥区别啊?