Process 操作系统中的进程

Process 操作系统中的进程,process,operating-system,Process,Operating System,当我读到一篇关于操作系统中进程和线程的文章时,我遇到了这样一句话,我觉得这听起来很奇怪: 当一个程序被处理器执行和处理时,它会转换成一个进程。进程需要使用内存中的数据和代码段。 我认为第一句话自然是正确的。然而,我无法理解为什么流程需要单独使用数据和代码段 #include <stdio.h> x = 10; y; int main(void){ int *array = (int*)malloc(sizeof(int) * 4); printf("x and y a

当我读到一篇关于操作系统中进程和线程的文章时,我遇到了这样一句话,我觉得这听起来很奇怪:


当一个程序被处理器执行和处理时,它会转换成一个进程。进程需要使用内存中的数据和代码段。

我认为第一句话自然是正确的。然而,我无法理解为什么流程需要单独使用数据和代码段

#include <stdio.h>
x = 10;
y;

int main(void){

   int *array = (int*)malloc(sizeof(int) * 4);
   printf("x and y are %d %d", x, y);

   return 0;
}
#包括
x=10;
Y
内部主(空){
int*数组=(int*)malloc(sizeof(int)*4);
printf(“x和y是%d%d”,x,y);
返回0;
}
我认为在执行这段代码时,生成的进程使用bss、数据、堆和代码段。在我看来,进程可以从内存的任何部分中受益


如果我的想法是错误的,有人能解释原因吗?

进程必须存储在内存中:

  • 代码
  • 堆叠
  • 数据
  • BSS
除了非常琐碎的片段外,程序将使用所有这些片段。看一看


我认为在这句话中,作者不想详细说明,而是将Stack/Heap/Data/BSS称为程序的数据,而不是实际的数据段。

这句话不正确


当一个程序被处理器执行和处理时,它会转换成一个进程。进程需要使用内存中的数据和代码段

在执行程序之前,必须存在一个进程。在许多非宦官的系统上,一个进程运行多个程序

我认为在执行这段代码时,生成的进程使用bss、数据、堆和代码段。在我看来,进程可以从内存的任何部分中受益

链接器删除程序段。加载程序按照链接器的指令创建地址空间

“bss、数据、堆和代码”是一种设想地址空间的糟糕方式

有:

  • 可执行数据
  • 只读数据
  • 读/写可以
    • 初始化
    • 未初始化

  • 堆和堆栈只是读/写数据。操作系统甚至无法分辨哪些数据是堆栈,哪些是堆。都是记忆。

    你在读什么书?这其实不是一本书。这些句子写在我所在大学的演示文稿中。“当一个程序被处理器执行和处理时,它会转化为一个进程。”我认为这句话是对的,因为《现代操作系统》一书中有一句话:“程序可以存储在磁盘中,而不做任何事情。过程是某种活动。“书中还有一个很好的类比,暗示食物配方是一个程序,而过程是通过配方烘焙蛋糕的活动。在这种情况下,在执行程序之前,进程是如何存在的?在某些系统中,用户总是有一个进程,其中包含一个位于后台的命令解释器。命令解释器在该过程中运行程序。在宦官变体中,您得到一个进程,其中一个程序已经加载,然后重新加载另一个程序。