新城建站,沈阳做网站制作的公司,企业管理软件排名,省财政厅经济建设处网站正文开始前给大家推荐个网站#xff0c;前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到网站。 
进程切换 
进程并发就需要做到进程切换#xff0c;一个CPU一套寄存器但是需要运行的进程有很多…正文开始前给大家推荐个网站前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到网站。 
进程切换 
进程并发就需要做到进程切换一个CPU一套寄存器但是需要运行的进程有很多CPU内是内置的有时间片的当时间片到之后上面的进程就会被从CPU上剥离下来开始调度下一个进程所以被剥离下来的进程就需要保存CPU中寄存器的内容然后等到下一次被调度的时候再把内容放上去接着执行寄存器上的内容不需要清零直接进行覆盖就行因为下一个进程来的时候这时寄存器的内容是上一个进程的并且已经保存带走了。所以进程在被调度的时候是会进行上下文保护的不然下一次调度就会不知道从哪里开始。这就是进程切换。 
O(1)调度算法 我们可以看到运行队列有140个位置每个位置就表示一个优先级0 ~ 99我们不用考虑而100 ~ 139是普通优先级正好对用我们普通用户可以修改的40个优先级。每一个需要运行的进程都会被放在运行队列中我们会发现其中有两个运行队列这是怎么回事 两个运行队列我们分为活跃队列和过期队列其中void* active 指向的是活跃队列void* expired指向的是过期队列CPU只调度活跃队列这样做有什么好处因为CPU要保证每个进程较为公平的都能够得到调度如果只有一个队列的话如果已经在调度100位置的优先级了此时如果前面插入了一个优先级高的进程那CPU就得拐回去调度它如果加入的优先级高的进程很多的话会导致优先级低的一直无法导致调度从而导致进程饥饿问题所以当一个进程没有别调度完就去过期队列排队所以活跃队列的进程一定会越来越少如果CPU把活跃队列中的所有优先级的进程都调度完了就进行swap(active,expired)操作然后持续进行这样的操作来保证每个进程进行较为公平的调度。 
我们看到还有一个bitmap的东西它其实是一个int的数组可以表示160个比特位所以就可以映射每个优先级是否有进程利用这样的位图可以大大的提高查找非空队列的效率。 
nr_active就表示这个整个队列queue总共有多少个运行状态的进程。 
那么今天的分享就到这里了有什么不懂得可以私信博主或者添加博主的微信欢迎交流。