操作系统中的过程

问题描述 投票:1回答:2

当我阅读有关操作系统中的进程和线程的源代码时,我遇到了这句话,这对我来说听起来很奇怪:

When a program is executed and handled by the processor, it converts into a process. A process needs to use the data and code segment in the memory.

我认为第一句自然是真的。但是,我无法理解为什么这个过程只需要使用数据和代码段?

#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;
}

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

如果我的想法错了,有人可以解释原因吗?

process operating-system
2个回答
1
投票

进程必须存储在内存中:

  • 码。
  • 堆。
  • 堆。
  • 数据。
  • BSS。

除了非常琐碎的程序,程序将使用所有这些段。看看wikipedia's explanation of what the segments contain

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


0
投票

这种说法不正确。

当程序由处理器执行和处理时,它将转换为进程。进程需要使用内存中的数据和代码段。

在程序执行之前必须存在一个进程。在许多非太监的系统中,单个进程运行多个程序

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

LINKER deine计划细分。加载程序遵循链接器的指令来创建地址空间。

“bss,数据,堆和代码”是一种设想地址空间的坏方法。

有:

  1. 可执行数据
  2. 只读数据
  3. 可以读/写数据 初始化 未初始化

堆和堆栈只是读/写数据。操作系统甚至无法判断哪些数据是堆栈,哪些是堆。这一切都只是记忆。

© www.soinside.com 2019 - 2024. All rights reserved.