目录
真实调度算法
在runqueue之中存在两个队列,一个为活跃队列active,一个为过期队列expired。
在两个队列之中一共存放140个优先级,前面100个存放系统进程,而我们创建的进程则属于后40个优先级,通过修改nice值使我们的进程在[100,139]范围内。
同时采用位图的方式来快速判断每32位是否存在进程,5*32=160刚好覆盖140个优先级
当某一进程时间片到了却仍未完成任务时,则会将该进程从活跃队列放到过期队列中。
而当活跃队列中所有进程都执行完后(时间片到期或运行完成),则将活跃队列与过期队列进行交换即可
同时,新增加的进程只会放入过期队列中而不会放入活跃队列,这样可以保证活跃队列中的进程始终在减少,保证之后所有进程的运行
补充:
1.所有进程都必须用链表连接
2.进程可以在调度,阻塞队列中
命令行参数
比如
env
作为指令,可以查看当前环境变量
作为传给main的参数,继承父进程的环境变量
我们可以查看此时test函数的env是否和bash一致
我们可以发现和父进程的环境变量大部分相同