操作系统-CPU调度

摘要:
概念上控制和协调多个进程对CPU的竞争意味着根据某个调度算法从就绪队列中选择一个进程,赋予所选进程场景使用CPU的权利N个进程就绪,等待较高的M(M˃=1)个CPU运行,并决定将哪个进程分配给哪个CPU运行,HOW:调度进程(所选进程在CPU上的运行方式)特定的调度时间:当内核在处理中断/异常/系统调用后返回到用户状态时(就绪队列的更改索引

概念

控制、协调多个进程对CPU的竞争

即按一定的调度算法从就绪队列中选择一个进程,把CPU的使用权交给被选中的进程

场景

N个进程就绪,等待上M(M>=1)个CPU运行,需要决策哪个进程分配给哪个CPU运行

解决

WHAT:调度算法(按什么原则选下一个),WHEN:调度时机(何时选),HOW:调度过程(被选中的进程如何上CPU运行)

具体

调度时机:内核对中断/异常/系统调用处理后返回用户态时(就绪队列的改变引发重新调度)

如进程正常终止(退出),进程由于错误终止(如abort异常),新进程创建,一个等待进程变就绪态(唤醒),一个进程由运行态变为就绪态

或阻塞态(等待或中断)

调度过程:进程切换,一个进程让出CPU,另一个占用CPU,包括对原进程状态的保存和新进程状态的恢复

举例:进程A下CPU,进程B上CPU,整个过程包括保存A的进程的上下文,修改进程A的状态(更新PCB),进程A移至合适队列,将B的状态

设置为运行态,从进程B的PCB中恢复上下文

一个重要概念:上下文切换开销

直接开销包括内核完成切换所用的CPU时间(保存和恢复寄存器,切换地址空间等)

间接开销包括高速缓存,缓冲区缓存,TLB失效

调度算法的衡量指标

吞吐量--每单位时间完成的进程的数目

周转时间--每个进程从提出请求到运行完成的时间

响应时间--从提出请求到第一次回应的时间

CPU利用率--CPU做有效工作的时间比列

等待时间--每个进程在就绪队列中等待的时间

免责声明:文章转载自《操作系统-CPU调度》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇js常用API方法ThinkPad X1 Carbon无法识别第二屏幕下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux概念之内存分析

linux内存总结 分析样本[root@221-comecs ~]# free total used freeshared buffers cached Mem: 1019820 782912 236908 0 54104 60...

(案例5)软中断导致 CPU 使用率过高

前言 软中断基本原理,可参考这篇博客:https://www.cnblogs.com/uestc2007/p/14684499.html 中断 一种异步的事件处理机制,用来提供系统的并发处理能力 当中断事件发生,会触发执行中断处理程序 中断处理程序分为上半部和下半部 上半部:硬中断,快速处理中断 下半部:软中断,用来异步处理上半部未完成的工作  软...

top命令

收集了两篇关于介绍Linux中监控命令top命令的详细使用方法的文章。总的来说,top命令主要用来查看Linux系统的各个进程和系统资源占用情况,在监控Linux系统性能方面top显得非常有用,下面就是我收集的关于Linux top命令的文章,希望能帮到大家 top作为日常管理工作中最常用也是最重要的Linux 系统监控工具之一,可以动态观察系统进程状况。...

设置最佳线程数总结

看到一篇关于最佳线程数相关的文章,内容比较经典,不敢私藏,分享一下! 最佳线程数: 性能压测的情况下,起初随着用户数的增加,QPS会上升,当到了一定的阀值之后,用户数量增加QPS并不会增加,或者增加不明显,同时请求的响应时间却大幅增加。这个阀值我们认为是最佳线程数。 为什么要找最佳线程数 1.过多的线程只会造成,更多的内存开销,更多的CPU开销,但是对提升...

linux_Nginx优化

1. 更改默认用户   a. 在nginx.conf中添加user指定用户 user web_nginx web_nginx; # nginx 用户大家都知道,通过更改默认用户实现,和http同级   b. 编译时更改用户 --user=web_nginx --group=nginx ps -ef | grep nginx...

详解tomcat的连接数与线程池

前言 在使用tomcat时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。 在前面的文章详解Tomcat配置文件server.xml中写到过:Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine(也就是Ser...