深入Linux内核架构笔记-进程管理与调度1

概述

  • 进程是可执行程序的一个运行实例,主要包括当前的程序计数器,寄存器和变量等,从概念上讲,每个进程都有自己的虚拟CPU,但实际上,CPU在各个进程上快速切换。
  • 对于进程,内核必须解决的几个问题:
    • 应用程序彼此不能互相干扰,除非有明确要求要这么做
    • CPU时间要在各个应用程序之间尽可能公平的共享
      其中第二个问题是进程管理与调度要解决的问题,内核必须决定为各个进程分配多长时间,何时切换到下一个进程,另外进程在执行切换的时候,要保证各个进程的执行环境被正常的备份和恢复

进程相关的基本概念

  • 进程的优先级

    • 并非所有的进程都具有同样的重要性,首先进行比较粗糙的划分,进程可以分为实时进程和非实时进程
    1. 硬件实时进程有严格的时间限制,必须在可保证的时间范围内得到处理,否则会有很严重的后果,请注意,这并不意味着所要求的时间范围特别短,Linux主流版本不支持硬实时处理
    2. 软实时进程是硬实时进程的一种弱化形式,尽管仍然需要快速得到结果,但是稍微晚一点关系也不是很大,比如对CD机的写入
    3. 普通进程:没有特别的时间约束,但仍然可以根据重要性来分配优先级
    • 通过进程的优先级别给进程分配不同的时间片,是在各个进程调度的一种简单实现方式,能够使重要的进程比次要进程得到更多的CPU处理时间,这种方案称为抢占式多任务处理。各个进程都分配到一定的时间段可以执行,时间段到期后,内核从进程回收控制权。

    • Linux进程调度在2.6.23版本引入了CFS调度器,替换了之前的O(1)调度器,它试图尽可能模仿理想状况下的公平调度。

  • 进程的生命周期

    • 进程的几种可能状态
    1. 运行:此刻进程正在执行
    2. 等待 : 进程可以运行,但是没有得到许可,因为CPU分配给另外一个进程,调度器可以在未来的某次切换时选择改进程
    3. 睡眠 : 进程正在睡眠,因为它正在等待一个外部事件
    4. 终止 : 程序执行完成
    5. 僵尸 : 进行已经中止,但是其数据未从进程表删除,附进程调用wait等系统调用后退出该状态
    • 抢占式多任务处理
    1. 进程执行状态:用户态和核心态,进程通常处于用户态,只能访问自身的数据,如果要访问系统的功能和数据,则必须切换到核心态,主要的切换方式是系统调用,是程序主动要求的,还有另外一种方式是中断,这个时候是自动触发的,程序无法控制。
    2. 内核的抢占调度模型建立了一个层次结构,用于判断能否进行抢占:
      a) 普通进程总是可以被抢占的,甚至是被其他进程抢占,这有助于实现良好的交互和低系统延迟.
      b) 如果系统处于核心态正在处理系统调用,那么系统的其他进程不能夺取其CPU时间,调度器等待系统调用执行结束才能选择另外一个进程执行,但是中断可以中止系统调用
      c) 中断可以暂停用户态和核心态的进程,因为中断发生后要尽快处理
    3. 在内核2.5开发期间,加入了内核抢占的支持,在系统调用执行时也可以切换到另外的紧急进程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值