前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【计算机工作原理】带大家科普计算机是如何工作的。

【计算机工作原理】带大家科普计算机是如何工作的。

作者头像
小皮侠
发布2024-04-08 20:48:38
1180
发布2024-04-08 20:48:38
举报

计算机是如何工作的

有人曾经这么评价CPU,它是迄今人类历史上科技巅峰的存在,除了需要复杂的技术之外,更需要精良的制作工艺,综合考虑制造顶尖性能的CPU难度堪比造核弹。 这个专题中并不会出现非常抽象的cpu核心概念,而是以一种科普的方式带大家了解计算机是如何工作的,我的主要目的就是希望大家在进行编程时能理解计算机是如何将逻辑代码进行实现的,帮助大家打破计算机的神秘感。

1.冯诺依曼体系

现代的计算机 , 大多遵守 冯诺依曼体系结构,如下图所示:

  • CPU 中央处理器: 进行算术运算和逻辑判断.计算机的核心。
  • 存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)
  • 输入设备: 用户给计算机发号施令的设备.如:鼠标,键盘
  • 输出设备: 计算机个用户汇报结果的设备.如:显示屏,音响设备

针对存储空间

硬盘 > 内存 >> CPU

针对数据访问速度

CPU >> 内存 > 硬盘

2.CPU的基本工作流程

CPU是电脑中最重要的硬件,操作系统是电脑中最重要的软件。

目前市面是主流的CPU有两种架构X86架构和ARM架构:

  1. 不同架构的cpu,支持的指令集(机器汇编)不同,对应的汇编语言不同。
  2. 现在的X86cpu也都是64位的。

CPU32位与64位的区别是什么呢?

比如在C语言代码中

代码语言:javascript
复制
int*p=NULL;
printf("%d",sizeof(p));

cpu是16,32,64位分别会得到不同的结果2,4,8。

CPU的位数和代码中内存地址用几个字节表示密切相关。

CPU的组成:

主要有四部分,计算单元ALU,控制单元CU,存储单元寄存器,时钟。

CPU的内部有很多小的计算单元(ALU运算器),它的数量多少决定了CPU的算力。

门电路=》半加器=》全加器=》加法器=》ALU运算器=》CPU的主要部分。

全加器的组成如下:

其中门电路是由与门,或门,非门,异或门组成的,CPU的构成非常抽象和复杂,上面只是帮助大家了解,并不严谨。

除了计算之外,CPU内部还有负责存储的部门(寄存器),寄存器也是由门电路构成的,它的存储必须在通电情况下才能完成。下图所示是1比特位的存储单元:

CPU的控制单元CU:

CU的主要任务就是依据指令驱动ALU进行具体的计算工作。

所谓指令,即指导 CPU 进行工作的命令,主要有操作码 + 被操作数组成。

其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等。

CPU如何执行指令?

  1. CPU要执行的指令是先在内存中的(冯诺依曼体系结构基本设定--让执行单元与存储单元解耦合)。
  2. CPU执行指令的顺序:取到指令=》解析指令=》执行指令。
  3. 取指令需要从内存中读取指令到CPU寄存器中,取指令很耗时,通过引入缓存,流水线技术优化
  4. CPU解析指令需要指令表,不同架构CPU支持指令表不同。
  5. 指令在执行过程中,可能会有一些操作数,不同指令,操作数个数含义不同。

CPU的时钟

电子计算机中的 CPU 并不是 靠自己来驱动这个周期的运转,而是靠背后一个时钟来进行周期驱动的。粗略的讲,CPU的主频就是时钟震荡的每秒次数,可近似看作每秒执行的指令数。

以我的电脑为例,下图基准速率即CPU的主频:

总结: ALU + CU + 寄存器 + 时钟就组成了我们平时经常看到的一个词汇:中央处理器( Center Process Unit )简称 CPU 。

最后再给大家科普一个小技巧,如何观察自己电脑的cpu性能?

CPU的性能好坏主要看两个部分,核心数(上图中逻辑处理器)——多个核心的运算能力;和频率(基准频率)——单个核心的运算能力。

