进程切换

1. 执行模式

大多数处理器至少支持两种执行模式: 用户模式和特权模式(也叫内核模式)。 例如读取或改变诸如程序状态字之类的控制寄存器的指令,原始I/O的指令和内存管理相关的指令。 用户程序运行在用户模式下。 使用两种模式的原因是可以保护操作系统和重要的操作系统数据表(如进程控制块等)不受用户程序的干涉。

1.1 什么情况下,执行模式会切换到特权模式?

当用户调用一个操作系统的服务(系统API接口)或者中断触发系统例程的执行时,执行模式被设置为内核模式; 当从系统服务返回到用户进程时,执行模式被设置为用户模式, 当中断处理例程结束时,最后一个指令是IRT(中断返回),然后就返回到用户进程时,执行模式被设置为用户模式。

大多数情况下,用户调用一个操作系统的服务(系统API接口)是通过以下方式实现的:

把系统调用标识符和参数放在一个预定义的区域,然后通过执行一个特殊的指令中断用户级别程序的运行,并把执行模式切换为特权模式。

1.2 模式切换

处理器在执行用户进程代码段的指令,一条一条的向下执行。执行下一条指令之前,会检测是否有为处理的中断信息,如果没有,处理器继续执行下一条指令; 如果有,处理器需要做下面的工作:

         a. 把程序计数器置成中断处理器开始的地址。

         b. 把处理去模式从用户模式切换到特权模式,使得中断处理代码可以执行有特权的指令。

处理器现在开始取中断处理器的第一条指令,它将给中断提供服务。 此时,被中断的进程上下文要保持到进程控制块中。 当中断处理例程结束时,最后一个指令是IRT(中断返回),然后就返回到用户进程时,执行模式被设置为用户模式。


2. 进程创建

操作系统创建一个进程的的步骤如下:

a. 给新进程分配一个惟一的进程标识号。 (在操作系统维护的进程表中增加一个项目,这个新项目指向这个新的进程)

b. 给进程分配空间。

c. 初始化进程控制块。

d. 设置正确的连接。 例如, 把新进程放置到就绪队列。

e. 创建或扩充其他的数据结构。 例如,操作系统执行top命令,要能统计进程的memory使用率和 cpu使用率。

3. 进程切换

3.1 什么事件触发进程的切换?

进程切换可以在任何时刻发生。

a. 首先考虑系统中断。 大多数操作系统区分两种类型的系统中断,一个称为中断,另一种称为陷阱。

      中断: 与某种类型的外部事件有关, 例如完成一次I/O操作。它将切换到特权模式,执行中断处理例程。

                 时钟中断: 操作系统确定当前运行的进程的执行时间是否超过最大允许的时间段。如果超过了,就发出这个时钟中断,发生进程切换。

                 I/O中断:    发生I/O活动的时候,发出这个中断。 如果I/O活动是一个或多个进程正在等待的事件,操作系统把所有相应的阻塞态进程转换到就绪态;操作系统必须决定是继续执行当前处于运行态的进程,还是让具有高优先级的就绪态进程抢占这个进程。

                 内存失效: 处理器访问一页虚拟内存地址,且此地址单元不再内存中时,操作系统必须从辅存中把包含这个地址单元的内存块(页)调入主存。 在发出调入内存块的I/O请求后,操作系统可能会执行一个进程切换,以恢复另一个进程的执行,发生内存失效的进程被设置为阻塞态,当想要的块调入内存中时,又会发出一个中断,操作系统收到后会被该进程设置为就绪态。


      陷阱: 正在运行的进程产生一个错误。 例如:非法访问文件。它也将切换到特权模式,执行中断处理例程。操作系统会确定错误是否是致命的。 如果是致命的,当前运行的进程被被切换到退出态,并发生进程切换;  如果不是致命的,操作系统可能会试图恢复或通知用户,也可能进行一次进程切换或者不进程进程切换。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值