操作系统Lesson11 - 进程调度和批处理系统调度


调度

调度:
一个程序。

调度对象:进程和内核级线程。

请添加图片描述

1.调度程序调度P1,读取PCB块在CPU中恢复它的现场(ctx);
2.当CPU执行完了P1之后,主动放弃时间片,去执行调度算法重复上述过程;

三个问题:

1.什么时候调度 - - 时机 - - 不能过于频繁
2.从哪里调度任务 - - 执行 - - 从就绪队列中选一个
3.选哪一个任务 - - 调度算法

进程三状态:就绪、运行、阻塞

调度:老状态保护起来,保存到PCB,读取一个新状态,新PCB


进程行为

CPU密集型:单位时间段内,CPU几乎被占满;
I/O密集型:单位时间内,离散的使用CPU。

请添加图片描述

CPU:运算一些逻辑、数学模型 – 卡
GPU:渲染模型 – 图像很差

CPU密集型
任务时间长,频繁调度反而降低效率,建议直接分一个核给任务;
若是单核系统,CPU密集型意义就不大了,如果有死循环,直接死机了。
CPU密集型核心线程数 = CPU核数

I/O密集型
经验公式:核心线程数 = CPU核数 / (1 - 阻塞系数)

阻塞系数是I/O操作占总时间的比例∈[0, 1]


何时调度

请添加图片描述

进程何时调度
1.创建时:可以选择调度父进程还是子进程,但是实际上其实是不管的,比如Linux就是随机的;
2.退出时:进程运行完退出时,要决定下一个调度谁

  1. CPU不会空转,PC指针只会往下一直读;
  2. 当在没有任务时,希望执行一个低功耗的功能区,切换CPU频率,关闭一些不必要的组件 – IDLE进程,永远不会阻塞的进程,有新任务时立马滚,且有任务的时候不会调度;
  3. 实现:标记级别,调度用基于级别的调度

3.阻塞在I/O、信号等原因
阻塞I/O时会放弃CPU,所以会执行调度程序。

4.当I/O发生中断时,可以做调度策略

调度过程
进程运行 -> 调用I/O -> 进入内核 -> 查找驱动 -> 没反应(无I/O) -> 休眠进程并放入对应队列,同时调用调度程序


调度分类

依据时钟中断来分类

非抢断式
只能主动释放CPU。

抢占式
依据硬件的时钟中断来完成。

系统环境分类

批处理:一个接一个的处理;
交互式:依靠时间片;
实时:更关注截止时间,某些场合下也需要开始时间。

批处理
1.吞吐量:单位时间内做的任务量;
2.周转时间:结束时间-到来时间(进入队列的时间)
3.CPU利用率

交互系统
1.响应时间:被调度的时间-任务创建时间
2.均衡性

实时系统
1.满足截止时间
2.可预测性

批处理的调度
先来先服务FCFS:非抢占式的基础设计,先来后到。

最短作业优先

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值