一、CPU组成部分

  1. 寄存器:存储CPU执行的指令的数据,CPU每次执行指令都会重新更新寄存器。

  1. 程序计数器 PC:记录CPU即将执行的指令内存中的地址。

  1. 逻辑控制单元 ALU:CPU中负责逻辑计算的部分。

一个典型系统的硬件组成:

二、CPU执行程序的过程

①执行程序,操作系统利用直接存储器存取DMA技术,加载程序到内存中,这里可以不经过CPU。

②PC读取即将执行的线程指令对应的内存地址。

③根据PC记录的指令地址,读取程序指令数据存储到寄存器中(每一次读取数据都会完全更新寄存器内容,不保留之前的数据)。

④如需逻辑计算,由逻辑控制单元进行计算并返回结果保存到寄存器中。

当前线程指令的执行结果会放入栈中,继续往下执行步骤②到④。

假如遇到线程切换,CPU要从当前线程T1切换到执行另一个线程T2,这个是由操作系统的线程调度决定的。

切换前首先是保留现场(JVM是由虚拟机栈栈帧和线程的程序计数器记录保存执行状态,等待再次切换时继续执行)。

线程切换后操作系统控制CPU程序计数器读取T2线程程序计数器(还原现场,继续执行T2线程指令),重复执行步骤②到④。

⑤线程执行结束,CPU将寄存器结果返回给图形适配器,CPU继续执行下一线程的指令。

参考资料:《深入理解计算机系统》。

【计算机系统】CPU是如何运行程序的相关推荐

  1. python 死循环程序能占满cpu吗_运行tensorflow python程序,限制对GPU和CPU的占用操作...

    一般情况下,运行tensorflow时,默认会占用可以看见的所有GPU,那么就会导致其它用户或程序无GPU可用,那么就需要限制程序对GPU的占用.并且,一般我们的程序也用不了所有的GPU资源,只是强行 ...

  2. linux指定cpu运行程序,进程/线程绑定到特定CPU核的linux实现(有代码有实例)

    前言 现在计算机上的CPU大多都是多核的,有4核甚至是8核的.但是一个计算机启动之后其进程数是远远多于CPU核数的,因为操作系统会给自动调度这些进程在CPU核上轮流运行.但是对于应用程序或者进程,其性 ...

  3. c语言如何多核运行程序,对于多线程程序,单核cpu和多核cpu如何工作?

    1. 单核和多核CPU上多线程执行效率的探讨 a1: 多线程实际上是在单个CPU中按顺序执行的,但是系统可以帮助您切换该执行,但是它不是很快的(相反,是缓慢的) 如果有多个cpus,则可以同时在两个c ...

  4. 苹果IOS,与windows Phone7,系统,内存,CPU处理,及后台程序运行,详解微软墓碑机制的系统...

    关于ios的多任务以及内存管理 看了很多人为自己的可用内存是350mb还是380mb纠结.为了多优化出一点可用内存费脑筋. ios的任务管理和内存管理,跟windows是有很大差别的.很多人习惯于用  ...

  5. 计算机系统—CPU结构和内部工作

    一.计算机系统硬件组成 计算机系统的基本组成由:计算器.控制器.存储器.输入和输出设备这5大核心部件组成. 运算器和控制器等继承在一起成为CPU.以下通过这张图能够非常清楚的表达计算机系统.先从全局上 ...

  6. 哈工大计算机系统2022大作业:程序人生-Hello‘s P2P

    计算机系统 大作业 题     目 程序人生-Hello's P2P 专       业 计算机类 学    号 120L022115 班    级 2003007 学       生 王炳轩 指 导 ...

  7. 2022春哈工大计算机系统大作业——hello的程序人生

    计算机系统 大作业 题     目 程序人生-Hello's P2P 专       业 计算学部 学   号 班   级 学       生 指 导 教 师 计算机科学与技术学院 2021年5月 摘 ...

  8. (二)【软件设计师】计算机系统—CPU运算器控制器

    文章目录 一.CPU 1.计算机硬件基本组成(了解) 2.中央处理单元(了解) 3.CPU组成 4.例题 二.运算器 1.运算器有两个主要功能 2.简要介绍运算器中各组成部件的功能 三.控制器 1.例 ...

  9. 哈工大计算机系统大作业-Hello的程序人生

    目录快速链接 摘要 第一章 概述 1.1Hello简介 1.2环境与工具 1.3中间结果 1.4本章小结 第二章 预处理 2.1预处理的概念和作用 Ubuntu下的预处理命令 2.3Hello的预处理 ...

最新文章

  1. C++11中std::unique_lock的使用
  2. “压扁数组”技巧(flattening the array)
  3. SaaS市场普及 网络推广策略最有效
  4. block的用法以及block和delegate的比较(转发)
  5. 前端学习(2463):vue中 关于$emit的用法
  6. android登陆的编写
  7. 一周搞定scrapy之3,将爬取到的起点中文网信息保存到mysql
  8. RNA 6. 差异基因表达之-- 火山图 (volcano)
  9. 16进制ff转化为二进制_二进制与十六进制的转换与应用
  10. 网易云音乐encseckey算法php,求助网易云音乐_secretKey及_encSecKey获取
  11. 聚合架构-晓岩企业架构系列讲座整理(0-19)
  12. ORACLE EBS常用表查询语句
  13. 有道云笔记设置界面 占满全屏(右侧)
  14. 使用python判断一个数是否为素数
  15. my live PC / ThinkCentre M920x Tiny / ThinkStation P330 Tiny / Thinkpad yoga 12 vPro
  16. 【数据库】数据库基本知识
  17. 【大数据处理技术】期末复习整理
  18. SHA256sum系列命令检测文件完整性
  19. spring中事务提交后再发MQ消息
  20. 可视化数据下的全国人口出生率

热门文章

  1. shell 括号,双括号,中括号,双中括号
  2. Linux实习报告—实验三 C开发工具
  3. 治疗过敏性鼻炎用空气负离子
  4. Physically Based Rendering
  5. 利用Vulnhub复现漏洞 - Atlassian Confluence 路径穿越与命令执行漏洞(CVE-2019-3396)
  6. 转贴一个:中国股市,现在已经过了72小时最佳救援时间了!
  7. 电子元件-光电耦合器
  8. P3393 逃离僵尸岛 最短路dijkstra
  9. 转:领导力的核心是让每个人得以蓬勃发展
  10. flutter 底部弹框 选择农历和阳历的日期和时间