每个系统调用都会创建一个进程吗?

时间:2019-07-20 12:43:03

标签: operating-system

每个系统调用都会创建一个进程吗? 程序和操作系统的所有功能(例如中断)是否以进程的形式执行? 我感到如此大量的过程控制块,大量的过程调度浪费了大量资源。 或者,系统调用的内核指令被视为当前指令的一部分  过程。

2 个答案:

答案 0 :(得分:1)

简短的答案是-不完全是。但是我们必须就我们所谓的“过程”达成共识。流程更像是一个抽象概念,它封装了多条指令,每条指令顺序执行。

所以让我们从第一个问题开始。

  

每个系统调用都会创建一个进程吗?

不。每个系统调用都是当前正在运行的过程的结果,它告诉操作系统-“嗨,操作系统,我需要您为我打开此文件,或在此处阅读这些内容”。在这种情况下,过程是一袋顺序执行的指令,有些是系统调用,有些不是。

那么我们有。

  

程序和操作系统的所有功能(例如中断)是否都以进程的形式执行?

这种情况可以追溯到第一个问题。我们不认为系统调用(一种告诉操作系统在严格条件下执行某项操作并在严格条件下运行的操作)是一个单独的过程。我们不会看到系统调用执行具有其OWN进程ID(pid)。

那么我们有。

  

我觉得这么多的流程控制块,大量的流程调度浪费了很多资源。

我想说,不要低估您的操作系统和硬件功能。具有现代OS的现代处理器非常快,非常快,并且具有在几秒钟内计算数十亿条指令的能力。我们真的无法想象这有多快。我不会担心在这样的微观层面进行优化。


好的,但是让我们更深入地研究它。究竟是什么过程?

非正式地,进程是正在执行的程序。进程当前活动的状态由一个值表示,该值称为程序计数器以及处理器寄存器的内容。进程的内存布局通常分为多个部分。

这些部分包括:

  1. 文本部分。
  2. 数据部分。
  3. 堆部分。
  4. 堆栈部分。

当进程执行时,它会更改状态。流程的状态部分由该流程的当前活动定义。如前所述,操作系统中的每个进程都由一个进程控制块(PCB)表示。

因此,我们可以看到我们将进程视为一个非常复杂的结构,而这仅占用CPU时间。它具有状态,存储,时序等。

但是因为您对系统调用感兴趣,所以它们是什么?

对于我们来说,系统调用为OS提供的服务提供了接口。它们是我们告诉操作系统为美国做事的方式。我们知道系统每秒执行数千个系统调用。

答案 1 :(得分:0)

不,他们没有。 操作系统使用软件中断在同一进程内执行系统调用操作。 您可以将它们想象为一个函数调用,但是它们具有内核特权。