操作系统进程管理全解析
立即解锁
发布时间: 2025-08-14 00:50:40 阅读量: 2 订阅数: 11 


操作系统概念:理论与实践
# 操作系统进程管理全解析
## 1. 进程基础概念
### 1.1 进程定义
进程是正在执行的程序。它在执行任务时需要特定资源,如 CPU 时间、内存、文件和 I/O 设备等,这些资源通常在进程执行期间分配给它。在大多数系统中,进程是工作的基本单位,系统由一系列进程组成,包括执行系统代码的操作系统进程和执行用户代码的用户进程。这些进程可以并发执行。现代操作系统支持具有多个控制线程的进程,在多硬件处理核心的系统上,这些线程可以并行运行。
早期计算机一次只能执行一个程序,该程序能完全控制系统并使用所有系统资源。而现代计算机系统允许将多个程序加载到内存中并发执行,这就产生了进程的概念。
### 1.2 进程的内存布局
进程的内存布局通常分为多个部分:
- **文本段**:包含可执行代码。
- **数据段**:存储全局变量。
- **堆段**:在程序运行时动态分配的内存。
- **栈段**:调用函数时的临时数据存储区,如函数参数、返回地址和局部变量。
文本段和数据段的大小在程序运行期间是固定的,而栈段和堆段可以在程序执行时动态伸缩。每次调用函数时,包含函数参数、局部变量和返回地址的激活记录会被压入栈中;函数返回时,激活记录从栈中弹出。堆会随着内存的动态分配而增长,在内存返回给系统时缩小。操作系统必须确保栈段和堆段不会相互重叠。
程序本身不是进程,程序是被动实体,如存储在磁盘上的包含指令列表的文件(通常称为可执行文件)。而进程是主动实体,有指定下一条要执行指令的程序计数器和一组相关资源。当可执行文件加载到内存中时,程序就变成了进程。常见的加载可执行文件的方法有双击代表可执行文件的图标和在命令行输入可执行文件的名称。
### 1.3 进程状态
进程在执行过程中会改变状态,其状态部分由当前活动定义。进程可能处于以下状态:
- **新建**:进程正在被创建。
- **运行**:指令正在被执行。
- **等待**:进程正在等待某个事件发生(如 I/O 完成或信号接收)。
- **就绪**:进程等待被分配到处理器。
- **终止**:进程已完成执行。
这些状态名称在不同操作系统中可能不同,但所代表的状态在所有系统中都存在。某些操作系统会更细致地划分进程状态。需要注意的是,在任何时刻,每个处理器核心只能运行一个进程,但可能有许多进程处于就绪和等待状态。进程状态图如下:
```mermaid
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef io fill:#FFEBEB,stroke:#E68994,stroke-width:2px;
A([新建]):::startend --> B(就绪):::process
B --> C(运行):::process
C --> D(等待):::process
C --> B
D --> B
C --> E([终止]):::startend
style A fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
style B fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
style C fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
style D fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
style E fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
```
### 1.4 进程控制块(PCB)
每个进程在操作系统中由进程控制块(PCB)表示,也称为任务控制块。PCB 包含与特定进程相关的许多信息:
| 信息类型 | 说明 |
| ---- | ---- |
| 进程状态 | 如新建、就绪、运行、等待、停止等 |
| 程序计数器 | 指示该进程下一条要执行的指令地址 |
| CPU 寄存器 | 数量和类型取决于计算机架构,包括累加器、索引寄存器、栈指针和通用寄存器等,以及条件码信息 |
| CPU 调度信息 | 包括进程优先级、调度队列指针和其他调度参数 |
| 内存管理信息 | 如基址和限长寄存器的值、页表或段表等 |
| 会计信息 | 包括 CPU 和实际使用时间、时间限制、账户号码、作业或进程编号等 |
| I/O 状态信息 | 如分配给进程的 I/O 设备列表、打开的文件列表等 |
简而言之,PCB 是启动或重启进程所需的所有数据以及一些会计数据的存储库。
### 1.5 线程
传统的进程模型意味着一个进程执行单个执行线程,例如运行文字处理程序的进程一次只能执行一个指令线程,用户不能同时输入字符和运行拼写检查器。现代操作系统扩展了进程概念,允许进程有多个执行线程,从而可以同时执行多个任务。在多核系统上,多线程特别有用,例如多线程文字处理器可以分配一个线程管理用户输入,另一个线程运行拼写检查器。支持线程的系统中,PCB 会扩展以包含每个线程的信息,系统的其他部分也需要相应改变以支持线程。
## 2. 进程调度
### 2.1 调度目标
多道程序设计的目标是始终有进程在运行,以最大化 CPU 利用率。分时系统的目标是在进程之间频繁切换 CPU 核心,使用户能在程序运行时与之交互。为实现这些目标,进程调度器从可用进程集合中选择一个进程在核心上执行,每个 CPU 核心一次只能运行一个进程。
### 2.2 进程调度队列
- **就绪队列**:进程进入系统后会被放
0
0
复制全文
相关推荐










