深入理解操作系统的内部运作:进程、线程与基本操作
立即解锁
发布时间: 2025-08-14 01:36:58 阅读量: 8 订阅数: 25 


计算机系统与网络通信精要
### 深入理解操作系统的内部运作:进程、线程与基本操作
#### 1. 系统复位与初始加载
在系统执行复位操作后,初始程序加载(IPL)会执行类似于启动 I/O 通道命令的操作。由于内存可能已被重置为零,首个通道命令字并非从内存读取,而是使用内置的读取命令,将 IPL 通道程序读入内存以供执行。随后,IPL 通道程序会读取相应的操作系统代码,并将控制权转移给它。
#### 2. 进程的概念
在多任务系统中,将每个执行任务视为一个程序是一种直观的理解方式,但这种表述不够全面、精确和通用。更有用的定义是将每个执行任务看作一个进程。进程包含一个程序以及在执行该程序时所关联的所有资源,这些资源可能包括分配给特定进程的 I/O 设备、键盘输入数据、已打开的文件、用作 I/O 数据缓冲区或堆栈的内存、分配给程序的内存、CPU 时间等。
从另一个角度看,进程是正在执行的程序。程序是被动的,例如一个文件或列表;而进程是主动的,它正在被处理或执行。
在批处理系统中,用户向系统提交作业进行处理。作业由作业步骤组成,每个步骤代表一个单独的任务。当作业被系统接纳时,会为该作业创建一个进程。作业中的每个任务也代表着进程,具体来说,是在作业的每个步骤执行时创建的进程。在实际应用中,“作业”“任务”和“进程”这几个术语常可互换使用。
程序和进程的区别在日常交流中通常不太重要,但从操作系统的角度来看,这种区别可能非常显著。例如,大多数现代操作系统能够让多个进程同时共享一个程序的单个副本,如编辑器。每个进程都有自己的文件和数据,这样可以节省内存空间,因为只需要一个程序副本,而不是多个,从而提高了系统的性能。
每个进程可能在程序的不同部分运行,因此在执行过程中,每个进程会维护不同的程序计数器值和不同的数据。每个进程都有自己的空间来存储寄存器值,以便进行上下文切换。
即使在单用户系统中,多个进程也可能共享程序代码。例如,生成 Windows 界面的程序代码会被屏幕上所有打开窗口的进程共享。每个进程都有自己的数据,如窗口的坐标、指向该窗口菜单结构的指针等。
对于操作系统而言,基本的工作单元是进程。当一个进程被系统接纳时,操作系统负责其操作的各个方面。具体如下:
- 为进程分配初始内存,并确保在进程需要时始终有可用的内存。
- 分配必要的文件和 I/O 设备,并提供堆栈内存和缓冲区。
- 为进程安排 CPU 执行时间,并在各个执行进程之间进行上下文切换。
- 维护进程的完整性。
- 当进程完成执行时,有序地终止进程,并恢复系统设施和资源,以便供其他进程使用。
进程可分为独立进程和协作进程。独立进程不需要与其他进程进行交互;而在现代系统中,许多进程会协同工作,它们会共享信息和文件。大型任务通常会被模块化,拆分为子任务,每个进程只处理任务的一个方面。操作系统为相关进程之间的同步和通信提供了机制。
为了跟踪内存中同时执行的不同进程,操作系统会为系统中的每个进程创建并维护一个数据块,称为进程控制块(PCB)。PCB 包含了关于进程的所有相关信息,是操作系统各个模块执行与进程相关功能时使用的核心资源。
一个典型的 PCB 包含以下内容:
| 内容 | 说明 |
| ---- | ---- |
| 进程标识 | 唯一标识该进程的名称或编号,如 Linux 中的 PID |
| 指向其他相关进程的指针 | 便于相关进程之间的通信 |
| 进程状态指示 | 如 MINOS 中的非活动、就绪、阻塞和运行状态 |
| 程序计数器和寄存器保存区 | 用于保存和恢复 CPU 的精确上下文 |
| 内存限制 | 确定进程可以访问的合法内存区域 |
| 优先级和会计信息 | 用于操作系统的调度和计费目的 |
| 指向共享程序代码、数据、打开文件和其他资源的指针 | 简化 I/O 和文件管理系统的任务 |
在 MINOS 中,进程控制块相对简单,只需要跟踪程序计数器和一对寄存器值,以便暂停和重启进程,以及记录程序的状态和优先级。由于 MINOS 将内存划分为固定大小的分区,每个分区正好有一个进程和一个 PCB,因此操作系统甚至不需要跟踪进程的内存限制。
而在大型系统中,进程控制要复杂得多。可能会有更多的进程,对可用内存和各种 I/O 资源的竞争更激烈,不同进程之间可能有通信需求,调度和分派也更加困难。系统的复杂性要求存储更多关于进程的信息,并对进程操作进行更正式的控制。
#### 3. 进程的创建
当你发出请求执行程序的命令时,无论是通过双击图标还是输入适当的命令,都会创建一个进程。在交互式系统中,进程创建是操作系统的基本任务之一。计算机系统中的进程不断地被创建和销毁。
几乎任何输入到多任务交互式系统的命令通常都会创建一个进程。例如,登录操作也会创建一个进程,因为登录需要提供一个作为用户界面的程序,它会给出提示或图形用户界面(G
0
0
复制全文
相关推荐










