现在有必要解释一下一些概念:
进程上下文:操作系统中把进程物理实体和支持进程运行的环境合称为进程上下文。
它包含三个部分:
(1)用户级上下文:由用户进程的程序块、用户数据块和用户堆栈组成的进程地址空间
(2)系统级上下文:包括进程控制块(PCB)、内存管理信息、进程环境块、系统堆栈等组成的进程地址空间
(3)寄存器上下文:由程序状态寄存器、各类控制寄存器、地址寄存器、通用寄存器等组成。
进程控制块(PCB): 它是进程实体的一部分,是操作系统中最重要的记录性数据结构。PCB中主要包括四个方面用于描述和控制进程运行的信息。
(2)、处理机状态信息
(3).进程调度信息
在PCB中还存放了一些与进程调度和进程对换有关的信息。
1.进程切换的条件:
当操作系统获得了处理区的控制权,它才可以实现进程切换。而要让操作系统要获得控制权,进程则要切入核心态。
2.模式切换:
讲进程切换之前,先讲一下模式切换。模式切换是指进程从用户态切入核心态。然后,我们就有一个疑问就是进程什么条件下会进行模式切换?答案是当进程要系统调用或者中断发生时,进程就要进行模式切换。接下来,我们有个疑问就是为什么进程要进行模式切换?答案是只有进入核心态,操作系统才能获得处理区的控制权,帮助该进程进行系统调用或者处理中断。
模式切换步骤:(1)保存被中断进程的处理器现场信息(内核保留足够信息以便恢复被中断的执行)
(2)根据中断号设置程序计数器
(3)把用户态切换到核心态,处理系统调用或者中断
3.进程上下文切换:个人认为,进程切换实质上是进程上下文切换(多任务系统中,上下文切换是指CPU的控制权由运行任务转移到另外一个就绪任务时所发生的事件)。那么什么条件下会发生条件切换:
(1)当进程进入核心态,操作系统处理系统调用和中断过程可能会导致被阻塞了的高优先级进程变为就绪
(2)当进程进入核心态,操作系统处理时钟中断时,正在运行的进程时间片耗尽
这些情况下,正在运行的进程就会发生进程上下文切换,进入等待状态。
那么我们就有一个疑问,那这个进程的信息怎么办?答案是进程上下文切换时,其用户级上下文和寄存器上下文将被保存到系统级上下文的相应的现场信息位置,这时内核就把这些信息压入系统栈的上下文层。
然后有一些东西要强调:(1)模式切换是发生在该进程上下文,进程上下文切换不等于模式切换
(2)进程切换要先进入模式切换,只有在核心态,进程才能进行切换。进程切换伴随着进程上下文切换。