进程是具有独立功能的程序在某个数据集合上的一次运行活动,也是操作系统进行资源分配和保护的基本单位。
进程存在的唯一标识:进程控制块PCB
PCB信息:
(1)标识信息
唯一地标识一个进程。分为用户使用的外部标识符和系统使用的内部标识号。内核函数可通过进程号来引用PCB。包括进程标识ID、进程组标识ID、用户进程名、用户组名等。
(2)现场信息
用于保留进程在运行时存放在处理器现场中的各种信息。让出处理器时保存现场信息,恢复运行时恢复处理器现场。包括寄存器内容、控制寄存器内容、栈指针、程序状态字等。
(3)控制信息
用于管理和调度进程
PCB的组织方式:链接方式与索引方式。
进程上下文切换
中断和异常是激活操作系统的仅有方法,它暂停当前进程的执行,把处理器切换至内核态,内核获得处理器控制权后,如果需要就可以实现上下文切换。
处理器状态切换
三种情况导致用户态向内核态转换:
(1)程序请求操作系统服务,执行系统调用。
(2)程序运行时产生中断事件,运行程序中断,转向中断处理程序。
(3)程序运行时产生异常事件,运行程序中断,转向异常处理程序。
三种情况通过中断机制发生,中断是用户态到内核态的仅有途径。
计算机提供一条被称为加载程序状态字的特权指令(Intel x86为iret指令),实现从内核态返回用户态。
中断/异常响应
(1)发现中断源。硬件发现中断源,并由CPU相应中断/异常请求。
(2)保护现场。暂停当前程序运行,硬件将中断点的现场信息(PSW)保存至核心栈。
(3)转向中断/异常事件处理程序执行。处理器状态由用户态转为内核态,中断/异常处理程序开始执行。
(4)恢复现场。恢复原运行程序的PSW,返回中断点以便执行后序指令。
进程状态
三态模型:运行态、就绪态、等待态
运行态:进程占有处理器正在运行的状态
就绪态:进程具备运行条件 ,等待系统分配处理器以便运行的状态
等待态:又称阻塞或睡眠态,指进程不具备运行条件,正在等待某个事件完成的状态。
运行态的进程个数不能超过处理器个数,另外两个状态的进程可以有多个。
进程创建后处于就绪态。运行态进程因等待事件进入等待态,等待事件发生后等待态进程变成就绪态。处理器调度会引起运行态和就绪态之间的切换。
五态模型:运行态、就绪态、等待态、新建态和等待态
新建态对应于进程被创建时的状态,尚未进入就绪队列。
创建进程步骤:
(1)为新进程分配所需资源和建立必要的管理信息
(2)将该进程设置为就绪态,等待被调度执行
终止态指进程完成任务到达正常结束点,或出现无法克服的错误而异常终止,或被操作系统及有终止权的进程所终止时所处的状态。终止态的进程不再被调度执行,下一步将被系统撤销,最终从系统中消失。
终止进程步骤:
(1)等待操作系统或相关进程进行善后处理
(2)回收占用的资源并被系统删除
挂起:
将进程对换到磁盘对换区中,释放其占有的某些资源,暂时不参与系统调度
挂起进程原因:
(1)系统资源尤其是内存资源不能满足进程运行的要求
(2)系统出现故障,需要挂起进程以便故障解除后解除挂起并回复运行
(3)用户调试过程中挂起进程以便进行检查和修改
进程控制
进程控制和管理通过原语来实现。
(1)进程创建
(2)进程撤销
(3)进程阻塞和唤醒
(4)进程挂起和激活
线程是进程中能够并发执行的实体,是进程的组成部分,也是处理器调度和分派的基本单位。
线程与进程中的其他线程共享资源。
进程可分为两部分:资源集合和线程集合。
组成部分:线程唯一标识符及线程状态信息。
线程状态:运行、就绪、等待、终止。
线程不是资源拥有单位,因此挂起状态对线程没有意义。若进程被挂起后被对换出内存,它的所有线程因共享地址空间也将全部对换出去。挂起操作所引起的状态是进程级状态不是线程级状态。进程的终止将导致进程中所有线程的终止。
多线程的实现:内核级线程和用户级线程。