首页 > 技术文章 > 1. 计算机组成

superpoint 2021-07-19 23:40 原文

1.计算机硬件组成

  • 存储器:内存和外存,内存基于电工作,存的快,但是断电丢失,外部存储设备基于磁工作,断电不丢失,但是相对的存储速度慢,一般是将计算机外存的数据加载到内存中供计算机使用
  • 运算器:进行算数运算和逻辑运算
  • 控制器:相当于人的大脑
  • 输入设备
  • 输出设备

2.计算机软件

分类:系统软件(完成计算机与人之间的交互)、应用软件(满足用户特定需求的应用程序)

操作系统:是一个协调、管理、控制计算机硬件资源与应用软件资源的一个控制程序

  • 控制计算机硬件的基本运行

  • 把硬件运行的复杂操作封装成简单的功能,给上层的程序使用

    ​ 文件是操作系统提供给用户的一种虚拟概念

3.计算机体系的三层结构:

  • 应用程序
  • 操作系统
  • 计算机硬件

4.平台与跨平台

硬件+操作系统=平台,应用软件运行在平台之上

软件能否跨平台使用也是衡量应用软件质量的一个重要指标

5.CPU

CPU内部是存在指令集的,应用程序调用指令集去实现对硬件的控制,而CPU内部的指令集分为两种:

  • 精简指令集(Reduced Instruction Set Computing,RISC):CPU中微指令集较为精简,每个指令的运行时间都很短,完成的动作也很单纯,指令的执行效能较佳;但是若要做复杂的事情,就要由多个指令来完成。常见的RISC指令集CPU主要例如Sun公司的SPARC系列、IBM公司的Power Architecture(包括PowerPC)系列、与ARM系列等。
  • 复杂指令集(Complex Instruction Set Computer,CISC):与RISC不同,在CISC的微指令集中,每个小指令可以执行一些较低阶的硬件操作,指令数目多而且复杂,每条指令的长度并不相同。因此指令执行较为复杂所以每条指令花费的时间较长,但每条个别指令可以处理的工作较为丰富。常见的CISC微指令集CPU主要有AMD、Intel、VIA等的x86架构的CPU。

6.x86-64位的概念

  • x86是对CPU型号的一种说明
  • 64位是指CPU在内存中一次性取指令的二进制位数是64位的
  • CPU具有向下兼容性,就是64位的CPU可以一次性处理的指令的位数可以小于64位,但是不能大于64位

7.寄存器的概念:

	因访问内存以得到指令或数据的时间比cpu执行指令花费的时间要长得多,所以,所有CPU内部都有一些用来保存关键变量和临时数据的寄存器,这样通常在cpu的指令集中专门提供一些指令,用来将一个字(可以理解为数据)从内存调入寄存器,以及将一个字从寄存器存入内存。cpu其他的指令集可以把来自寄存器、内存的操作数据组合,或者用两者产生一个结果,比如将两个字相加并把结果存在寄存器或内存中。

    寄存器的分类:
	1.除了用来保存变量和临时结果的通用寄存器外
	2.多数计算机还有一些对程序员可见的专门寄存器,其中之一便是程序计数器(CU),它保存了将要取出的下一条指令的内存地址。在指令取出后,程序计算器就被更新以便执行后期的指令
  3.另外一个寄存器便是堆栈指针,它指向内存中当前栈的顶端。该栈包含已经进入但是还没有退出的每个过程中的一个框架。在一个过程的堆栈框架中保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量
  4.最后 一个非常重要的寄存器就是程序状态字寄存器(Program Status Word,PSW),这个寄存器包含了条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入。在系统调用和I/O中,PSW非常重要
  寄存器的维护:
  操作系统必须知晓所有的寄存器。在时间多路复用的CPU中,操作系统会经常中止正在运行的某个程序并启动(或再次启动)另一个程序。每次停止一个运行着的程序时,操作系统必须保存所有的寄存器,这样在稍后该程序被再次运行时,可以把这些寄存器重新装入。

8.内核态与用户态

​ 通常,PSW(Program Status Word),也叫程序状态字、程序状态寄存器,它的里面有一个二进制位控制这两种模式

​ 内核态:当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能,(操作系统在内核态下运行,从而可以访问整个硬件)

​ 用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成内核态也是禁止的

​ 内核态与用户态切换  

​ 用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务

  把系统调用看成一个特别的的过程调用指令就可以了,该指令具有从用户态切换到内核态的特别能力

9.多线程与多核芯片介绍

​ moore定律指出,芯片中的晶体管数量每18个月翻一倍,随着晶体管数量的增多,更强大的功能称为了可能,如

I.第一步增强:在cpu芯片中加入更大的缓存,一级缓存L1,用和cpu相同的材质制成,cpu访问它没有时延

