Operating system 每个系统调用是否创建一个进程?

Operating system 每个系统调用是否创建一个进程?,operating-system,Operating System,每个系统调用是否创建一个进程? 程序和操作系统的所有功能(如中断)是否以进程的形式执行? 我觉得这样大量的进程控制块,大量的进程调度浪费了大量的资源。 或者,系统调用的内核指令被视为当前调用的一部分 过程。简单的答案是-不完全正确。但我们必须就所谓的“过程”达成一致。一个过程更像是一个抽象的概念,它封装了多个指令,每个指令顺序执行 让我们从第一个问题开始 每个系统调用是否创建一个进程 不是。每个系统调用都是当前运行进程的产物,它告诉操作系统“嘿,操作系统,我需要你为我打开这个文件,或者在这里读取

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

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

让我们从第一个问题开始

每个系统调用是否创建一个进程

不是。每个系统调用都是当前运行进程的产物,它告诉操作系统“嘿,操作系统,我需要你为我打开这个文件,或者在这里读取这些数据”。在这种情况下,进程是一包顺序执行的指令,有些是系统调用,有些不是

那么我们有了

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

这可以追溯到第一个问题。我们不认为系统调用(一种告诉操作系统做某事并在非常严格的条件下工作的操作)是一个单独的过程。我们不会看到系统调用执行有自己的进程id(
pid

那么我们有了

我觉得这样大量的进程控制块,大量的进程调度浪费了大量的资源

我想说的是,不要低估你的操作系统和硬件的能力。一个拥有现代操作系统的现代处理器,速度非常非常快,能够在几秒钟内计算出数十亿条指令。我们真的无法想象这有多快。我不担心在这样一个微观层面上的优化


好吧,但让我们深入研究一下。究竟什么是过程

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

这些部分包括:

  • 文本部分
  • 数据部分
  • 堆部分
  • 堆栈部分
  • 当进程执行时,它会改变状态。流程的状态部分由该流程的当前活动定义。正如您已经提到的,每个进程在操作系统中都由进程控制块(PCB)表示

    所以我们可以看到,我们将进程视为一个非常复杂的结构,它不仅仅占用CPU时间。它有状态、存储、定时等

    但是因为您对系统调用感兴趣,那么它们是什么呢

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

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