使用动态优先权的进程调度算法的模拟_嵌入式学习笔记之进程调度

a7a280c935222544bf0d44cafe6c9e9f.png

1.进程同程序的比较

程序是指令的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。

程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。

进程更能真实地描述并发,而程序不能

进程是由PCB、程序段和数据段三部分组成的

进程具有创建其他进程的功能,而程序没有

同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程。也就是说同一程序可以对应多个进程

进程特征:结构特征 动态性——最基本特征 并发性 独立性 异步性

进程是由代码(text)、用户数据段(user segment)和系统数据段(system segment)(包含PCB)组成的一个动态实体

可运行队列

35823db5047e2475fd09f1f83c3f73b8.png

2.进程调度:非剥夺方式 剥夺方式 优先权原则、短进程、优先原则、时间片原则

ae3226e4807e2d84a3ede7f1ac15db83.png

1845afefb68df61fed77f0f3b419d3ff.png

最高优先权(FPF)优先调度算法:
静态优先权 静态优先权是在创建进程时确定的,在整个运行期间不再改变动态优先权

动态优先权 是基于某种原则,使进程的优先权随时间改变而改变。

49ca9d2b39bffce5b09a6c043d1cf449.png

45ddcfb81415fba95ec79b55075faae0.png

Counter 子为父的一半:安全,防止恶意创建进程

rt_priority实时进程的优先级,可通过系统调用改变

priority进程静态优先级,给出进程每次获取cpu后可使用的时间(按jitty计算)

Counter表示进程当前还可运行多久

进程开始运行时被赋为priority值,以后,每隔一个tick(时钟中断)递减1,减到0时引起新一轮调度。

重新调度将从runqueue队列中选出运行运行权值最大的就绪进程获得cpu。

创建一个新的进程时,子进程会继承父进程的一半剩余时间片

Linux的进程调度是基于优先级的调度

Linux的进程分为普通进程和实时进程,在基于优先级的算法下实时进程的优先级高于普通进程。

Linux中进程的优先级是动态的,调度程序周期性的调整他们的优先级,避免进程饥饿

6f77b38ea4816dd3ea5d7c6754403f26.png

动态优先级,根据进程的平均睡眠时间,查看时间戳,等待时间越久,优先级越高,幅度不会超过5

900212824db1f471274e94b57fbf1f99.png

实时进程运行后会一直占用CPU资源,只有下列情况在会被另一进程替代:

进程被更高优先级的实时进程取代

进程执行了阻塞操作并进入睡眠

进程停止或被杀死

进程自愿放弃cpu(可以通过调用系统调用sched_yield()放弃CPU)

进程是基于时间片轮转的实时进程,且用完了时间片

a794d946d6b338760d50e88d691341f4.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值