Skip to content

计算机系统

更新: 4/10/2025   字数: 0 字   时长: 0 分钟

计算机组成(⭐)

处理器体系结构

冯·诺依曼结构【普林斯顿结构】

程序指令与数据存储器合并在一起,指令和数据都通过相同的数据总线传输。一般用于PC处理器,如i3、i5、i7处理器。

提示

平常使用的计算机属于冯·诺依曼结构。

哈佛结构

程序指令与数据分开存储,可以并行读取有较高的数据吞吐率。一般用于嵌入式系统处理器。

有4条总线:指令的数据总线和地址总线;数据的数据总线和地址总线。

提示

DSP属于哈佛结构。

存储系统

局部性原理

  • 时间局部性:指程序中的某条指令一旦执行,不久后该指令可能再次执行。典型原因是程序中存在着大量的循环操作
  • 空间局部性:指一旦程序访问了某个存储单元,不久后其附近的存储单元也会被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内。典型情况是程序顺序执行

总线

总线是一组能为多个部件分时共享的信息传输线,用来连接多个部件并为之提供信息交换通路。总线通常是半双工的

  • 挂接在总线上的多个部件智能分时向总线发送数据,但可以同时从总线接收数据。
  • 通过总线复用方式可以减少总线中信号线的数量,以较少的信号线传输更多的信息。

总线分类

  • 芯片内总线:用于集成电路芯片内部各部分的连接元件级总线。用于一块电路板内各元器件的连接。
  • 内总线:用于计算机各组成部分(CPU、内存和接口等)的连接。
  • 外总线:用于计算机与外部设备或计算机与计算机之间的连接或通信。
  • 串行总线:数据是一位一位进行传输的,在传输中每一位数据都占据一个固定的时间长度。用于长距离传输,波特率可调整,正确性依赖校验码,数据传输方式可以使用多种。
  • 并行总线:将数据字节的各位用多条数据线同时传输。用于短距离传输。
效率传输方式描述
程序控制(查询)方式分为无条件传送和程序查询方式;方法简单,硬件开销小,
但I/O能力不高,严重影响CPU利用率。
程序中断方式与程序控制方式相比,中断方式因为CPU无需等待而提高了
传输请求的响应速度。CPU与I/O传输可并行
DMA方式为了主存与外设之间实现高速、批量数据交换而设置的。
CPU与I/O传输可并行
通道方式
I/O处理机

计算机语言

CISC和RISC

复杂指令集【CISC】精简指令集【RISC】
指令数量多,使用频率差别大,可变长格式数量少,使用频率接近,定长格式;
大部分为单周期指令,操作寄存器,
只有Load/Store操作内存
寻址方式
实现方式微程序控制技术(微码)增加了通用寄存器;硬布线逻辑控制为主;
适合采用流水线
其它研制周期长优化编译,有效支持高级语言
代表Inter、AMD的x86平台CPUARM和Power

操作系统(⭐⭐⭐⭐)

  • 人机之间的接口
  • 应用软件与硬件之间的接口
  • 控制程序运行
  • 管理系统的硬件、软件、数据资源
  • 为应用程序的开发和运行提供一个高效率的平台
  • 进程管理、内存管理、文件管理
