Operating System 简明教程
Operating System - Processes
Process
进程基本上是一个正在执行的程序。进程的执行必须按顺序进行。
简单地说,我们以文本文件形式编写计算机程序,当我们执行该程序时,它将变成一个进程,执行程序中提到的所有任务。
当一个程序被加载到内存中并成为一个进程时,它可以被划分为四个部分 ─ 栈、堆、文本和数据。下图显示了主内存中一个进程的简化布局 −
S.N. |
Component & Description |
1 |
Stack 进程栈包含临时数据,例如方法/函数参数、返回地址和局部变量。 |
2 |
Heap 这是在进程运行时动态分配给进程的内存。 |
3 |
Text 这包括由程控器值和处理器寄存器内容表示的当前活动。 |
4 |
Data 此部分包含全局变量和静态变量。 |
Program
程序是一段代码,可以是一行或数百万行代码。计算机程序通常由计算机程序员使用编程语言编写。例如,下面是一个用 C 编程语言编写的简单程序 −
#include <stdio.h>
int main() {
printf("Hello, World! \n");
return 0;
}
计算机程序是一组指令,执行时执行特定任务。如果将程序与进程进行比较,我们可以得出结论:进程是一个计算机程序的动态实例。
计算机程序中执行明确定义的任务的部分称为 algorithm 。计算机程序、库和相关数据的集合称为 software 。
Process Life Cycle
在进程执行期间会经历不同的状态。这些状态在不同的操作系统中可能有所不同,且这些状态的名称也没有进行标准化。
一般来说,一个进程每次可以处于以下五个状态之一。
S.N. |
State & Description |
1 |
Start 进程最初启动/创建时的初始状态。 |
2 |
Ready 进程在等待分配到处理器。就绪进程在等操作系统为其分配处理器,以便它们能够运行。进程可能在此状态后或在被调度程序中断向某个其他进程分配 CPU 时进入此状态。 |
3 |
Running 进程在被操作系统调度程序分配给处理器后,进程状态将设置为正在运行,且处理器执行其指令。 |
4 |
Waiting 如果进程需要等待一个资源(例如等待用户输入或等待文件进行)可用,则进程进入等待状态。 |
5 |
Terminated or Exit 一旦进程完成执行,或被操作系统终止,它将转到终止状态,并在此状态下等待从主内存中移除。 |
Process Control Block (PCB)
进程控制块是由操作系统为每个进程维护的一个数据结构。进程控制块由整型进程 ID (PID) 标识。进程控制块保留所有所需的信息以跟踪一个进程,如下表所列 −
S.N. |
Information & Description |
1 |
Process State 进程的当前状态,即它就绪、正在运行、等待,或其他任何状态。 |
2 |
Process privileges 需要此权限才能允许/禁止访问系统资源。 |
3 |
Process ID 操作系统中每个进程的唯一标识符。 |
4 |
Pointer 指向父进程的指针。 |
5 |
Program Counter 程序计数器是指向要为此进程执行的下一条指令的地址的指针。 |
6 |
CPU registers 多种 CPU 寄存器进程需要存储在其中才能执行运行状态。 |
7 |
CPU Scheduling Information 进程优先级和其他计划信息,这些信息是计划进程所必需的。 |
8 |
Memory management information 这包括页表、内存限制、段表的信息,具体取决于操作系统使用的内存。 |
9 |
Accounting information 这包括用于进程执行的 CPU 量、时间限制、执行 ID 等。 |
10 |
IO status information 这包括分配给进程的 I/O 设备列表。 |
PCB 的架构完全依赖于操作系统,并且在不同的操作系统中可能包含不同的信息。这是一个简化的 PCB 图示 −
PCB 在整个生命周期中都维护着一个进程,并在进程终止时删除。