操作系统管理CPU的直观想法
CPU的工作原理
要想管理CPU,就要先学会如何使用CPU。我们先从一个程序的执行来看看CPU是如何工作的。
void main(){
int i , sum;
for(i = ; i < ; i++){
sum = sum + i;
}
printf("%d",sum);
}
如果我们想要执行上面的一个程序,首先我们需要把该程序放到内存中,然后给PC寄存器设置成存放该程序的内存首地址,比如把PC设置成50,CPU通过地址总线找到地址为50的内存,取出第一条指令并执行,并使PC加1指向下一条指令,CPU再取址执行。这个过程CPU是自动取址执行的。
从上面的程序可以知道,如果想让CPU工作起来,只需要给PC寄存器设置一个初值,就可以让CPU自动工作了。
什么是并发
我们来分别运行一下下面两个程序
//程序1
void main(){
int i , sum;
for(i = ; i < ; i++){
sum = sum + i;
}
sum = sum + ; }
//运行时间为:0.324s
//程序2
void main(){
int i , sum;
for(i = ; i < ; i++){
sum = sum + i;
}
//sum = sum + 1;
printf("%d",sum);
}
//运行时间为:0.413s
实际上第二个程序是用一个IO操作指令代替了一条运算指令。上述结果表明执行一条运算指令的时间和执行一条IO指令的时间之比为1:105,IO操作比计算操作慢非常多,一般来说是好几个数量级。在进行IO操作的时候CPU是不工作的,如果让一个程序执行完后再去处理另一个程序,势必会造成CPU的利用率变低。所以为了CPU的利用率,在多道程序之间来回切换着使用CPU使CPU的利用率有效提高是非常重要的。
我们称一个CPU交替执行多个程序为:并发。
进程概念的引入
我们知道要提高CPU的利用率,可以让CPU并发的执行多道程序,那么如何做到并发呢?
需要把程序执行的地址切换到另外一个程序的首地址,然后CPU自动的取址、执行。通过PC寄存器(指示指令在存储器中的存放位置,也就是地址信息,在汇编中用寄存器IP表示PC)进行地址的切换。实际上仅仅切换PC是不够的,还需要还原该程序之前执行的信息,所以每个程序有了一个存放信息的结构:PCB。进程控制块(PCB)相当于一个结构体,包含进程状态程序计数器、CPU寄存器、CPU调度信息、内存管理信息、计数信息、IO状态等信息。
为了与静态程序相区分,我们称运行中的程序为进程。与静态程序相比,进程保存着用于控制和管理进程的所有信息,以便当程序再次执行的时候能够恢复到上次执行的状态进行执行。
多进程视图
我们知道操作系统的核心功能就是管理计算机硬件资源,由如何更好的利用CPU资源引出了对CPU的管理(操作系统对CPU的切换、调度和控制)。由对CPU的管理以便更好的利用CPU资源引出了多进程视图(多个进程在CPU上交替执行的样子)。
操作系统管理CPU的直观想法的更多相关文章
- 操作系统之CPU管理的直观想法
计算机:是工具,帮助解决实际问题 操作系统,是为了方便使用硬件 计算机模型: 图灵机,模拟人类计算 起初的图灵机就像一个只会做一道菜的厨师 通用图灵机,核心是设置控制器动作(修改控制器),把逻辑读入控 ...
- CPU被夺走的三种状态 执行时间久了 IO操作让cpu等待 被优先级高的抢占
CPU被夺走的三种状态 执行时间久了 IO操作让cpu等待 被优先级高的抢占
- 操作系统-CPU管理的直观想法
1. 管理CPU,先要使用CPU 管理CPU的最直观方法 2. 提出问题 有IO指令执行的特别慢,当cpu执行计算指令很快,遇到IO指令cpu进行等待,利用率不高. 使用多道程序.交替执行,这样cpu ...
- 关于CPU的一些操作(CPU设置超频)
常见的几种CPU模式: .ondemand:系统默认的超频模式,按需调节,内核提供的功能,不是很强大,但有效实现了动态频率调节,平时以低速方式运行,当系统负载提高时候自动提高频率.以这种模式运行不会因 ...
- 操作系统学习笔记4 | CPU管理 && 多进程图像
操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件.而通过学习笔记3的简史回顾,操作系统通过多进程图像实现对CPU的管理.所以多进程图像是操作系统的核心图像. 参考资料: 课程:哈 ...
- 操作系统--进程管理1--单个CPU情况
1.进程概念 进程:一个正在执行的程序:操作系统提出进程概念目的:是为了跟踪程序在执行期间的状态.而程序只是一段代码,是一个静态的概念 无法准确描述程序执行时候发生的一切.程序代码被加载进内存后就以进 ...
- 系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路
前言 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题.当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警. 本文主要针对系统运 ...
- 4.计算机启动过程的简单介绍 计算机启动流程 计算机BIOS作用 POST 开机自检 计算机启动顺序 分区表 操作系统启动
计算机的启动
- 一次线上redis实例cpu占用率过高问题优化(转)
前情提要: 最近接了大数据项目的postgresql运维,刚接过来他们的报表系统就出现高峰期访问不了的问题,报表涉及实时数据和离线数据,离线读pg,实时读redis.然后自然而然就把redis也挪到我 ...
随机推荐
- .db轻量级本地数据库
1.概述: db文件一般是数据库数据存放文件. db是datebase的缩写,是数据库文件. 我们可以简单的理解为db是本地轻量级数据库(用了缓存,储存少量本地数据,防止断电等突发意外的发生对我们的程 ...
- 《Java多线程编程实战指南+设计模式篇》笔记
线程的监视:工具:jvisualvm.exe 命令:jstack PID 原子性: volatile关键字: 显示锁:人为实现的程序员可控制的锁,包括synchronized和Lock下的实现类: 线 ...
- 如果plsql连接没问题,但程序中报ORA-12504的错误
说明程序中配置数据库连接的地方没有写tnsnames.ora中的SERVICE_NAME,或者SERVICE_NAME写的有错,检查一下,改正应该就好了
- luoguP2664 树上游戏
https://www.luogu.org/problemnew/show/P2664 考虑对于每种颜色包含的点和这些点的子节点建出虚树,发现只要将一个联通块中的东西 Dp + 差分一下就行了 当然要 ...
- JDBC_PreparedStatement用法_占位符_参数处理
import java.sql.Connection; import java.sql.Date;import java.sql.DriverManager;import java.sql.Prepa ...
- Qt 学习之路 2(31):贪吃蛇游戏(1)
Qt 学习之路 2(31):贪吃蛇游戏(1) 豆子 2012年12月18日 Qt 学习之路 2 41条评论 经过前面一段时间的学习,我们已经了解到有关 Qt 相当多的知识.现在,我们将把前面所讲过的知 ...
- Python web前端 06 运算符 循环
Python web前端 06 运算符 循环 一.运算符 #JS六大数据类型 #number 数字 #string 字符串 #boolean 布尔型 #function 函数 #undefined 未 ...
- Android配置横屏资源与Activity生命周期
屏幕旋转会改变设备配置(device configguration).设备设置的特征有:屏幕方向.屏幕像素密度.屏幕尺寸.键盘类型.底座模式以及语言等. 当屏幕发现旋转时(设备配置更改),And ...
- myeclipse启动后,卡在loading workbench界面
今天在修改svn的配置文件的时候,电脑重启了几次,然后myeclipse启动的时候就一直卡在loading workbeach动不了了. 重启了几次也不行,后来查的百度,找到的解决方法如下: 找到my ...
- 113th LeetCode Weekly Contest Largest Time for Given Digits
Given an array of 4 digits, return the largest 24 hour time that can be made. The smallest 24 hour t ...