操作系统 例程和进程的区别
在本文中,您将了解到例程和进程之间的区别,但在讨论区别之前,您必须简要了解一下例程和进程。
操作系统中的例程是什么
在计算机编程中,例程是一系列代码的序列,用于在程序执行过程中重复调用和使用。它可以是子程序、协程或者函数。这使得程序在必要时更短、更易于编写和阅读。
它在程序的执行过程中被其他代码重复调用。每当程序需要执行特定任务时,程序的主要逻辑序列可以在必要时分支到一个共同的例程。完成后,该例程会回到下一个顺序指令,跟随到它分支的指令。一个例程也可以在多个程序中很有用,可以避免其他程序员编写可以共享的代码。
一个例程在高级语言中也被称为具有特定编程接口的函数。它可以用于在程序中多次执行特定任务,显然使用不同的数据值。
通常,需要一些变量输入的例程可以编码为一个带有特定接口的 宏定义 ,称为汇编语言中的 宏指令 。程序员可以使用宏指令,而不是包含和管理到例程的分支。宏定义和指令也常常在程序员之间共享,用于多个程序,尤其是软件开发项目。
许多常用的例程以具有特定编程接口的函数的形式打包,以便在高级计算机语言中使用。某些函数可以与其他代码一起进行内联编译。其他函数编译为在程序执行过程中进行系统服务调用的存根。函数有时被称为 库例程 。编译器和库例程通常作为相关软件开发包的一部分提供。
在Windows和其他个人计算机操作系统中,用于处理特定任务(如与特定I/O设备交互)的系统例程称为 动态链接库例程 。这些例程是动态的,因为它们的文件直到被调用时才实际加载到内存中。
例如 ,一个例程可以保存文件或显示时间。不需要每次需要执行这些常见任务时编写代码,可以创建并在需要执行这些任务时调用例程。
操作系统中的进程是什么
进程是正在执行的程序,代表CPU利用的基本单位。
操作系统帮助创建、调度和终止CPU使用的进程。当可执行文件被加载到主存储器中进行执行时,进程是一个活动实体。由主进程创建的进程称为子进程。
一个系统由许多进程组成,其中一些进程执行称为操作系统进程的系统代码。相反,执行用户代码的其余进程称为用户进程。 进程 为了高效工作,分为以下几个部分:
- 文本部分 由编译后的程序代码组成,当程序启动时从非易失性存储器中读取。
- 数据部分 由全局变量和静态变量组成,在执行主函数之前进行分配和初始化。
- 堆 用于动态内存分配,并通过调用new、delete、malloc、free等进行管理。
- 栈 用于局部变量。当声明局部变量时,栈上会保留空间用于存放局部变量。
有时候,我们会混淆“程序”和“进程”的概念,但它们是不同的实体。程序是一种被动实体,而进程是一种主动实体。进程具有由该进程的当前活动定义的多个状态。
进程控制块(PCB)被认为是进程的大脑,它包含与处理相关的所有重要信息,如进程ID、优先级、状态、CPU寄存器等。每个进程在操作系统中用进程控制块来表示。以下是PCB的重要组件,例如:
- 进程ID: 每个进程都会被分配一个称为进程ID的ID,用于唯一地标识该进程与其他进程。
- 进程状态: 每个进程在特定时间点上都有与之关联的一些状态。这由进程状态表示。它可以是就绪、等待、运行等。
- 程序计数器: 程序计数器可以让你知道下一条指令的地址,它应该为该进程执行。
- CPU寄存器: 该组件包括累加器、索引和通用寄存器以及条件代码信息。
- CPU调度信息: 每个进程都使用一些进程调度算法,如FCSF、轮转法、短作业优先等进行执行。
- 会计和商业信息: 其中包括CPU使用的实时时间和资源,作业或进程编号等。
- 内存管理信息: 该信息包括基准寄存器和限制寄存器的值,页或段表。这取决于操作系统使用的存储器系统。
- I/O信息: 每个进程都需要一些I/O设备进行执行。因此,分配设备信息和设备需求是关键的。
例如, 当您想在网络上搜索某些内容时,您启动一个浏览器。所以,这可以被视为一个进程。另一个进程的例子可以是启动音乐播放器来听一些您喜欢的酷音乐。
例程与进程的区别
操作系统中的进程和例程之间存在很大的区别。一个 进程 是实际正在执行的代码。而 例程 通常表示一段代码,比如子程序、协程或由其他代码调用的函数。这意味着一个例程可能是在两个(或更多)进程中执行的代码的一部分。
例程是一段代码的序列,而进程是实际执行的代码。例程用于执行特定的任务,可以是多个进程的一部分。以下是例程和进程之间的一些更多区别,如下:
术语 | 例程 | 进程 |
---|---|---|
定义 | 这是一段旨在执行用户程序和输入/输出操作的代码序列。 | 这是一个正在执行的程序,是现代分时系统中的工作单位。 |
角色 | 例行程序的角色是执行任务,一个例行程序可以被其他程序或子程序多次调用。 | 它的角色是执行一段代码序列,它代表了系统中要实现的基本工作单位。 |
功能 | 它可以在程序中多次执行特定任务。 | 进程可以是两种类型:一种执行系统代码,另一种执行用户代码。 |
示例 | 可以重复调用的例行程序如乘法、加法等。 | 计算器是一个负责对操作数进行多种操作的进程。 |