本文主要介绍过程意味着什么(过程是什么的概念),下面一起看看过程意味着什么(过程是什么的概念)相关资讯。
进程是计算机科学中最深刻、最成功的概念之一。
当在计算机系统上运行一个程序时,你会得到一个错觉,这个程序独占地使用处理器和内存,就好像它是系统中当前运行的唯一程序一样。处理器似乎不间断地一条一条执行程序中的命令,而代码和数据似乎是系统内存中唯一的对象。这些错觉是由过程的概念提供的。
系统中的每个程序都在进程的上下文中运行。上下文由程序正确运行所需的状态组成。该状态包括存储在存储器中的程序的代码和数据,以及它的堆栈、通用寄存器的内容、程序计数器、环境变量和打开文件描述符的集合。
每当用户通过在外壳中输入可执行目标文件的名称来运行程序时,外壳将创建一个新进程,然后在这个新进程的上下文中运行可执行目标文件。应用程序还可以创建新的进程,并在这个新进程的上下文中运行自己的代码或其他应用程序。
这里我们不讨论操作系统实现过程的细节,而是关注该过程向应用程序提供的关键抽象:
一个独立的逻辑控制流,它提供了一个程序独占使用处理器的假象;一个私有的地址空间,提供了一个程序独占使用内存系统的假象。1.逻辑控制流即使系统中有许多其他程序在运行,进程也可能给每个程序带来独占使用处理器的错觉。如果您想使用调试器来逐句通过一个程序,您将看到一系列程序计数器(pc)值,它们唯一地对应于程序的可执行对象文件中包含的指令或运行时动态链接到程序的共享对象中包含的指令。这个pc值序列被称为逻辑控制流。
程序计数器(pc)是计算机处理器中的一个寄存器,它包含当前正在执行的指令的地址(位置)。每取出一条指令,程序计数器的存储地址就加1,指向序列中的下一条指令,每条指令都是这样执行的。当计算机重新启动或复位时,程序计数器通常归零。
例如,一个运行三个进程的系统,如下图所示,处理器的一个物理控制流被分成三个逻辑流,每个进程一个。图中的每个竖线代表流程逻辑流的一部分。三个逻辑流程的执行是交错的。进程a运行一段时间,然后进程b开始运行到完成,然后进程c运行一段时间,然后进程a运行到完成,最后进程c继续运行到结束。
上图的重点是进程依次使用处理器。每个进程执行其流的一部分,然后暂时挂起,然后轮到其他进程。为了磨合在这些进程之一的上下文中,一个程序似乎正在独占地使用处理器。
一个逻辑流的执行在时间上与另一个流重叠,这被称为并发流。这两个流程称为并发操作。
参考阅读:并发性和并行性的区别
2.私有地址空间进程也给每个程序提供了一种错觉,以为它独占使用系统地址空间。在具有n位地址的机器上,地址空间是一组2 n个可能的地址。一个进程为每个程序提供它自己的私有地址空间。通常,与该空间中的地址相关联的存储器字节不能被其他进程读取或写入。从这个意义上说,这个地址空间是私有的。
尽管与每个私有地址空间相关联的存储器的内容通常是不同的,但是每个这样的空间具有相同的总体结构。下图显示了x8664 linux进程的地址空间的组织结构。
地址空间的底部是为用户程序保留的,包括通常的代码、数据、堆和堆栈段。代码段总是从地址0x400000开始。地址空间的顶部是为内核保留的(操作系统内存驻留的一部分)。这部分地址空间包含内核在代表进程执行指令时使用的代码、数据、堆和堆栈。
了解更多过程意味着什么(过程是什么的概念)相关内容请关注本站点。