计算机组成原理基础
语言是用来沟通的,程序员与计算机进行沟通就需要通过编程语言进行沟通。编程语言并不能直接操纵硬件,而是运行在操作系统上,由操作系统对硬件进行控制。
1、计算机的组成
一个完整的计算机系统包括:计算机硬件、操作系统、用户软件
1.1计算机硬件
计算机是由控制器、运算器、存储器、输入设备、输出设备组成的,它们都通过总线进行连接通信。
1.2 处理器
处理器包含运算器和控制器,运算器负责算数运算,控制器负责逻辑运算
1.2.1 CPU 内存 磁盘
当有任务要处理的时候,存放在磁盘上的文件首先存到内存中,CPU到内存中去取数据
1.2.2 CPU寄存器
CPU的寄存器是由操作系统控制的,有以下分类:
- 通用寄存器:保存变量和临时结果
- 程序计数器寄存器:保存了将要取出的下一条指令的内存地址,这个就是中断的概念,CPU通过快速切换让我们觉得很多任务同时进行,实际CPU同一时刻只能处理一件事。
- 堆栈指针寄存器:堆栈是先进后出
- 程序状态字寄存器:该寄存器能控制CPU的优先级,模式(用户态和内核态),非常重要。
1.2.3 用户态 内核态
用户态:当用户程序运行时,CPU处于用户态,此时的内核态时完全禁止的 内核态:CPU内部有指令集,操作系统的指令都要转化成CPU指令执行,当CPU处于内核态时,操作系统对CPU具有完全的控制权
1.2.4 用户态和内核态的切换
用户态不能操作硬件,当用户程序运行的时候,程序想要控制硬件就需要由用户态切换到内核态,用户程序必须使用系统调用,系统调用陷入内核并调用操作系统,通过指令把用户态切换成内核态,并启用操作系统从而获得服务。
可以用0和1两种状体表示内核态和用户态,psw中有相应的二进制位可以控制 内核态:操作系统的CPU状态 1 用户态:用户程序的CPU状态 0
1.3 存储器
- 一级缓存L1:CPU内部的存储器,称作寄存器,采用的是与CPU相同材质制作的,访问速度快,无延迟
- 二级缓存L2:内存中有高速缓存行按照0-64字节为行0,64-127字节为行2,...依次类推,最常用的程序通常存放在高速缓存行中 ,当程序读取一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中。如果是,则称为高速缓存命中,否则称为高速缓存未命中,那么就必须访问内存。
- 内存RAM:RAM是随机存储器,断电后数据丢失
- EEPROM:Electrically Erasable PROM,电可擦除可编程ROM
- 闪存:flash通常作为便携存储设备,固态硬盘,但是读写次数是有限的
- 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-446字节:调用操作系统的机器码。
- 第447-510字节:分区表(Partition table)。
- 第511-512字节:主引导记录签名(0x55和0xAA)。
2.4 分区表
硬盘分区有很多好处。考虑到每个区可以安装不同的操作系统,"主引导记录"因此必须知道将控制权转交给哪个区。
第三阶段:硬盘启动
根据分区信息读入bootloader启动装载模块,启动操作系统
第四阶段:操作系统
控制权转交给操作系统后,操作系统的内核首先被载入内存。 然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI,等待用户输入用户名和密码
3 软件启动流程
当用户软件启动时,此时处于用户态,用户程序向操作系统发送指令,程序需要操作硬盘则需要进入内核态,用户程序必须使用系统调用,系统调用陷入内核并调用操作系统,通过指令把用户态切换成内核态,并启用操作系统从而获得服务。
致谢
感谢您一直阅读到这里,如果我的文章有错误或不足之处,请务必在评论中留言指出,千万不用客气,万分感谢~