II.第二步增强:一个cpu中的处理逻辑增多,intel公司首次提出,称为多线程(multithreading)或超线程(hyperthreading),对用户来说一个有两个线程的cpu就相当于两个cpu,我们后面要学习的进程和线程的知识就起源于这里,进程是资源单位而线程才是cpu的执行单位。

​ 多线程运行cpu保持两个不同的线程状态,可以在纳秒级的时间内来回切换,速度快到你看到的结果是并发的,伪并行的,然而多线程不提供真正的并行处理,一个cpu同一时刻只能处理一个进程(一个进程中至少一个线程)

III.第三步增强:除了多线程,还出现了包含2个或者4个完整处理器的cpu芯片。要使用这类多核芯片肯定需要有多处理操作系统

​ 2核4线程是指双CPU,每个CPU都是双线程,就是假4核

10.存储器

  • 存储器主要负责存取数据,主要有三个指标:价格、容量和存取速度

    • 寄存器:L1缓存(第一级别缓存),存储的是少量的,关键的数据,与CPU一样快,因此CPU访问他时无延时,但是空间很小,64位大小是64*64,32位的大小是32乘32,都小于1K
    • 高速缓存:L2缓存,存放的是CPU经常使用的数据,CPU取数据的时候,先检查高速缓存中是否有该数据,如果有,称为高速缓存命中,由于高速缓存价格昂贵,所以其大小有限,有些机器具有两级甚至三级高速缓存,每一级高速缓存比前一级慢但是容易大。
    • RAM:内存
    • ROM:只读内存(read only memory)
    • CMOS:断电数据丢失,存取数据慢,但是的耗电量极低,一般用于计算机计时器的存储
  • 寄存器、高速缓存、内存、磁盘、磁带,cpu对其访问需要的的时间越来越长,但是存储的容量越来越大(磁带发现的较早,内存相比磁盘要小,现在基本已经淘汰)

  • 硬盘:磁道(一圈二进制数据)、柱面、扇区(在硬盘的角度,一次读写的最小单位是扇区,是512B,操作系统一次读写的最小单位是一个block块,即8个扇区)

    • 机械硬盘
    • 固态硬盘
  • IO延迟:平均寻道时间+平均延迟时间

    • 平均寻道时间:机械手臂转到数据所在磁道需要花费的时间(受限于物理工艺水平,目前机械磁盘可以达到的是5ms)
    • 平均延迟时间:转半圈需要花费4ms(7200转/min),受限于转速
  • 优化程序运行效率的一个核心法则:能从内存取数据就不要在硬盘取数据

  • 虚拟内存:许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在linux中称为swap,这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,称为存储器管理单元(Memory Management Unit MMU)

  • 从一个程序切换到另外一个程序,称为上下文切换(context switch),缓存和MMU的出现提升了系统的性能,尤其是上下文切换

  • 磁带:在价钱相同的情况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。(常见于大型数据库系统中)

  • 磁带的特点是价格便宜,拆卸简单

  • IO设备:设备控制器(就是一组芯片,设备控制器上面是驱动程序,由驱动程序控制设备控制器进而控制设备本身)+设备本身

  • 总线:连接各个功能部件的数据传输线

    • PCI桥:也被称为北桥,连接CPU和存储器等高速传输数据的组件
    • ISA桥:也成为南桥,主要连接外部设备,USB存储设备等
  • BIOS(basic input output system):存放计算机厂商写死在计算机上的一段核心程序BIOS,被写到ROM中,里面是一些基础的程序,在电脑上开机之后,在ROM中取出BIOS,完成一些简单的IO操作,简单的说,裸机的电脑中BIOS充当操作系统的角色,CMOS充当硬盘的角色,ROM充当内存的角色

  • 裸机电脑如何安装操作系统

    • 裸机——》开机——》加载ROM中的BIOS——》加载启动项——》默认在ROM中优先取数据(就是加载BIOS)——》插入外部存储设备——》将其中的操作系统的数据拷贝到本地硬盘中——》关机——》打开BIOS——》将本地硬盘设置为第一加载顺序——》加载其中的数据,这样每次开机的时候就跳过BIOS,直接调用的操作系统的数据了

    • 操作系统启动流程

    • 1.计算机加电

      2.BIOS开始运行,检测硬件:cpu、内存、硬盘等

      3.BIOS读取CMOS存储器中的参数,选择启动设备

      4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)

      5.根据分区信息读入bootloader启动装载模块,启动操作系统

      6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI

  • 应用程序的启动流程:操作系统安装之后才可以安装应用程序

    • 双击exe文件,就是告诉操作系统有一个应用程序要执行,提供文件路径
    • 操作系统根据文件路径找到EXE文件在硬盘中的位置,将其加载到内存中
    • 操作系统控制CPU读取内存中的程序的代码执行,这样应用系统就完成了启动

推荐阅读