- 「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」。
- 当然 不论新老朋友 我相信您都可以 从中获益。如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力!
- 计算机是由 硬件 和 软件 组件组成的复杂系统。希望通过本篇文章能够扩展和加深您对「计算机系统」的了解和认识。
Part 1. 硬件和软件
想一想《复仇者联盟》系列电影?
当你开始想《复仇者联盟》时,通常你都不会考虑任何关于 "物理" 方面的东西,例如影片是存储在哪一种物理媒介(例如 DVD、电影胶卷)上,或者是播放影片所需的物理设备(例如 DVD 机、电影放映机)。因为一张 DVD 是有实体的物理设备,而电影本身确是一种没有实体的数据信息。
硬件 这个词通常就用于称呼那些有实体的「物理设备」,如电视机、DVD 播放器和电脑等。
软件 则是指与 硬件 一起使用的「数据信息」,如电影、音乐、小说、网页、计算机程序等。
「数据信息」是非常有趣的东西,你此刻正在查看的网页、浏览的视频,它们的实际数据可能存储在中国乃至世界的任何一个角落。在数据从源头的物理设备复制到你的物理设备之前,可能已经辗转复制了成几百次,最终到达浏览器并交由系统渲染,在屏幕上还原出这些数据。
硬件组成
计算机系统的主要 硬件组成 是:
- CPU(处理器);
- 主要存储器(内存);
- 辅助存储器(硬盘);
- 输入设备(如键盘、鼠标);
- 输出设备(如显示器);
对于典型的台式计算机来说,CPU、主存、辅存、电源加上其他支持的硬件设备(如光驱,也就是放光盘的设备)通常都是放在金属外壳中,上述的这些组件也都是连接到俗称「主板」的计算机电路板上,而各种输入输出设备则通过暴露在金属外壳背面的连接器连接。
当然排除部分比较硬核的「搞机玩家」,如「鞋盒低成本版」:
再比如「终极水冷」:
主板
主板是用来连接其他硬件的「桥梁」。
如果把电脑比作是航空母舰,那么主板就是航母主体,其他控制中心、动能装置、武器设备等都必须安装在这个航母上才能协同使用,缺一不可。
我们来看一个典型的主板组成,这里只介绍一些重要常用的组件。(完整的可以参看上方图片下面的链接)
图中 1 -> CPU 插槽
CPU 插槽(英语:CPU socket)是计算机里主板上固定住 CPU 并导通电气讯号的一种插槽。不同 CPU 系列使用不同插槽。
图中 4 -> 内存插槽
内存插槽是指主板上用来插内存条的插槽。
DDR4 内存条(第四代内存条)拥有与 DDR3、DDR2 或 DDR 内存条相同的外观,但是 DDR4 内存条插槽的缺口与 DDR3、DDR2 或 DDR 内存插槽不同,以防止插入错误的内存条。
- PS:这里只展示了 ASUS X99-DELUXE 的内存安装方式,不同主板的内存安装方式可能不同,具体请按照主板说明书进行,否则系统将可能无法启动。
图中 5 -> PCI 扩展插槽
凡是显卡、网卡、声卡和 SCSI 卡等符合 PCI 接口规格的设备,都可以使用这些 PCI 扩展插槽。
图中 9&10 -> 主板电源插槽
这些电源插槽用来连接一个 ATX +12V 电源。24-pin 插槽用于主板供电,8-pin 插槽用于 CPU 供电。
电源所提供的连接插头已经过特别设计,只能以一个特定方向插入主板上的电源插槽。找到正确的插入方向后,仅需稳稳地将之套进插槽中即可。
图中 11 -> 后侧面板连接端口
图中 12 -> USB 连接插槽
这个插槽用来连接 USB 模块,可在前面板或后侧连接端口扩展 USB 模块。
USB 连接插槽分为 USB 2.0 和 USB 3.0。
- 注意: 请勿将 1394 排线连接到 USB 2.0 插槽上,同理,也不要将 USB 2.0 排线接到 1394 插槽上,这么做可能会导致主板的损毁。
图中 14 -> SATA 设备连接插槽
这些插槽可支持使用 Serial ATA(SATA)排线来连接 SATA 硬盘和光驱。
PS:上面是一些常见的主要组成,其结构会因不同主板而又略微的不同,例如有些主板没有显示器接口(独立显卡)。
CPU(中央处理器)
CPU 常常被比喻为计算机系统的 "大脑",这非常符合。
处理器 执行计算机系统的 所有基本计算。其他组件则是通过执行诸如 「存储数据」 或 「将数据移入和移出处理器」 之类的工作来促进计算。但是处理器是发生基本动作的地方。
处理器非常努力,但同时它也不那么"聪明",它唯一要做的就是执行老板(正在运行的程序)的命令(指令),它从来不问那些命令到底是做什么,只负责执行。这也就是为什么程序和 CPU 之间存在一个称为「操作系统」的中间人的原因。
- (Ps: 关于 CPU 其他知识我们会在之后来详细说。)
Hz 代表什么?
通常我们讨论 CPU 时,都会说这个 CPU 的是多少多少赫兹的,它其实 代表的就是 CPU 执行指令的速度(≈运行速度)。
每个 CPU 都有一个非常简单但非常重要的组件,它被称为 时钟。其唯一的目的就是 按一致的方式 来 打开 和 关闭 电信号,就像是您的心脏每秒跳动一次一样,时钟也会周期性地产生高电压信号和低电压信号。
1 Hz 表示每秒 1 个周期,也就是每秒产生一个高压信号一个低压信号,3 Ghz 也就是表示每秒 3 千万个周期。因此,如果一条指令需要 5 个时钟周期才能完成,则 CPU 的时钟越快,该指令将被执行得越快。(但现在 CPU 的快慢并不能简单考虑 Hz 大小,还得附加考虑"多核"和每个周期内能够完成的工作量的因素)
CPU 可以有多快?
普通台式计算机可以在不到百万分之一秒的时间内执行一条指令,即使是真空中传播的光,在这段时间内也只能走 10 厘米左右,而超级计算机(在所有计算机中速度最快)可以在不到十亿分之一秒的时间内执行一条指令!
CPU 的基本要素
-
寄存器: 寄存器是一个很小的地方,用于保存处理器的数据。寄存器用于存储信息,例如指令,存储地址和任何类型的数据,例如位序列或任何字符等。处理器的寄存器应足够大以存储所有给定的信息。
64位处理器应至少具有64位寄存器和32位处理器的2位寄存器。寄存器是所有存储设备中最快的。 - L1和L2高速缓存存储器: 高速缓存存储器是一种类型的存储器,位于处理器的芯片中,或者可以通过总线单独连接。高速缓冲存储器的用途是存储程序指令,这些指令被软件一次又一次地用于操作。当 CPU 处理数据时,首先将数据查找到高速缓存中。如果找到了数据,则它将相应地使用该数据;如果未找到,则处理器开始在较大的内存中查找,这实际上是耗时的。高速缓存的成本很高,但速度确实很快。
CPU 如何执行程序指令 | 简单原理
典型的 CPU 可以简单看成由 「控制单元」 和 「逻辑单元」 组成。
在执行一条指令之前,必须将程序指令和数据从输入设备或辅助存储设备放入内存中,一旦必要的数据和指令存储在内存中,中央处理单元就会对 每个指令 执行以下四个步骤:
- 「控制单元」从「存储器」中获取指令;
- 「控制单元」对指令进行解码(确定含义),并指示将必要的数据从存储器移至「逻辑单元」;
- 「逻辑单元」执行算术或逻辑指令;
- 「逻辑单元」将该运算的结果存储在存储器或寄存器中;
控制单元最终指示存储器将结果释放到输出设备或辅助存储设备。这一套步骤下来就被称为 「机器周期」。单个机器周期指令可以由大量子指令组成,每个子指令必须至少占用一个时钟周期(上面提到的一个上下脉冲时间)。
每种类型的中央处理单元都 只能理解一组特定的指令,称为 「指令集」。正如人们可以理解许多不同的语言一样,每种不同类型的CPU都有其可以理解的指令集。
将指令和数据存储在内存中是一回事,而控制单元能够找到它们又是另一回事。它是如何做到的?
每个指令和每个数据在「存储器」中的位置都有一个地址标识。也就是说,每个位置都有一个地址号码,就像公寓前面的邮箱一样。并且,与邮箱一样,位置的地址号保持不变,但是位置的内容(指令和数据)可能会更改。
但是,与邮箱不同,内存位置只能容纳固定数量的数据;地址只能容纳固定数量的字节-在现代计算机中通常为两个字节。
32 位 和 64 位?
您可能已经听说过 N 位处理器的概念。最常见的是 32 位和 64 位处理器。这些位确定传入和传出处理器的 数据量大小。具体会有以下几点不同:
一、处理数据的能力不同
32位和64位表示 CPU 一次能处理的最大位数,理论上来说,64位系统处理的数据效率比32位更高,相当于单车道和双车道开车似得,双车道单位时间可以有更多的车辆通行。但需要内存跟上,而且程序本身也是64位编译才能发挥64位系统的优势。
二、支持的内存不同(寻址能力不同)
简单来说,
32位系统的最多能在是 232=4294967296=4 (GB) 左右的内存里面找程序所需要的数据,而64位系统这就最大支持 128 GB 内存;
三、软件兼容性不同
32位系统无法运行64位软件,64位系统可以安装多数32位软件,以前因为大部分软件都是基于32位架构环境下开发,所以64位系统的兼容性不如32位。但现在64位兼容性也很强了,基本都是可以兼容各类软件了,而且64位的病毒都少了很多。特别是大量消耗内存的软件,如 PS,
64位和32位软件在64位系统里区别很大,64位真的快许多。
存储器
内存和硬盘的差别
内存 中通常放置的是您 短期存储 的数据,而 硬盘 中存放的则是 长期存储 的数据。
想象一下您正在办公,并且您拥有一个 办公桌 和一个 文件柜,那么此时办公桌的区域则代表了内存,文件柜则代表了硬盘。
刚开始工作不久,你就把需要使用的物品放置在了您的办公桌上,以便于使用,但由于桌子大小的限制,不能在桌上存放太多的东西。必须保留但不一定很快就可以访问的项目存储在文件柜中。根据文件柜的大小的不同,可以存储许多东西。
内存和硬盘之间的重要区别是前者在计算机关闭时会清除。另一方面,无论关闭计算机多少次,硬盘都将保持不变(除非物理破坏)。因此,类似于办公桌和文件柜,您离开办公室时在办公桌上留下的所有文件都会被丢弃。文件柜中的所有内容都将保留。
数据如何表示?
在主存储器和辅助存储器中,信息都以 位(bit) 模式存储。这是一个单一的开/关值,仅开/关这两种值是可能的。(也就是俗称的「二进制」)
有很多方法可以实现这一点,下面我们来列举一些:
- 机械上电器的开关(如电灯开关);
- 电线上的高低电压;
- 单个晶体管;
- 磁盘表面的一小部分;
- 磁带表面的一小部分;
- 卡上打了一个洞;(如上一篇文章提到的制表机)
- More..
在主存储器和辅助存储器中,位的实现方式不同,但是从逻辑上讲,两种类型的存储器都存储表示为位模式的信息。
字节 | 存储单位
一位能表示的信息太少了,以至于通常计算机内存被分成八位一组,每个八位组称为一个 字节。
一个字节大约足以容纳一个字符。 当某些数据需要八个以上的位时,将使用几个字节。通常,四个字节用于表示整数。
通常,我们需要用成千上百,甚至上亿,几十亿的字节来表示某一些数据,这样大数量的字节数我们又规定了一些单位,如下表所示:(仅列出常用单位)
| 名称 | 字节数 | 2 的幂 |
|---|---|---|
| 字节 | 1 | 20 |
| 千字节(kilobyte,俗称 1 Kb) | 1024 | 210 |
| 兆字节(megabyte,俗称 1 Mb) | 1,048,576 | 220 |
| 十亿字节(gigabyte,俗称 1 Gb) | 1,073,741,824 | 230 |
| 万亿字节(terabyte,俗称 1 Tb) | 1,099,511,627,776 | 240 |
硬盘
计算机系统的硬盘将字节记录在磁性表面上,就像录音带的表面一样。 数据的记录(写入)和读取使用类似于磁带的读写头完成。
上图显示了一个可移动臂末端的一个磁盘和一个读/写头。手臂沿着磁盘的半径移动。由于磁盘正在旋转,它将在磁盘上的圆形轨道中记录数据。稍后,要读取数据,必须将其移至正确的位置,然后必须等待直到旋转磁盘将数据放置到位。与录音带一样,无需更改即可读取数据。记录新数据时,它将替换以前在该位置记录的任何数据。与音频磁带不同,读/写磁头实际上并不接触磁盘,而是略高于磁盘。(由于磁盘在计算机启动时一直在旋转,因此如果读写头接触到磁盘,磁盘很快就会磨损。)
通常,称为计算机系统硬盘的组件包含许多单独的磁盘和上述的读/写磁头。磁盘的两面都涂有磁性材料(因此,每个磁盘都有两个读/写磁头),并且所有磁盘都连接到一个主轴上。所有磁盘和磁头均密封在无尘的金属容器中。由于硬盘的操作涉及机械运动(比电子过程要慢得多),因此读写数据要比使用主存储器慢得多。
文件(File)
硬盘(和其他辅助存储设备)用于长期存储大信息块,例如程序和数据集。通常,硬盘内存被组织成 文件,一个文件是已经被赋予了名称,并存储在辅助存储器的 信息集合。该信息可以是程序,也可以是数据。
文件中的信息表示方式与任何数字信息相同——它由位组成,通常分为八位字节。文件通常很大;它们的大小以千字节(Kb)或兆字节(Mb)为单位。
文件和操作系统
主存储之外的大多数数据集合都组织成文件。跟踪所有这些信息是操作系统的工作之一。如果计算机是网络的一部分,那么跟踪所有计算机上的所有文件是一项艰巨的工作,并且涉及网络上的所有操作系统。
应用程序(包括您可能编写的程序)不会直接读取,写入,创建或删除文件。 由于操作系统必须跟踪所有内容,因此所有其他程序都要求操作系统执行文件操作任务。例如,假设某个程序刚刚计算出一组数字,则需要保存它们。以下可能发生的操作方式: