![a7a280c935222544bf0d44cafe6c9e9f.png](https://i-blog.csdnimg.cn/blog_migrate/f288db6405462be97ef0f32979dae8be.jpeg)
1.进程同程序的比较
程序是指令的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。
进程更能真实地描述并发,而程序不能
进程是由PCB、程序段和数据段三部分组成的
进程具有创建其他进程的功能,而程序没有
同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程。也就是说同一程序可以对应多个进程
进程特征:结构特征 动态性——最基本特征 并发性 独立性 异步性
进程是由代码(text)、用户数据段(user segment)和系统数据段(system segment)(包含PCB)组成的一个动态实体
可运行队列
![35823db5047e2475fd09f1f83c3f73b8.png](https://i-blog.csdnimg.cn/blog_migrate/69a7f239c6a1758ac9a693263f2c1bff.jpeg)
2.进程调度:非剥夺方式 剥夺方式 优先权原则、短进程、优先原则、时间片原则
![ae3226e4807e2d84a3ede7f1ac15db83.png](https://i-blog.csdnimg.cn/blog_migrate/8ee95389fff223229c380b6344feb603.jpeg)
![1845afefb68df61fed77f0f3b419d3ff.png](https://i-blog.csdnimg.cn/blog_migrate/50834a0424f73e205f7251a800ed8d66.jpeg)
最高优先权(FPF)优先调度算法:
静态优先权 静态优先权是在创建进程时确定的,在整个运行期间不再改变动态优先权
动态优先权 是基于某种原则,使进程的优先权随时间改变而改变。
![49ca9d2b39bffce5b09a6c043d1cf449.png](https://i-blog.csdnimg.cn/blog_migrate/598c073dfb552019d8702e5fe23423c0.jpeg)
![45ddcfb81415fba95ec79b55075faae0.png](https://i-blog.csdnimg.cn/blog_migrate/449c42de4a6ca1ced5c16be976a2c85d.jpeg)
Counter 子为父的一半:安全,防止恶意创建进程
rt_priority实时进程的优先级,可通过系统调用改变
priority进程静态优先级,给出进程每次获取cpu后可使用的时间(按jitty计算)
Counter表示进程当前还可运行多久
进程开始运行时被赋为priority值,以后,每隔一个tick(时钟中断)递减1,减到0时引起新一轮调度。
重新调度将从runqueue队列中选出运行运行权值最大的就绪进程获得cpu。
创建一个新的进程时,子进程会继承父进程的一半剩余时间片
Linux的进程调度是基于优先级的调度
Linux的进程分为普通进程和实时进程,在基于优先级的算法下实时进程的优先级高于普通进程。
Linux中进程的优先级是动态的,调度程序周期性的调整他们的优先级,避免进程饥饿
![6f77b38ea4816dd3ea5d7c6754403f26.png](https://i-blog.csdnimg.cn/blog_migrate/5f16a8bd16e31f226fa2619c10ce5201.jpeg)
动态优先级,根据进程的平均睡眠时间,查看时间戳,等待时间越久,优先级越高,幅度不会超过5
![900212824db1f471274e94b57fbf1f99.png](https://i-blog.csdnimg.cn/blog_migrate/d5c893b3b459b788140bda938fbb6e54.jpeg)
实时进程运行后会一直占用CPU资源,只有下列情况在会被另一进程替代:
进程被更高优先级的实时进程取代
进程执行了阻塞操作并进入睡眠
进程停止或被杀死
进程自愿放弃cpu(可以通过调用系统调用sched_yield()放弃CPU)
进程是基于时间片轮转的实时进程,且用完了时间片
![a794d946d6b338760d50e88d691341f4.png](https://i-blog.csdnimg.cn/blog_migrate/6d4ccd55d15d594f3242155a138251c4.jpeg)