现在的硬件厂家为了提高CPU的性能一般采用两种方法, 一个是把门电路做的足够小,(但是以现在的水平当门电路过小时即达到微粒水平,平时我门所熟知的物理规律便失效了,进入量子力学范畴,目前不可控) 二是把CPU做的足够大(但是这与工艺水平有很大关系,CPU做的越大制作过程中间出现错误的可能性就越高,CPU的废品率就越高,会提高成本)。所以厂家们想出来了 多核心的CPU,即一个CPU板上放多个CPU。这也就导致了并发编程的由来。后来又演化出 超线程技术,即把一个CPU当成两个也就是逻辑处理器,我们俗称大小核。现在的CPU都是多核加超线程技术加持下的产物。

3.Java语言怎么被计算机执行

Java语言首先先被Java编译器编译成class文件(字节码文件),进入Java虚拟机中,通过jvm进行装载字节码,校验字节码,解释字节码把class文件语言变成机器语言,最后由操作系统进行执行。

而C语言是先进行编译链接,形成汇编语言,在进行汇编形成机器语言,最后由操作系统调配CPU进行执行。

高级语言的一条语句 (Statement) 往往对应很多条指令 (Instruction) 才能完成。

4.操作系统存在的意义

操作系统是一组做计算机资源管理的软件的统称。目前常见的操作系统有: Windows 系列、 Unix 系列、Linux系列、 OSX 系列、 Android 系列、 iOS 系列、鸿蒙等。操作系统介于硬件和应用程序之间。

操作系统由两个基本功能:

  1. 防止硬件被应用程序滥用;
  2. 向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

操作系统通过抽象封装来管理各种硬件,并给其他软件提供稳定的运行环境。

操作系统中常见的一些概念及解释:

进程/任务:操作系统提供的一种软件资源,正在运行的程序会被操作系统封装为进程,进程是系统分配资源的基本单位——内存,硬盘。

进程在系统中的管理:1.先描述:先利用类或结构体把进程中的实体属性列出来,即PCB。

2.再组织:通过一定的数据结构(链表)把这些结构、对象串在一起。

看到任务管理器进程时,表示系统内部在遍历链表并打印每个阶段的相关信息。

运行一个新程序,系统多一个进程,即需要构造一个新的PCB并添加到链表上。

若运行中的程序退出,需要把对应进程的PCB从链表中删掉并销毁对应PCB资源。

PCB进程控制板块:操作系统利用类/结构体的方式对进程的抽象表示,即名称为PCB的类/结构体。它非常庞大,有上百个属性。

  1. pid--进程的身份标识符,通过简单的不重复整数区分,是唯一的,pid一般来说是32位整数;用pid可对进程操作区分。
  2. 内存指针--表述进程能使用那些内存,表述进程使用内存资源详细情况。
  3. 文件描述表--操作系统对硬盘设备进行封装,操作系统统一进行抽象都是按照文件方式操作的。
  4. 状态--表示某个进程是否能去CPU执行,有就绪状态,阻塞状态等。
  5. 优先级--进程调度时的依据
  6. 记账信息--针对每个进程占据多少CPU时间进行统计,会根据这个统计结果进行调整调度的策略;确保每个进程都可以使用到CPU。
  7. 上下文--支撑进程调度的重要属性,相当于游戏中的存档和读档。

内存管理:每个进程的内存彼此独立,互不干扰,通常情况下,进程A不能直接访问进程B的内存(系统稳定性)。

进程间通信:进程之间很多时候也需要相互配合完成某项工作,进程间通信和进程的独立性并不冲突,系统提供公共空间(多个进程都能访问到),让两个进程借助这种公共空间来交互数据;通信方式有:管道,共享内存,文件,网络,信号量,信号等。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 计算机是如何工作的
    • 1.冯诺依曼体系
      • 2.CPU的基本工作流程
        • 3.Java语言怎么被计算机执行
          • 4.操作系统存在的意义
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档