操作系统之进程切换

背景

进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占的使用硬件。在大多数系统中,需要运行的进程数是多于可以运行他们的CPU个数的。无论是在多核还是单核系统中,一个CPU看上去都像是在并发的执行多个进程,这是通过处理器在进程间切换来实现的。 操作系统实现这种交错执行的机制称为上下文切换。,总而言之,进程是轮流使用处理器的。

进程

进程:一个执行中的程序的实例,系统中的每个程序都是运行在某个进程的上下文中的。,通常进程还包括堆栈段和数据段,不同的进程文本段相同,其他可能不同。

进程五状态:

创建,运行,等待,就绪,终止

一次只能由一个进程在处理器上运行,但是多个进程可处于就绪或者等待状态

1560492180766

PCB

1560492279607

进程调度

多道程序设计的目的就是无论何时都有进程在运行,从而使CPU的利用率最大化

进程调度是选择一个可用的进程

调度队列

作业队列:系统中的所有进程

就绪队列:驻留在内存中的就绪的、等待运行的进程

调度程序

长期(作业)调度程序(不频繁):从缓冲池中选择进程,装入内存中准备执行。

它看i给你之多道程序设计的程度(内存中的进程数量)

短期(cpu)调度程序(频繁):从准备执行的进程中选择进程,并为之分配cpu

上下文切换

操作系统保持跟踪进程运行所需的所有状态信息,这种状态,也就是上下文,它包括许多信息,例如PC和寄存器文件的当前值,以及主存的内容。

当操作系统决定要把控制权从当前进程转移到某个新进程时,就会进行上下文切换即保存当前进程的上下文,恢复新进程的上下文,然后将控制权传递到新进程,新进程就会从上次停止的地方开始

上下文切换的过程 

  • 保存当前进程的上下文
  • 恢复某个先前被抢占的进程被保存的上下文
  • 将控制传递给这个新恢复的进程

而系统调用进行的是模式切换(mode switch)。模式切换与进程切换比较起来,容易很多,而且节省时间,因为模式切换最主要的任务只是切换进程寄存器上下文的切换。

那么进程切换何时发生呢?

进程切换一定发生在中断/异常/系统调用处理过程中,常见的有以下情况:

1、阻塞式系统调用、虚拟地址异常。

导致被中断进程进入等待态。

2、时间片中断、I/O中断后发现更改优先级进程。

导致被中断进程进入就绪态。

3、终止用系统调用、不能继续执行的异常。

导致被中断进程进入终止态。

但是并不意味着所有的中断/异常都会引起进程切换。

有一些中断/异常不会引起进程状态转换,不会引起进程切换,只是在处理完成后把控制权交还给被中断进程。

以下是处理流程:

1、(中断/异常等触发)正向模式切换并压入PSW/PC 。

2、保存被中断进程的现场信息。

3、处理具体中断、异常。

4、恢复被中断进程的现场信息。

5、(中断返回指令触发)逆向模式转换并弹出PSW/PC。

-------------本文结束有空来玩-------------
坚持原创技术分享,您的支持将鼓励我继续创作!