例行程序与进程的区别

2025 年 4 月 29 日 | 阅读 5 分钟

在本文中,您将了解例行程序进程的区别,但在讨论区别之前,您需要简要了解例行程序和进程。

OS 中的例行程序是什么?

在计算机编程中,例行程序(routine)是一系列代码,旨在在程序执行期间被调用和重复使用。它可以是子例程、协例程或函数。这使得程序在需要时更短、更易于编写和阅读。

它在程序执行期间会被其他代码重复调用。每当程序需要执行特定任务时,程序中的主要逻辑序列就可以在需要时分支到公共例行程序。完成后,例行程序会分支回下一个顺序指令,紧接着调用它的指令之后。例行程序也可能在多个程序中使用,从而为其他程序员节省编写可共享代码的时间。

在高级语言中,例行程序也称为具有指定编程接口的函数。它可以在程序中使用来多次执行特定任务,显然可以使用不同的数据值。

通常,需要某些变量输入的例行程序可以编码为带有指定接口的宏定义,在汇编语言中称为宏指令。然后,程序员可以使用宏指令,而不是包含和管理到例行程序的跳转。宏定义和指令也倾向于在程序员之间共享,用于多个程序,特别是软件开发项目。

许多常用例行程序在高级计算机语言中被预打包为具有指定编程接口的函数。有些函数可以内联编译到其他代码中。其他函数被编译为存根,在程序执行期间动态调用系统服务。函数有时称为库例行程序。编译器和库例行程序通常作为相关软件开发包的一部分提供。

在 Windows 和其他个人计算机操作系统中,用于处理特定任务(如与特定 I/O 设备交互)的系统例行程序称为动态链接库例行程序。这些例行程序是动态的,因为在调用它们之前,它们的文件实际上不会加载到内存中。

例如,例行程序可以保存文件或显示时间。无需为这些常用任务每次都编写代码,而是创建例行程序并在需要执行这些任务时调用它们。

OS 中的进程是什么?

进程是正在执行的程序,代表 CPU 利用率的基本单位。

OS 帮助创建、调度和终止 CPU 使用的进程。进程是当可执行文件被加载到主内存以供执行时创建的活动实体。由主进程创建的进程称为子进程。

一个系统包含许多进程,其中一些进程执行称为操作系统进程的系统代码。相比之下,执行用户代码的其余进程称为用户进程。进程被划分为以下部分以高效工作:

  • 文本部分由编译后的程序代码组成,在程序启动时从非易失性存储器中读取。
  • 数据部分由全局变量和静态变量组成,在执行 main 函数之前分配和初始化。
  • 用于动态内存分配,并通过调用 new、delete、malloc、free 等函数进行管理。
  • 用于局部变量。在声明局部变量时,会在栈上为其保留空间。

有时,我们会混淆程序和进程这两个术语,但它们是不同的实体。程序是被动实体,而进程是主动实体。进程有许多由该进程的当前活动定义的各种状态。

进程控制块 (PCB) 被认为是进程的大脑,它包含与处理相关的所有关键信息,如进程 ID、优先级、状态、CPU 寄存器等。操作系统中的每个进程都由一个进程控制块表示。以下是 PCB 的重要组成部分,例如:

  • 进程 ID:每个进程都会获得一个称为进程 ID 的 ID,以便唯一地识别该进程与其他进程。
  • 进程状态:每个进程在某个特定时间点都有一些与之相关的状态。这由进程状态表示。它可以是就绪、等待、运行等。
  • 程序计数器:程序计数器会告诉你下一个要为该进程执行的指令的地址。
  • CPU 寄存器:此组件包括累加器、索引寄存器和通用寄存器以及条件代码信息。
  • CPU 调度信息:每个进程都使用某些进程调度算法(如 FCSF、Round-Robin、SJF 等)来执行。
  • 计费和业务信息:包括 CPU 和时间利用率(如实时使用、作业或进程编号等)。
  • 内存管理信息:这些信息包括基址和限制寄存器的值,以及页表或段表。这取决于操作系统使用的内存系统。
  • I/O 信息:每个进程都需要一些 I/O 设备来进行执行。因此,分配的设备信息和设备需求至关重要。

例如,当您想在网上搜索某项内容时,会启动一个浏览器。这可以是一个进程。进程的另一个例子是启动音乐播放器来听您喜欢的音乐。

例行程序与进程的区别

进程和操作系统中的例行程序之间存在巨大差异。进程是实际正在执行的代码。例行程序通常指一段代码,如子例程、协例程或函数,它们以某种方式被其他代码调用。这意味着一个例行程序可以成为在两个(或更多)进程中执行的代码的一部分。

Routine vs Process

例行程序是一系列代码,而进程实际上是正在执行的代码。例行程序用于执行特定任务,并且可以成为多个进程的一部分。以下是例行程序和进程之间的一些更多区别:

条款例行程序过程
定义它是一系列用于执行用户程序和输入/输出操作的代码。它是一个正在执行的程序,是现代分时系统中的工作单位。
角色例行程序的角色是执行任务,例行程序可以被其他例行程序或子例程多次调用。其作用是执行一系列代码。它代表了要在系统中实现的基本工作单位。
功能它可以在程序中使用来多次执行特定任务。进程可以有两种类型:一种执行系统代码,另一种执行用户代码。
示例用于乘法、加法等运算的例行程序会被重复调用。计算器是一个负责对操作数执行各种运算的进程。