进程调度

进程间的相互关系主要分为如下三种形式:

  • 互斥——竞争同一资源而发生相互制约。诸多进程对同一资源进行访问,可以设置互斥。
  • 同步——协同完成一项任务,应该有同步机构对其执行协调,包括对资源的访问(锁)、通信。
  • 通信——交换信息

数据结构:通常分为以下四类用于对进程进行管理:

  • 内存:内存表
  • 设备:设备表
  • 文件:文件表
  • 进程:多个进程文件,每个文件记录进程实体及所用资源的列表(包括PCB)

进程调度的主要工作是

  • 保存现场
  • 挑选进程
  • 恢复现场

进程调度的服务调度模型有:

  • 先到先服务(FCFS)
  • 短作业优先(SJF)
  • 优先级调度算法(PSA)
  • 高响应优先级调度算法(HRRN)(优先权=等待到服务完成的时间+要求服务时间)
  • 轮转调度算法(RR):引入时间片概念。

Linux系统中的进程调度

调度方式:基本上采用“抢占式优先级”方式,继承了UNIX系统的以优先级为基础的调度

调度策略

  • SCHED_FIFO适合于短实时进程
  • SCHED_RR对应“时间片轮转法”,适合于每次运行需要较长时间的实时进程。
  • SCHED_OTHER是传统的UNIX调度策略,适合于交互式的分时进程。
  • 系统中规定,实时进程的优先级高于其他类型进程的优先级。

调度时机

  1. 当前进程调用系统调用nanosleep()或pause()
  2. 进程终止
  3. 在时钟中断处理程序执行过程中,发现当前进程连续运行的时间过长
  4. 当唤醒一个睡眠进程
  5. 一个进程通过执行系统调用来改变调度策略或者降低自身的优先级

results matching ""

    No results matching ""