zoukankan      html  css  js  c++  java
  • 计算机组成原理基础


    计算机组成原理基础

    语言是用来沟通的,程序员与计算机进行沟通就需要通过编程语言进行沟通。编程语言并不能直接操纵硬件,而是运行在操作系统上,由操作系统对硬件进行控制。

    1、计算机的组成

    一个完整的计算机系统包括:计算机硬件、操作系统、用户软件

    1.1计算机硬件

    计算机是由控制器、运算器、存储器、输入设备、输出设备组成的,它们都通过总线进行连接通信。

    1.2 处理器

    处理器包含运算器和控制器,运算器负责算数运算,控制器负责逻辑运算

    1.2.1 CPU 内存 磁盘

    当有任务要处理的时候,存放在磁盘上的文件首先存到内存中,CPU到内存中去取数据

    1.2.2 CPU寄存器

    CPU的寄存器是由操作系统控制的,有以下分类:

    1. 通用寄存器:保存变量和临时结果
    2. 程序计数器寄存器:保存了将要取出的下一条指令的内存地址,这个就是中断的概念,CPU通过快速切换让我们觉得很多任务同时进行,实际CPU同一时刻只能处理一件事。
    3. 堆栈指针寄存器:堆栈是先进后出
    4. 程序状态字寄存器:该寄存器能控制CPU的优先级,模式(用户态和内核态),非常重要。

    1.2.3 用户态 内核态

    用户态:当用户程序运行时,CPU处于用户态,此时的内核态时完全禁止的 内核态:CPU内部有指令集,操作系统的指令都要转化成CPU指令执行,当CPU处于内核态时,操作系统对CPU具有完全的控制权

    1.2.4 用户态和内核态的切换

    用户态不能操作硬件,当用户程序运行的时候,程序想要控制硬件就需要由用户态切换到内核态,用户程序必须使用系统调用,系统调用陷入内核并调用操作系统,通过指令把用户态切换成内核态,并启用操作系统从而获得服务。

    可以用0和1两种状体表示内核态和用户态,psw中有相应的二进制位可以控制 内核态:操作系统的CPU状态 1 用户态:用户程序的CPU状态 0

    1.3 存储器

    1. 一级缓存L1:CPU内部的存储器,称作寄存器,采用的是与CPU相同材质制作的,访问速度快,无延迟
    2. 二级缓存L2:内存中有高速缓存行按照0-64字节为行0,64-127字节为行2,...依次类推,最常用的程序通常存放在高速缓存行中 ,当程序读取一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中。如果是,则称为高速缓存命中,否则称为高速缓存未命中,那么就必须访问内存。
    3. 内存RAM:RAM是随机存储器,断电后数据丢失
    4. EEPROM:Electrically Erasable PROM,电可擦除可编程ROM
    5. 闪存:flash通常作为便携存储设备,固态硬盘,但是读写次数是有限的
    6. CMOS:在计算机中通常作为电脑主板上保存时间和日期,还可以保存电脑的配置参数

    1.4 磁盘

    1.4.1 磁盘的结构 磁道:磁盘上的信息是存储在一系列的同心圆上,磁头能够读取的区域成为磁道。 柱面:磁盘的上下两面都是可以读写的,柱面就是磁盘相同位置上磁道的集合 扇区:磁道上的一段512字节的区域,是最小的读写单位 块block:8个扇区是一个block,4字节

    1.4.2 平均寻道时间 接收到系统指令后,磁头从开始移动至数据所在磁道花费的平均时间,体现了硬盘读取数据的能力。

    1.4.3 平均延迟时间 机械手臂到达数据所在的磁道后还需要旋转到数据所在的扇区,这段时间是平均延迟时间

    1.1.4虚拟内存与MMU

    虚拟内存可以支持计算机运行高于物理内存的程序,通常会在磁盘选择一个区域作为虚拟内存空间。程序运行时首先把重要的文件读入内存,暂时不需要的文件磁盘的虚拟内存区域,当需要的时候再读入内存

    MMU:CPU中负责快速映射内存和虚拟内存的管理单元,称为存储器管理单元

    1.4.5 磁带:磁带的存储速速低,但是存储容量大,可移动性强,通常在大型数据库中用作备份

    1.5 I/O设备驱动和控制器

    控制器 :输入输出设备在主板上所有相应的控制芯片,负责控制连接的设备 设备驱动:设备厂商制定了统一的接口,并会为不同的系统编写相应的驱动程序,这些驱动程序就保存在控制器中

    1.6 总线

    是计算机各种功能部件之间传送信息的公共通信干线

    PCI桥,即北桥,是连接CPU和内存这些高速设备的 ISA桥,即南桥,是连接低速设备的

    2 计算机启动流程

    计算机主板上有一个基本输入输出程序BIOS,BIOS相当于一个简单的操作系统,程序存储在CMOS中,计算机上电后,就是读取它。

    计算机的启动流程分成四个阶段:

    第一阶段:BIOS 

    2.1 硬件自检

    上电后BISO程序进行硬件检查,判断计算机硬件能否满足运行的基本条件,如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止。如果没有问题,屏幕就会显示出CPU、内存、硬盘等信息。

    2.2 启动顺序

    硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序。 这时,BIOS需要知道,"下一阶段的启动程序"具体存放在哪一个设备。也就是说,BIOS需要有一个外部储存设备的排序,排在前面的设备就是优先转交控制权的设备。

    第二阶段:主引导记录 

    计算机读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给"启动顺序"中的下一个设备。 这最前面的512个字节,就叫做"主引导记录"(Master boot record,缩写为MBR)。

    2.3 主引导记录的结构

    "主引导记录"512个字节,它的主要作用是,告诉计算机到硬盘的哪一个位置去哪个分区找操作系统。

    主引导记录由三个部分组成:

    1. 第1-446字节:调用操作系统的机器码。
    2. 第447-510字节:分区表(Partition table)。
    3. 第511-512字节:主引导记录签名(0x55和0xAA)。  

    2.4 分区表

    硬盘分区有很多好处。考虑到每个区可以安装不同的操作系统,"主引导记录"因此必须知道将控制权转交给哪个区。

     第三阶段:硬盘启动

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

     第四阶段:操作系统

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

    3 软件启动流程

    当用户软件启动时,此时处于用户态,用户程序向操作系统发送指令,程序需要操作硬盘则需要进入内核态,用户程序必须使用系统调用,系统调用陷入内核并调用操作系统,通过指令把用户态切换成内核态,并启用操作系统从而获得服务。

    致谢

    感谢您一直阅读到这里,如果我的文章有错误或不足之处,请务必在评论中留言指出,千万不用客气,万分感谢~

  • 相关阅读:
    __getitem__ 方法的使用
    python加载测试用例时,修改用例不必须以“test”开头
    python 反射
    python 类中__getattr__的使用
    python 中 __dict__函数的使用
    python 类中__int__和__str__的使用
    ubuntu16.04Nvidia驱动、CUDA、cuDNN安装与卸载
    C++中的各种可调用对象
    ubuntu16.04安装QGIS工具
    C/C++中extern关键字详解
  • 原文地址:https://www.cnblogs.com/Python666/p/6534963.html
Copyright © 2011-2022 走看看