cpu之进程调度

一、进程状态:

执行态(run):进程正在使用CPU

等待态(wait):进程正在等待I/O完成,不在使用也不能使用CPU

就绪态(ready):进程不在使用CPU,但已经纯备好用使用CPU

二、CPU调度算法

  衡量CPU调度算法的标准有:CPU利用率、用户程序响应时间、系统吞吐量、公平合理性、设备利用率等。

  常见的调度算法有:先来先服务FIFO、轮转调度法RR(时间片法)、优先级调度法、短作业优先SJF、最短剩余事件优先、最高相应比优先、多级反馈法、策略驱动法、最晚时间限调度、二级调度法。

三:常见调度算法:

linux常用:

时间片算法:所有的进程排成一个队列。操作系统按照他们的顺序,给每个进程分配一段时间(一般为20ms~250ms)。

如果在时间片结束时进程还在运行,则CPU将被剥夺,重新调度。此时,退出的进程转换为就绪态,等待属于它的时间片的到来。

如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。

windows常用:

抢占式操作系统:假设有若干进程,操作系统会根据他们的优先级、饥饿时间,给他们算出一个总的优先级来。操作系统就会把 CPU 交给总优先级最高的这个进程。

当进程执行完毕或者自己主动挂起后,操作系统就会重新计算一次所有进程的总优先级,然后再挑一个优先级最高的把CPU控制权交给他。

操作系统会监控进程霸占CPU的情况,如果发现某个线程长时间霸占CPU,会强制使这个线程挂起。

注:Thread.Sleep(0):触发操作系统立刻重新进行一次CPU竞争

时间: 2024-08-06 01:19:45

cpu之进程调度的相关文章

Linux性能优化实战:负载均衡与CPU使用率(01)

一.CPU使用率并没有直接关系 1.平均负载 单位时间内,系统处于可运行状态和不可终端状态的平均进程数也就是平均活跃进程数,它和cpu使用率并没有直接关系, 可运行状态: 正在使用的cpu或者正在等待cpu的进程 不可中断状态 进程是正处于内核关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备I/O响应,也就是我们在ps命令中看到的D状态的状态 或者中断打断的 ,这个时候的 进程处于不可终端状态,如果此时的进程被打断了 ,就容易出现磁盘数据与进程不一致的 问题 所以,不可中断

CPU与进程和线程

CPU的介绍:参考博客:https://blog.csdn.net/stpeace/article/details/80101441 官名叫做微处理器,微处理器由一片或少数几片大规模集成电路组成的中央处理器,这些电路执行控制部件和算数逻辑部件的功能. CPU从逻辑上可以划分成3个模块,分别是 1控制单元: 控制单元是整个CPU的指挥控制中心,由 程序计数器PC(Program Counter), 指令寄存器IR(Instruction Register).指令译码器ID(Instruction

CPU上下文切换(上)

CPU上下文切换 ? 我们经常说的平均负载和cpu升高没有直接的关系,在不同的场景cpu升高会导致系统负载,但是系统负载不一定是cpu升高导致的. 一.系统负载过高的三种场景 cpu密集型进程,使用大量cpu会导致平均负载升高,此时这两者是一致的. io密集型进程,等待io也会导致平均负载升高,但cpu不一定很高. 大量等待cpu的进程调度也会导致平均负载升高,此时cpu使用率也会比较高. ? 大量进程竞争cpu(也就是上面的第三个场景),往往是被忽略的,cpu虽然没有使用,只是在竞争,也会发生

linux 内核是什么?

一:linux系统如何构成的?User space:User Applications and GNU C library (glibc)kernel space:System Call interface, Kernel and Architecture-Dependent Kernel Code. 二:为什么linux系统会划分为User space and Kernel space ? CPU通常实现了不同的工作模式,以ARM为例,实现了7种工作模式:用户模式(usr),系统模式(sys)

Android系统开发(8)——linx进程基本概念

一.proc文件系统 传统意义上的文件系统是用于块设备上信息的存储,/proc这个目录是一个虚拟文件系统,它放置的数据都是在内存当中,所以这个目录本身不占用任何硬盘空间.主要包含如下系统信息: 内存管理 系统进程特征数据 文件系统 设备驱动程序 系统总线 电源管理 终端 系统控制参数 用 户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数.由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件 时,proc文件系统是动态从系统内核读出所需信息并提交的.下面列出

《Linux内核分析》期末总结

Linux内核设计期中总结 版权声明:本文为博主原创文章,未经博主允许不得转载. 前八周博客汇总及总结 Linux内核设计第一周——从汇编语言出发理解计算机工作原理 我们学习了汇编语言的基础知识,这一部分和内核代码没有直接的关系,但是,老师具体带我们了解了函数调用过程中的堆栈变化,以及函数在调用的过程中是如何传递参数的.这一部分是为了之后学习进程上下文切换.中断上下文切换打基础的. Linux内核设计第二周——操作系统工作原理 老师编写了一个简单小型的内核代码,并带领我们阅读了其中的关键代码.主

8、Linux设备驱动的并发控制

一.并发与竞争     并发是指多个 多个执行单元同时执行,而这对对共享的资源,比如硬件的资源.软件的全局变量.静态变量 的访问,很容易导致竞态, 1.1.中断屏蔽     在单核的  CPU 里,避免竞态的一个简单有效的方法是,在进入临界区之前,就屏蔽系统的中断.也就是说,在进入临界区之前,中断被关闭,使得中断与进程之间的并发不会发生,而且,因为进程的调度器是依赖于中断来实现的,没有了中断,进程就不能被切换,保证了进程之间的并发不会发生. 方法: local_irq_disable() XXX

嵌入式 Linux开发Kernel移植(一)——kernel内核简介

嵌入式 Linux开发Kernel移植(一)--kernel内核简介 一.Linux Kernel 1.linux kernel简介 Linux kernel是芬兰黑客 Linus Torvalds 1991年在英特尔x86架构上用C语言开发的自由免费的符合POSIX标准的类Unix操作系统. Linux kernel是一个一体化内核(monolithic kernel)系统,提供硬件抽象层.磁盘及文件系统控制.多任务等功能的系统软件,不是一套完整的操作系统. 内核空间与用户空间是程序执行的两种

linux平均负载的理解及原因排查

当系统响应缓慢时,一般会用top或uptime命令查看系统负载是否过高. 例如输入uptime命令显示如下图,其中23:47:19表示现在的时间,up 260 days,14:39表示系统运行了多久,1 user表示当前登录用户数,最重要的是 load average,有三个数值,分别表示过去1分钟.5分钟.15分钟系统的负载.系统负载的英文解释为: System load averages is the average number of processes that are either i