一、计算机系统
计算机硬件,操作系统,软件(程序员开发的就是软件)
二、处理器
CPU、内存以及I/O设备都由一条系统总线(bus)连接起来并通过总线与其他设备通信
cpu是人的大脑,负责运算;
内存是人的记忆,负责临时存储
硬盘是人的笔记本,负责永久存储
输入设备是耳朵或眼睛,负责接收外部的信息传给cpu;
输出设备是你的表情,负责经过处理后输出的结果
以上所有的设备都通过总线连接,总线相当于人的神经
cpu从内存中取指令->解码->执行
寄存器:
概念:因访问内存得到指令/数据的时间比cpu执行指令花费的时间要长,所以CPU内部有用来保存关键变量和临时数据的寄存器
寄存器分类:
- 通用寄存器:保存变量和临时结果
- 程序计数器:保存了将要取出的下一条指令的内存地址
- 堆栈指针:保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量
- 程序状态字寄存器PSW(重要):条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位
处理器设计的演变:
- 第1阶段:取值、解码、执行这三个过程同时进行,时间浪费
- 第2阶段:流水线式的设计。即执行指令n时,可以对指令n+1解码,并且可以读取指令n+2
- 第3阶段:超变量cpu,有多个执行单元,同时负责不同的事情。但程序指令不按顺序执行
内核态与用户态:
- 概念:多数CPU都有两种模式,即内核态与用户态。PSW中有一个二进制位控制这两种模式
- 内核态:cpu可执行指令集中所有的指令,使用硬件的所有功能
- 用户态:执行cpu整个指令集的一个子集,不包含操作硬件功能
- 系统调用:特别的过程调用指令,从用户态切换到内核态的特别能力
多线程和多核芯片:
- cpu中的处理逻辑增多称为多线程/超线程
- 进程是资源单位,线程才是cpu的执行单位
- 多线程运行cpu保持两个不同的线程状态,可在纳秒级时间内切换,属于伪并行,多线程不提供真正的并行处理,
一个cpu同一时刻只能处理一个进程(一个进程中至少有一个线程)
三、 存储器
寄存器,即L1缓存:
与cpu一样快,在32位cpu中为32*32,在64位cpu中为64*64,在两种情况下容量均<1KB
高速缓存,即L2缓存:
由硬件控制高速缓存的存取,放置在cpu内部或者非常接近cpu的高速缓存.
用来存放经常使用的内存字。L1与L2的差别在于对cpu对L1的访问无时间延迟,而对L2的访问则有1-2个时钟周期(即1-2ns)的延迟。
内存(随机访问存储RAM):
属于易失性存储,断电后数据全部消失
非易失性随机访问存储(ROM)::
电源切断后,内容不会丢失,用于启动计算机的引导加载模块就存放在ROM中,不可以擦除和重写
EEPROM存储器:
电源切断后,内容不会丢失,可以擦除和重写,重写花费的时间比写入RAM多
闪存(flash mmemory):
通常作为存储媒介,可以擦除和重写,在速度上介于RAM和磁盘之间
CMOS存储器:
数据易失性,用于保持当前时间和日期+保存配置的参数,由电池进行供电
四、 磁盘
一连串的2进制位(称为bit位),8个bit称为1个字节bytes,1024bytes=1k,1024k=1M。
数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间。
平均寻道时间:
机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间
平均延迟时间:
机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下
虚拟内存:
将暂时不需要执行的程序放到磁盘的某块地方,称为虚拟内存。
在linux中称为swap,机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,成为存储器管理单元
上下文切换:
从一个程序切换到另外一个程序
五、总线
多总线模式处理I/O设备及cpu到存储器的速度都更快。
北桥即PCI桥:连接高速设备。南桥即ISA桥:连接慢速设备
六、计算机启动
BIOS就相当于一个小的操作系统,程序存放于一非易失性闪存RAM中。
启动流程:
1.计算机加电
2.BIOS开始运行,检测硬件:cpu、内存、硬盘等
3.BIOS读取CMOS存储器中的参数,选择启动设备
4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)
5.根据分区信息读入bootloader启动装载模块,启动操作系统
6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,
如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。
然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI