第0章 计算机概论

0.1 电脑:辅助人脑的好工具

  • 计算机实质:接受用户输入的<u>命令</u>和<u>数据</u>,经由中央处理器的算数与逻辑单元运算处理过后,产生或存储成有用的信息

(因此我们可以得出:只要有输入设备和输出设备,那就算是一台计算机)

0.1.1电脑硬件的五大单元

  • 主要分为三个部分:输入单元,主机部分(系统单元),输出单元【系统单元又分为内存和CPU中的控制单元+算术逻辑单元】
  • 整台主机的重点在于CPU,是一个具有特定功能的芯片,里面含有指令集

CPU的主要工作在于管理+运算---->CPU可以分为两个主要的单元算术逻辑单元+控制单元

  • CPU读取的数据都是从内存里面来的,并且CPU处理完的数据也必须先写回内存。

0.1.2一切设计的起点:CPU的架构

  • CPU内部的指令集可以分为精简指令集(RISC)和复杂指令集(CISC)
  • Reduced Instruction Set Computer(RISC)

指令集较为精简。甲骨文(Oracle),IBM等公司都在做。

  • Complex Instruction Set Computer(CISC)

指令很复杂,主要是Intel,AMD等CPU

【冷知识:为什么是X86架构?】

【因为最早的那块Intel研发出来的CPU的代号为8086,后来依此架构研发出80286,80386,因此这种架构就被称为X86架构】

0.1.3其他单元的设备

0.1.4运作流程

  • CPU = 脑袋:因为指令集的差异,所以不同的设备会做不同的事情,但是主要都是通过CPU来判断和控制的

内存 = 脑袋里面存放正在被思考的数据:这里存放的是正在被处理的事情的数据

硬盘 = 脑袋里存放会议的记忆区块:这里是存放暂时用不到的数据的

主板 = 神经系统:链接各种各样的组件

接口设备 = 手 / 脚 / 皮肤 等:和外界进行互动

显卡 = 脑袋里面的影像:产生的数据也是来自于CPU

主机电源 = 心脏:没有心脏人就会死

0.1.5电脑的分类

  • 超级计算机(Supercomputer)
  • 大型计算机(Mainframe Computer)
  • 迷你计算机(Minicomputer)
  • 工作站(Workstation)
  • 微电脑(Microcomputer)

0.1.6电脑上常用的计算单位(容量,速度等)

  • 1字节 = 8位
  • 数据存储用二进制,速度单位用十进制
  • 速度单位:在网络传输方面速度一般是用为单位,因此20M = 20Mb/s = 2.5MB/s

【小课堂:买了一块500GB的硬盘,但是为什么格式化之后只剩下460GB的容量?】

【因为硬盘制造商一般用十进制,所以500GB = 500 1000 1000 * 1000 字节 = 466GB容量


0.2个人电脑架构和相关设备组件

  • 一般消费者所说的电脑就是x86的个人电脑架构
  • 主板的芯片组主要分为两个网桥来控制各组件的通信:(1)北桥,负责链接速度较快的CPU,内存,显卡等组件(2)南桥,负责链接速度较慢的设备接口,包括USB设备,网卡。

不过由于北桥最重要的就是CPU和内存之间的桥接,所以目前大部分北桥的内存控制器都整合到了CPU里面。

0.2.1执行脑袋运算与判断的CPU

  • 除了CPU的指令集会影响性能,还有CPU的频率:CPU每秒可以工作的次数。【但是频率只可以用来比较同款CPU的速度】
  • CPU的工作频率:外频和倍频

    • 早期还是存在北桥(未曾被整合),因此所有设备都得通过北桥,所以工作频率要相同。于是就有了前端总线(FSB)。但是因为CPU的命令周期 > 其他设备,所以厂家就在CPU的内部进行加速,所以就有了外频,倍频。
    • 外频:CPU和外部组件进行数据传输的速度。倍频:CPU内部用来加速工作性能的一个倍数。
    • 【例子:E8400频率为3.0GHz,外频为333MHz,所以倍频就是9】
    • 倍频通常会被锁住,所以超频一般都是超的外频
  • 位宽

    • 前端总线速度:CPU内存控制芯片和内存之间的传输速度
    • 频率是CPU内存控制芯片决定的
    • 频率 * 位宽 = 带宽。普遍位宽是64位 = 8字节(8B)
    • 字长:CPU每次能够处理的数据量,依据CPU的设计而有32位/64位
  • CPU等级

    • 向下兼容
  • 超线程(Hyper-Threading)

    • 在每一个CPU内部将重要的寄存器分成两组,而让程序分别使用这两组寄存器

0.2.2内存

  • 内存:动态随机存取内存(Dynamic Random Access Meory)
  • 多通道设计

    • 为了加大位宽 -> 芯片组厂商尝试将两个内存集合在一起
  • DRAM / SRAM

    • CPU的二级高速缓存:放置一些很常用的数据或程序。
    • 速度要和CPU的频率相同,所以DRAM是达不到的,就得用静态随机存取内存(Static Random Access Memory)。因为它的晶体管数量较多,价格高,所以内置到L2缓存
  • 只读存储器(ROM)(Read Only Memory)

0.2.3显卡(VGA - Video Graphics Array)

  • 显存:显卡上面的集成内存
  • 主要用处:分辨率 / 颜色深度
  • GPU - 显卡 = CPU - 电脑
  • 显卡也是通过GPU的控制芯片来和CPU / 内存 通信的

0.2.4硬盘和存储设备

  • 硬盘的物理组成

    • 圆形碟片,机械手臂,磁头,主轴马达
    • 运行:主轴马达 让 碟片 转动,然后机械手臂可以伸展让磁头在碟片上面读写。
  • 碟片上的数据

    • 读写方式:圆圈转圈
    • 扇区:磁盘的最小存储单位

    磁道:同一个同心圆的扇区组合成的⚪

    柱面:所有碟片在同一个磁道上的组合

    • 外圈扇区数量 > 内圈扇区。<u>默认方式:数据读写由外往内</u>
  • 传输接口:(1)SATA -> IDE (2) SAS -> SCSI
  • 固态硬盘(SSD Solid State Disk)

0.2.5 拓展卡与接口

0.2.6 主板

  • 发挥拓展卡性能须考虑插槽的位置

插卡的时候,请先务必阅读主板上的逻辑图例

  • 设备 I / O 地址与IRQ中断请求

    • I / O地址类似与各设备的门牌号,IRQ是各个门牌链接到CPU的专门路径。
  • CMOS / BIOS

    • CMOS:记录主板上面的参数(系统时间,CPU电压等)
    • BIOS:写入到主板里面的一个程序,用来加载CMOS,并尝试调用数据的。

0.2.7主机电源

0.2.8选购须知


0.3数据的表示方式

数据只能用 0 / 1 表示

0.3.1数字系统

  • 早期电脑利用通电与否的特性制造电子管

0.3.2字符编码系统

  • 常用的英文编码ASCII,每个符号都会占用一个字节
  • 中文:GB2312 / GBK,每个汉字占用2字节
  • 最后 ISO/IEC 统一了UTF-8

0.4软件程序的运行

【没插电的电脑是一堆废铁,插了电电脑是一堆会电人的废铁】

0.4.1机器语言程序与编译型程序

  • 为了解决一些脑瘫问题,电脑科学家发明了一种让人看的懂的程序语言,然后又创造了一个编译器来将人类写的东西转换成机器看的懂的东西交给机器

0.4.2操作系统

  • 操作系统:将所有的硬件都驱动,提供一个软件参考接口来给工程师开发软件。

也是一组程序,重点在于管理电脑的所有活动以及驱动系统中的所有硬件

  • 操作系统内核(Kernel)

    • 作用:让CPU开始运算,让内存可以开始加载数据等
    • 内核程序至关重要,因此它放置到内存当中的区块是被保护的(锁起来的),并且启动以后就一直常驻在内存里面
  • 系统调用(System Call)

    • 内核管理硬件,所以我们从参考硬件函数 -> 参考内核功能。但是太过于麻烦,操作系统又会提供一套API给程序员。

    【比如我们学习C语言,只需要参考C语言的函数,不要考虑内核的相关功能。】

  • 内核功能

    • 系统调用接口
    • 进程管理
    • 内存管理
    • 文件系统管理
    • 设备管理
  • 操作系统与驱动程序