操作系统分类描述
批处理单道批:一次一个作业入内存,作业由程序、数据、作业说明书组成。
多道批:一次多个作业入内存。宏观上并行,微观上串行。提高CPU和外部设备利用率
分时采用时间片轮转的方式为多个用户提供服务,每个用户感觉独占系统
特点:多路性、独立性、交互性和及时性。
实时实时控制系统和实时信息系统。
交互能力要求不高,可靠性要求高(规定时间内响应并处理
网络方便有效共享网络资源,提供服务软件和有关协议的集合
主要有:Unix、Linux和Windows Server系统
分布式任意两台计算机可以通过通信交换信息,是网络OS的更高级形式,
具有透明性、可靠性和高性能等特性
微机Windows:微软开发的图形用户界面、多任务、多线程操作系统
Linux:免费使用和自由传播的类Unix操作系统,多用户、多任务、多线程和多CPU
嵌入式运行在智能芯片环境中,特点:微型化、可定制(针对硬件变化配置)、实时性、
可靠性、易移植性(HAL和BSP支持)

进程管理

进程是程序在一个数据集合上运行的过程,是系统进行资源分配的基本单位,拥有独立的地址空间。它由程序块、进程控制块PCB和数据块三部分组成。

PCB是进程存在的唯一标志,包含进程标识符、状态、位置信息、控制信息、队列指针(链接同一状态的进程)、优先级、现场保护区等。

线程

线程是处理器调度和执行的基本单位。分为用户线程和内核线程。

进程状态

  • 就绪态:进程获得了除CPU外的一切所需资源,一旦分配到CPU即可运行。
  • 运行态:进程占用CPU正在运行的状态。
  • 阻塞态【等待态】:一个进程正在等待某一事件发生(例如I/O请求)而暂时停止运行,此时即使把CPU分配给进程也无法运行。

进程调度

同步与互斥

  • 临界资源:一次仅允许一个进程(线程)使用的共享资源。每个进程中访问临界资源的那段代码成为临界区。
  • 互斥(间接制约关系):如千军万马过独木桥。
  • 同步(直接制约关系):速度有差异,在一定情况下相互等待。
信号量

信号量是一种特殊的变量(全局变量)。

  • 可以表示资源数量,为0表示所有资源都在使用中,申请资源的进程会阻塞直到信号量大于0。
  • 为负数时可以表示排队进程数量。

PV操作(操作系统原语):

  • P操作:信号量-1,申请资源
  • V操作:信号量+1,释放资源

前驱图

前驱图用于描述进程之间执行的先后顺序。

  • 1个箭头表示1个前驱关系。如上图进程P1指向P2,则记录一个前驱关系为 (P1, P2)。
  • 没有前驱进程的节点是起始进程,没有后继进程的节点是终结进程。如上图P1是起始进程,P4是终结进程。

资源分配图

  • 资源R指向进程P表示分配资源;P指向R表示申请资源。
  • 先分配资源,后申请资源

上图中,P1和P2阻塞,P3非阻塞。

死锁

死锁成立的四大条件:

  • 互斥
  • 占用并等待
  • 非抢占
  • 循环等待

提示

不可能死锁条件:系统资源数 >= 进程数 * (进程所需资源数 - 1) + 1

如何预防死锁?答:打破死锁成立的四大条件。

如何避免死锁?答:银行家算法。

银行家算法

分配资源的原则:

  1. 当一个进程对资源的最大需求量不超过系统中的资源数时,可以接纳该进程。
  2. 进程可以分期请求资源,但请求的总数不能超过最大需求量。
  3. 当系统现有的资源不能满足进程尚需的资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。

内存管理

为什么要有虚拟内存管理?

  • 解决物理内存产生的碎片问题。
  • 缓解物理内存不足的问题,充分利用系统资源。

分段式

每个程序在编译时会被分成几个段:如代码区、堆区、栈区、全局变量区等。根据这些区(段)来分配内存。每个段使用自己单独的虚拟地址空间 ,且段内的内存空间可以动态增加或减少。

优点:多道程序共享内存,各段程序修改互不影响。

缺点:内存利用率低,很容易产生内存外部碎片,导致没有足够连续的内存运行新的进程,需要进行内存交换(swap),由于硬盘速度比内存慢很多,如果交换的内存空间比较大,将严重影响系统性能。

练习:下图中段地址(0, 25K)和(0, 35K)是否合法?

点击查看答案

(0, 25K)合法;(0, 35K)非法。

(段号, 段长),段号为0的段长为30K,基址为40K,即内存空间范围是40K~70K,25K+40K=65K<70K,没有越界,是合法的;而35K+40K=75K>70K,越界了,非法。

分页式

将物理内存(帧)和逻辑内存(页)都分为同样大小的块(Linux中,1块=4KB), 由MMU进行逻辑内存和物理内存的转换管理。相比于分段式,其划分的粒度更小。

提示

高级程序语言编程使用的是逻辑地址,实际程序运行时内存中使用的是物理地址。

  • 逻辑地址 = 页号 + 页内地址
  • 物理地址 = 页帧号 + 页内地址

优点:利用率高,碎片小,分配和管理简单

缺点:增加了系统开销;可能产生抖动现象

4KB的页可表示0-4095,二进制为12个1,所以12位是页内地址,多余的高位表示页号/页帧号。如:

逻辑地址2CDE,010 1100 1101 1110,高2位10即表示页号2,假设页号2对应的页帧号为6,则

物理地址6CDE,110 1100 1101 1110

淘汰原则(按下面的顺序考虑):

  1. 状态位必须为1
  2. 访问位为0
  3. 修改位为0

段页式

分段式和分页式的综合体。先分段,再分页。程序的地址空间划分成多个拥有独立地址空间的段,每个段上的地址空间划分成大小相同的页。

优点:空间浪费小,存储共享容易,存储保护容易。

缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内存也有所增加,使得执行速度大大降低。

页面置换算法(扩展知识)

  • 最佳页面置换算法【OPT】:置换未来最长时间不访问的页面。由于未来难以估算,这只是理想中的最优算法,可以用来对比其他算法的优化程序。

  • 先进先出置换算法【FIFO】:即对内存中驻留时间最长的页面进行置换。

  • 最近最久未使用【LRU】:需要维护一个链表维护所有的页面,开销较大,实际应用比较少。

  • 时钟页面置换算法【CLOCK】:将所有页面保存在一个环形链表中。

  • 最不常用页面置换算法【LFU】:对每个页面加入一个计数器,每次访问该页面计数器就+1,淘汰计数值最小的。

    缺点:加入计数器的硬件成本较高;只考虑了频率问题,没考虑时间问题,可能由于某个页面在之前访问频率高而导致计数值很大,即使未来不用了也不能被置换出去(可以周期性将值除以2)。

文件管理

磁盘管理

读取磁盘数据的时间应该包括三部分:

  1. 寻道时间:磁头移动到磁道所需要的时间。
  2. 等待时间【旋转延迟时间】:磁头到达指定磁道后要等待磁盘旋转到指定的扇区所需的时间。
  3. 传输时间
磁盘调度算法
算法特点描述
先来先服务【FCFS】顺序按请求磁道号的顺序移动
最短寻道时间有限【SSTF】贪心按距离当前磁道号距离最短的磁道移动
扫描算法【SCAN】单向像电梯一样先沿着一个方向处理完所有请求,然后反向处理
循环扫描算法【CSCAN】双向SCAN是处理完一个方向的所有请求后就反向,
CSCAN是沿着此方向移动到磁盘的末端才反向。

SCAN和CSCAN举例:楼层有30层,SCAN算法就是电梯从15层向下移动,可能到第3层就已经处理了向下方向的所有请求,此时电梯就会在第3层反向处理上升的请求。而CSCAN是不管向下还有没有请求,必须向下移动到第1层(磁盘末端)才会反向。

文件系统

索引文件
位示图

系统性能(⭐)

性能指标

硬件性能指标

分类主要指标
计算机时钟频率(主频)、数据处理速率PDR、吞吐率
路由器端口吞吐量、丢包率、时延、时延抖动
交换机支持协议和标准、最大ATM端口数
网络吞吐量;设备级、网络级、应用级、用户级性能指标

主频:即每秒有多少个CPU时钟周期T。==1T

CPI(Clock Per Instruction): 平均每条指令的平均时钟周期个数

IPC(Instruction Per Clock):每个时钟周期内运行的指令条数

IPC=1CPI

MIPS(Million Instruction Per Second):每秒多少百万条指令,适合衡量标量处理机的性能。

MIPS=106=CPI=IPC

MFLOPS(Million Float-point Operations Per Second):每秒多少百万个浮点操作,适合衡量向量处理机的性能。

MFLOPS=106

此外,MIPS和MFLOPS通常是峰值性能。

软件性能指标

分类主要指标
操作系统吞吐率(量)、响应时间、资源利用率、可靠性
数据库最大并发事务处理能力、负载均衡能力、最大连接数
Web服务器最大并发连接数、响应延迟、吞吐量

性能调整

当系统性能降到最基本的水平时,性能调整由查找消除瓶颈组成。

  • 数据库系统:性能调整主要包括CPU/内存使用情况、优化数据库设计、优化数据库管理以及进程/线程状态、硬盘剩余空间、日志文件大小等。
  • 应用系统:性能调整主要包括可用性、响应时间、并发用户数以及特定应用的系统资源占用情况等。

阿姆达尔解决方案

对系统中某组件采用某种更快的执行方式,所获得的系统性能的改变程度,取决于该组件被使用的频率,或所占总执行时间的比例。加速比计算公式如下:

R=TpTi=1(1Fe)+Fe/Se

其中,Tp表示不改进组件时完成整个任务的时间,Ti表示改进组件后完成整个任务的时间;Fe表示改进组件在原有系统上占总执行时间的比例,总小于1;Se表示改进组件的提升倍数,这个值等于在原来的条件下系统的执行时间与使用改进组件后系统的执行时间之比,它总大于1。

性能评估方法

方法描述评估维度
时钟频率法以时钟频率的高低来衡量速度CPU
指令执行速度法用加法指令的MIPS来衡量机器运算速度CPU
等效指令速度法
【吉普森混合法】
通过各类指令在程序中所占比例进行计算所得。CPU和指令比例不同问题
数据处理速率法【PDR】衡量机器性能:值越大,机器性能越好CPU和存储
综合理论性能法【CTP】使用MTOPS(每秒百万次理论计算)表示。
首先算出处理部件每个计算单元的有效计算率,
再按不同字节加以调整,得出该计算单元的理论性能,
所有组成该部件的计算单元的理论性能之和即为CTP。
CPU和存储
基准程序法把程序中用得最多、最频繁的核心代码作为评价标准,是目前一致承认测试系统性能的较好方法。综合考虑多部分

测试精确度排名:真实程序 > 核心程序 > 小型基准程序 > 合成基准程序

Web服务器的性能评测方法

  • 基准性能测试
  • 压力测试
  • 可靠性测试

系统监视的常见方式

  • 通过系统本身提供的命令。如:Unix/Linux系统中的ps、top等。
  • 通过系统记录文件查询系统在特定时间内的运行状态。
  • 集成命令、文件记录和可视化技术的监控工具。如:Windows的Perfmon应用程序。
本站访客数 人次 本站总访问量