分析minix3之中CPU是怎样在各进程之间切换

现在有必要解释一下一些概念:
       进程上下文:操作系统中把进程物理实体和支持进程运行的环境合称为进程上下文。
        它包含三个部分:
                                    (1)用户级上下文:由用户进程的程序块、用户数据块和用户堆栈组成的进程地址空间
                                    (2)系统级上下文:包括进程控制块(PCB)、内存管理信息、进程环境块、系统堆栈等组成的进程地址空间
                                    (3)寄存器上下文:由程序状态寄存器、各类控制寄存器、地址寄存器、通用寄存器等组成。
      进程控制块(PCB): 它是进程实体的一部分,是操作系统中最重要的记录性数据结构。PCB中主要包括四个方面用于描述和控制进程运行的信息。

  (1).进程标识符信息
     进程标识符用于唯一的标识一个进程。一个进程通常有以下两种标识符。
               外部标识符。由创建者提供,通常是由字母、数字组成,往往是用户(进程)访问该进程使用。外部标识符便于记忆,如:计算进程、打印进程、发送进程、接收进程等。
               内部标识符:为了方便系统使用而设置的。在所有的OS中,都为每一个进程赋予一个唯一的整数,作为内部标识符。它通常就是一个进程的符号,为了描述进程的家族关系,还应该设置父进程标识符以及子进程标识符。还可以设置用户标识符,来指示该进程由哪个用户拥有。

(2)、处理机状态信息
    处理机状态信息主要是由处理机各种寄存器中的内容所组成。
        通用寄存器。又称为用户可视寄存器,可被用户程 序访问,用于暂存信息。
        指令寄存器。存放要访问的下一条指令的地址。
        程序状态字PSW。其中含有状态信息。(条件码、 执行方式、中断屏蔽标志等)
         用户栈指针。每个用户进程有一个或若干个与之相 关的系统栈,用于存放过程和系统调用参数及调用地址。栈指针指向该栈的栈顶。

(3).进程调度信息
在PCB中还存放了一些与进程调度和进程对换有关的信息。
   (1)进程状态。指明进程当前的状态,作为进程调度和对换时的依据。
   (2)进程优先级。用于描述进程使用处理机的优先级别的一个整数,优先级高的进程优先获得处理机。
   (3)进程调度所需要的其他信息。(进程已等待CPU的时间总和、进程已执行的时间总和)
   (4)事件。这是进程由执行状态转变为阻塞状态所等待发生的事件。(阻塞原因)
     


1.进程切换的条件:
                               当操作系统获得了处理区的控制权,它才可以实现进程切换。而要让操作系统要获得控制权,进程则要切入核心态。

2.模式切换:
                     讲进程切换之前,先讲一下模式切换。模式切换是指进程从用户态切入核心态。然后,我们就有一个疑问就是进程什么条件下会进行模式切换?答案是当进程要系统调用或者中断发生时,进程就要进行模式切换。接下来,我们有个疑问就是为什么进程要进行模式切换?答案是只有进入核心态,操作系统才能获得处理区的控制权,帮助该进程进行系统调用或者处理中断。
                    模式切换步骤:(1)保存被中断进程的处理器现场信息(内核保留足够信息以便恢复被中断的执行)
                                               (2)根据中断号设置程序计数器
                                               (3)把用户态切换到核心态,处理系统调用或者中断

  3.进程上下文切换:个人认为,进程切换实质上是进程上下文切换(多任务系统中,上下文切换是指CPU的控制权由运行任务转移到另外一个就绪任务时所发生的事件)。那么什么条件下会发生条件切换:
                                               (1)当进程进入核心态,操作系统处理系统调用和中断过程可能会导致被阻塞了的高优先级进程变为就绪
                                               (2)当进程进入核心态,操作系统处理时钟中断时,正在运行的进程时间片耗尽
这些情况下,正在运行的进程就会发生进程上下文切换,进入等待状态。

那么我们就有一个疑问,那这个进程的信息怎么办?答案是进程上下文切换时,其用户级上下文和寄存器上下文将被保存到系统级上下文的相应的现场信息位置,这时内核就把这些信息压入系统栈的上下文层。

然后有一些东西要强调:(1)模式切换是发生在该进程上下文,进程上下文切换不等于模式切换
                                          (2)进程切换要先进入模式切换,只有在核心态,进程才能进行切换。进程切换伴随着进程上下文切换。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值