操作系统入门 – 进程管理
在前面的学习过程中了解到,进程管理是操作系统中的一个组成部分,而本章将深入了解进程管理。
1.进程的概念
1.1引入进程的意义
从理论角度看,是对正在运行的程序过程的抽象;
从实现角度看,是一种数据结构,目的在于清晰地刻画动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。
1.2进程的定义
- 狭义:进程是一段程序的执行过程
- 广义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
1.3进程的特点
- 动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
- 并发性:任意一个进程都可以和其他进程同步执行。
- 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。即不同进程的工作互不影响
- 异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。即因访问共享数据/资源或进程间同步而产生制约。
1.4进程的三种状态
- 就绪:进程已获得 除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。即I/O操作优先级高于自动执行。
- 运行:进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。即进程是操作系统执行程序的最小单位。
- 阻塞:由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理机分配给该进程,也无法运行。
2.进程与程序、线程的区别
2.1进程与程序的区别
- 程序是静态的,而进程是动态的。
- 程序是永久的,而进程是暂时存在的。
- 进程是程序的一次执行,而进程总是对应至少一个特定的程序。
2.1.1进程与程序的详细解释
- 程序是静态的,进程是动态的:程序是存储在某种介质上的二进制代码,进程对应了程序的执行过程,系统不需要为一个不执行的程序创建进程,一旦进程被创建,就处于不断变化的动态过程中,对应了一个不断变化的上下文环境。
- 程序是永久的,进程是暂时存在的:程序的永久性是相对于进程而言的,只要不去删除它,它可以永久的存储在介质当中。
2.1.2进程与程序的联系
- 进程是程序的一次执行,而进程总是对应至少一个特定的程序。一个程序可以对应多个进程,同一个程序可以在不同的数据集合上运行,因而构成若干个不同的进程。几个进程能并发地执行相同的程序代码,而同一个进程能顺序地执行几个程序。
2.2进程与线程的区别
2.2.1两者基本区别
- 进程是 资源分配 的 最小单位,线程是 程序执行 的 最小单位。
- 进程有自己的独立空间,当执行一个进程时,系统会分配地址空间,建立数据表以维护代码。上述的这种操作在系统中是非常昂贵的。而线程在执行过程则会共享同一内存的数据,因此处理器切换线程比切换进程的开销要小很多。而线程只能和同一进程下的其他线程进行通信,而跨进程之间的线程无法通信。
- 线程之间通信更方便,因为可以通信的线程都在同一进程下,共享同一内存资源、静态变量等。而进程之间通信则需要通过IPC等方式进行。
- 多进程应用比多线程应用更壮硕。当进程中的某个线程挂掉会影响整个进程的运行。由于进程之间相对独立,因此当某个进程挂掉后并不会影响其他进程运行。
3.进程控制块(PCB)
3.1进程控制块概念
进程是操作系统中调度的一个实体,并对进程所拥有的资源进行整合。即进程控制块PCB。操作系统将使用PCB描述进程基本情况和运行的变化过程,同时PCB也是进程存在的唯一标志,每个进程都有对应的PCB。
3.2进程控制块信息描述
- 进程运行状态:包括就绪、运行、阻塞等状态。
- 程序计数器:记录当前进程运行到哪一条指令。
- CPU寄存器:保存当前运行上下文,记录CPU所有必须保存下来的寄存器信息。以便当前进程调度出去之后还能调度回来并接着运行。
- CPU调度信息:包括进程优先级、调度队列和调度等相关信息。
- 内存管理信息:进程使用的内存信息,如进程页表等。
- 统计信息:包含进程运行时间等相关统计信息
- 文件相关信息:包括进程打开的文件等
4.进程生命周期
一个进程的生命周期可以划分为一组状态,这些状态刻画了整个进程。进程状态即体现一个进程的生命状态。进程的整个生命周期如下:
- 创建状态:系统将为进程分配合适的PCB格式,并放入内存。
- 就绪状态:进程获得除CPU外的所有资源,等待被执行。
- 执行状态:当进程被调度获得CPU资源后就从就绪状态转为执行状态。
- 阻塞状态:指执行状态受到i/o的影响变为阻塞状态,等i/o完成后又变为就绪状态。
- 终止状态:进程结束,等待系统处理,PCB清零并将空间返还系统。
- 挂起状态:当进程进入挂起状态后,进程就静止了。若在挂起前该进程处于执行状态则会被暂停执行。若处于就绪状态则会进入静止就绪状态,不接受调度。这些被挂起的进程一般会处于特定区域。