1. 概念初步

  • 程序:计算机的程序,和做饭、运动会的程序一样,指的是“做事的先后次序”;
  • 程序的组成:程序是指令(及物动词)和数据(宾语)的组合体;
    • C 语言 printf("hello\n");,这个简单的程序,printf是指定,hello是数据;
  • 机器语言:CPU 能够直接识别和执行的只有机器语言。
    • 使用C、C++、Java 等高级语言编写的程序最后都会转化为机器语言;
  • 正在运行的程序存储在什么位置?
    • 硬盘和磁盘等媒介上保存的程序被复制到内存(内存中是其副本)后才能运行;
  • 内存地址:标记和指定命令和数据的场所;
    • 地址由整数值表示;
  • CPU 的作用:
    • 根据程序的指令来进行数据运算,并控制整个计算机的设备;

2. CPU 是什么?

CPU 负责的就是解释和运行最终转换成机器语言的程序内容;

CPU 和 内存(memory)是由许多晶体管组成的电子部件,通常称为 IC(Integrated Circuit,集成电路);

CPU 的组成(各部分之间的电信号相互流通):

  • 寄存器;

    暂存指令,数据等处理对象;可将寄存器看做内存的一种;根据种类的不同,一个 CPU 内部会有 20~100 个寄存器;

  • 控制器;

    控制器负责把内存上的指令、数据等读入寄存器,并根据执行的结果来控制整个计算机。

  • 运算器:运算器负责运算从内存读入寄存器的数据。

  • 时钟:负责发出 CPU 开始计时的时钟信号;

    • Pentium 2GHz 就表示时钟信号的频率为 2GHz

3. C++程序的运行

生成一个 C++ 程序共有三个步骤:

  • ①预处理:代码在预处理器中运行,预处理器会处理代码中的元信息(meta-information)

    • 预处理指令以 # 字符开始,#include <iostream> 就是如此,本例中,include 指令是告诉预处理器,提取 iostream 头文件中的所有文件内容并提供给当前文件,
    • 当然头文件最常见的用途是声明在其他地方定义的函数;
  • ②编译:代码被编译为计算机可以识别的目标文件;
  • ③链接:独立的目标文件链接在一起形成一个应用程序;

程序是怎么跑起来的? —— CPU 是什么?C/C++程序的运行相关推荐

  1. 程序是怎样跑起来的:第一章-对程序员来说CPU是什么

    文章目录 一:CPU的内部结构解析 (1)CPU的作用 (2)CPU的构成 (3)简单了解内存 (4)程序运行的简单描述 二:CPU是寄存器的集合体 (1)CPU是寄存器的集合体 (2)寄存器的分类 ...

  2. 读《程序是怎样跑起来的》第一章有感

    程序是怎样跑起来的,一听名字就特别吸引人注意,想要翻开书一探究竟. 首先,我学习了这本书的第一章,"对程序员来说CPU是什么",刚一看到这个标题,我只知道CPU是计算机的运算核心和 ...

  3. 《程序是怎样跑起来的》(上)

    学习笔记 此书前言 无论任何事情,了解其本质非常重要.只有了解了本质才能提高利用效率.这样一来,即使有新技术出现,也能很容易的理解并掌握. 第1章 对程序员来说CPU是什么 本章提问 程序是什么? 程 ...

  4. Go 程序是怎样跑起来的

    刚开始写这篇文章的时候,目标非常大,想要探索 Go 程序的一生:编码.编译.汇编.链接.运行.退出.它的每一步具体如何进行,力图弄清 Go 程序的这一生. 在这个过程中,我又复习了一遍<程序员的 ...

  5. go 二进制程序守护_图解 Go 程序是怎样跑起来的

    Go语言中文网,致力于每日分享编码.开源等知识,欢迎关注我,会有意想不到的收获! 刚开始写这篇文章的时候,目标非常大,想要探索 Go 程序的一生:编码.编译.汇编.链接.运行.退出.它的每一步具体如何 ...

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

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

  7. 《程序是怎样跑起来的》读书笔记

    2017-2-25 前段时间读完<程序是怎样跑起来的>,对程序的运行过程认识更深.书中前六章讲解了CPU.二进制.内存与磁盘.数据压缩,比较易于理解,读过之后也收益良多.后面章节涉及汇编语 ...

  8. LabVIEW用了多线程,程序是不是会跑的更快些

    LabVIEW用了多线程,程序是不是会跑的更快些 这个取决于具体的应用程序.如果应用程序中的任务顺序执行,不会看到任何改善.比方说,程序打开文件,从文件中读取数据,然后关闭文件.多线程并不能使的应用程 ...

  9. 程序是怎样跑起来的-读书文摘

    缘起 在几年的工作和学习中,发现计算机知识体系尤为重要,自己还有所欠缺,想要从头到尾好好的夯实一下计算整个体系的相关知识,搭建计算机知识体系架构.因此决定细致的重读阅读这些计算机经典书籍,该书是上本书 ...

最新文章

  1. nginx 集群部署_入门级实操教程!从概念到部署,全方位了解K8S Ingress!
  2. java lambda表达式_高性能的 Lambda 表达式,简洁优雅图文并茂
  3. MQTT再学习 -- 漫谈MQTT协议
  4. IE8开发人员工具资料
  5. Codeforces Round #632 (Div. 2) C. Eugene and an array 思维 + 前缀和
  6. 机器学习算法(5)——决策树(ID3、C4.5、CART)
  7. [转] css3变形属性transform
  8. pythonarp攻击_python通过scapy模块进行arp断网攻击
  9. 白话空间统计十六:增量空间自相关
  10. Linux 代码美化(二)
  11. 16行Python代码 批量采集 短视频音乐素材❤
  12. easyui的filebox过滤文件
  13. jupyter报错EnvironmentLocationNotFound: Not a conda environment: /root/anaconda3/envs/anaconda3
  14. 永恒之蓝(ms17-010)漏洞简介及复现
  15. linux下zip文件密码破解Fcrackzip
  16. 营销-营销方式:营销方式
  17. canvas制作钟表
  18. 【愚公系列】2022年10月 微信小程序-电商项目-小微商户支付后端功能实现(node版)
  19. ISO 14443 非接触式射频卡标准学习
  20. 01博弈三要素和囚徒困境

热门文章

  1. unity可以直接转h5吗_瞎折腾:用Unity撸纯HTML5移动游戏/应用
  2. node js并发加载页面缓慢_详解如何利用前端Node模块zlib开启gzip压缩使页面加载速度更快...
  3. hive中的lateral view的解析
  4. HUE与Mysql的集成
  5. python 中m op n运算_Python数字类型、数值运算操作符、数值运算函数
  6. c语言迷宫源码,C语言迷宫源代码
  7. Python版点菜订单
  8. 机器学习代码实战——朴素贝叶斯(实现垃圾邮件分类)
  9. OpenCV学习——绘制图像灰色直方图
  10. 男友升级为老公的时候