要了解进程的调度,首先要了解PCB(进程控制块)
PCB中的属性和进程调度息息相关,接下来就主要介绍PCB中和进程调度有关的一些属性!
一、状态
这个状态就描述了当前这个进程接下来应该怎么调度
就绪状态:随时可以去CPU上执行
阻塞状态/睡眠状态:暂时不可以去CPU上执行
Linux中的进程状态还要很多其他的~
二、优先级
先给谁分配时间,后给谁分配时间,以及给谁分得多,给谁分得少~
三、记账信息
统计了每个进程,都分别被执行了多节、分别都执行了哪些指令、分别都排队等了多久......
给进程调度提供指导依据
四、上下文
就表示了上次进程被调度出CPU的时候,当时程序的执行状态,下次进程上CPU的时候,就可以恢复之前的状态,然后继续往下执行。
进程被调度出CPU之前,要先把CPU中所有的寄存器中的数据都给保存到内存中(PCB的上下文字段中),相当于存档了。
下次进程再被调度上CPU的时候,就可以从刚才的内存中恢复这些数据到寄存器中,相当于读档了。
存档+读档~~就称为“上下文”。
进程的调度,其实就是操作系统在考虑CPU资源如何给各个进程分配~~
内存资源又是如何分配的呢?
虚拟地址空间~~
由于操作系统上同时运行着很多进程,如果某个进程出现了bug,进程崩溃了,是否会影响到其他进程呢?现代的操作系统,能够做到这一点,就是“进程的独立性”来保证,就依仗了“虚拟地址空间”。
进程间的通信:
现在最主要使用的进程间的通信方式有两种:
1、文件操作
2、网络操作