系统设计架构师学习笔记


一、计算机硬件

1.1 校验码

  • 码距

单个编码 A:00,其码距为1,只需要改变一位就能变成另一个编码
两个编码,从A码转换为B码所需要改变的位数称为码距,如 A:00 要转换为 B:11,码距为2
一般来说,码距越大,越利于纠错和检错

1.1.1 奇偶校验码

在编码中增加1位校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变为2。
奇校验可以检测编码中奇数个数据位出错,即当合法编码中奇数位发生错误时,即编码中的1变成0或者0变成1,则该编码中1的个数的奇偶性就发生了变化,从而检查出错误,但无法纠错。

1.1.2 循环冗余校验码 CRC

CRC只能检错不能纠错,其原理是找到一个能整除多项式的编码,因此首先要将原始报文除以多项式,将所得余数作为校验位加在原始报文之后,作为发送数据给接收方。

使用CRC编码,需要先约定一个生成多项式G(x)。生成多项式的最高位和最低位必须是1,假设原始信息有m位,则对应多项式M(x)。生成校验码思想就是在原始信息位后追加若干校验位,
使得追加的信息能被G(x)整除。接收方接收到带校验位的信息,然后用G(x)整除,余数为0,则没有错误,反之则发生错误。

例:假设原始信息为 10110,CRC的生成多项式为 G(x)=x^4+x+1,求CRC校验码

(1) 在原始信息后面添0,假设生成多项式的阶为r,则在原始信息后面添加r个0;本题中G(x)的阶为4,则在 10110 后加4个0,得到新的 101100000,作为被除数

(2) 由多项式得到除数,多项式中x的冥指数存在的位置为1,不存在的位置为0;本题中,x的冥指数为0 1 4的变量都存在,2 3不存在,因此得到除数 10011

(3) 生成CRC校验码,模2除法运算(即不进位也不借位),也就是异或运算(相同为0 不同为1),得到余数 1111,如果余数不足r,则余数左边用0补齐

(4) 生成最终发送信息,将余数添加到原始信息后发送,10110 1111

(5) 接收方校验,除G(x) 余数为0,则表示数据无误

1.2 计算机硬件和指令

计算机硬件

计算机的硬件基本系统:运算器、控制器、存储器、输入设备、输出设备,其中运算器和控制器合并称为中央处理器单元,即CPU;存储器分内部存储器(内存,容量小,速度快,临时存放数据);
外部存储器(硬盘、光盘等,容量大,速度慢,长期保存数据);输入设备和输出设备合并称为外设

鼠标键盘等输入设备都是通过中断的原理来实现控制,点击后触发中断,首先进入中断处理程序

主机:CPU、主存储器
CPU:由运算器、控制器、寄存器、内部总线组成,实现程序控制、操作控制、时间控制、数据处理
运算器:由算术逻辑单元ALU(实现对数据的算术和逻辑运算)、累加寄存器AC(运算结果或源操作数存放区)、数据缓冲寄存器DR(暂时存放内存的指令或者数据)、状态条件寄存器PSW(保存指令运行结果的条码内容,如溢出标志)组成,执行所有的算术运算和逻辑运算
控制器:由指令寄存器IR(暂存CPU执行指令)、程序计数器PC(存放指令执行地址)、地址寄存器AR(保存当前CPU所访问的内存地址)、指令编译器ID(分析指令操作码)等组成

CPU依据指令周期的不同阶段来区分二进制的指令和数据,因为在指令周期的不同阶段,指令会命令CPU分别去取指令或者数据

计算机指令

  • 计算机指令的组成

一条指令由操作码和操作数两部分组成,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。操作要求和操作数地址都由二进制表示,分别称为操作码和地址码,整条指令以二进制编码的形式存放再存储器中。

  • 计算机指令执行过程

取指令-分析指令-执行指令

首先将程序计数器PC中的指令地址取出,送入地址总线,CPU依据指令地址去内存中取出指令内容存入指令寄存器IR,后面由指令译码器进行分析,分析指令操作码;最后执行指令,取出指令所需的源操作数

  • 指令寻址方式

顺序寻址方式:由于指令地址在主存中顺序排列,当执行一段程序时,通常是一条指令接着一条指令地顺序执行。从存储器取出第一条 执行,取出第二条 执行。。。

跳跃寻址方式:下一条指令的地址码不是由程序计算器给出,而是由本条指令直接给出。程序跳跃后,按新的指令地址开始顺序执行,因此,指令计数器的内容也必须响应改变,以便跟踪新的指令地址

  • 指令操作数寻址方式

立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身

直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址,实际内存地址‌,CPU通过该地址直接访问数据

间接寻址方式:指令地址码指向的不是操作数本身,而是操作数的地址,指向另一个存储单元或寄存器‌,该单元存储的是操作数的实际地址

寄存器寻址方式:指令中的地址码是寄存器编号,而不是操作数地址或操作数本身

基址寻址方式:将基址寄存器的内容加上指令中的形式地址而形成操作数的有效地址,优点是扩大寻址能力

变址寻址方式:将变址寄存器的内容加上指令中的形式地址而形成操作数的有效地址

相对寻址方式:相对于当前指令地址而言的寻址,把程序计数器PC的内容加上指令的形式地址而形成的操作数有效地址

1.3 指令系统 CISC 和 RISC

CISC是复杂指令系统,兼容性强,指令繁多、长度可变,由微程序实现

RISC是精简指令系统,指令少,使用频率接近,主要靠硬件实现(通用寄存器、硬布线逻辑控制)

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

1.4 指令的流水处理

1.4.1 流水线原理

将指令分成不同阶段,每段由不同的部分去处理,因此可以产生叠加效果,所有的部件去处理指令的不同阶段

取址-分析-执行

RISC中的流水线技术

  • 超流水线

    在每个机器周期内能完成一个甚至两个浮点数操作,以时间换空间

  • 超标量

    内装多条流水线同时执行多个处理,以空间换时间

  • 超长指令字VLIW

    同时执行多条指令,发挥软件作用

1.4.2 流水线时间计算

  • 流水线周期

    指令分不同执行阶段,其中执行时间最长的段为流水线周期

  • 流水线执行时间

    1条指令总执行时间 + (总指令条数-1) * 流水线周期

  • 单缓冲区和双缓冲区

    区分出流水线阶段,能够同时执行的阶段就是流水线的独立执行阶段,只能独立执行的阶段应该合并为流水线中的一个独立执行阶段
    例如有3个阶段 读入缓冲区+送入用户区+数据处理,在单缓冲区中,缓冲区和用户区都只有一个,一块盘必须执行完前两个阶段,下一盘块才能开始,因此前两个阶段应该合并,整个流水线为 送入用户区+数据处理
    在双缓冲区中,盘块可以交替读入缓冲区,但用户区只有一个,因为缓冲区阶段可以同时进行,流水线前两个阶段不能合并,就是读入缓冲区+送入用户区+数据处理

  • 流水线吞吐率

    即单位时间内执行的指令条数,公式:指令条数/流水线执行时间

  • 流水线加速比

    使用流水线后比不使用流水线快的倍数,公式:不使用流水线执行时间/使用流水线执行时间

1.5 存储系统

1.5.1 计算机存储结构层次图

计算机采用分级存储体系的主要目的是为了解决存储容量、成本、和速度之间的矛盾问题

  • 两级存储映像:cache-主存、主存-辅存

  • 存储器分类

按存储器所在位置:内存、外存

按存储器构成材料:磁存储器(磁带)、半导体存储器、光存储器(光盘)

按存储器的工作方式:可读可写存储器(RAM)、只读存储器(ROM只能读,PROM可写入一次,EPROM和EEPROM既可读也可写,只是修改方式不同,EPROM需紫外线照射15-20分钟擦除数据,封装顶部设有透明石英窗口‌;
EEPROM‌:通过电信号直接擦除,无需物理窗口,支持字节级操作‌)

按存储器访问方式:按地址访问、按内容访问(相联存储器)

按询址方式:随机存储器(访问任意存储单元时间相同)、顺序存储器(只能按顺序访问,如磁带)、直接存储器(二者结合,如磁盘,对于磁道寻址随机,在一个磁道内事顺序)

1.5.2 局部性原理

在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内(如循环操作,循环体被反复执行)

  • 时间局部性原理

    如果一个数据正在被访问,那么近期它可能会被再次访问,即在相邻的时间里会访问同一个数据项

  • 空间局部性原理

    在最近的将来会用到的地址和现在正在访问的数据地址很可能是相近的,即相邻的空间地址会被连续访问

1.5.3 高速缓存 Cache

用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,容量最小,速度为内存的5-10倍,由半导体材料构成。其内容是主存的副本拷贝,对于程序员来说是透明的

Cache由控制部分和存储器组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定算法从主存中替换

  • 地址映射方法

CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读写信息。这就需要将主存地址转换为Cache存储器地址,这种地址转换称为地址映射,由硬件自动完成,分为下面三种方法

直接映射:将Cache存储器分成块,主存也分成块并编号,主存中的块和Cache中的块对应关系是固定的,二者块号相同才能命中,地址变换简单但不灵活,容易造成资源浪费

全相联映射:等分成块并编号,主存中任意一块都与Cache中任意一块对应,因此可以随意调入Cache任意位置,但地址变换复杂,速度慢。因为主存可以随意调入Cache任意块,只有当Cache满了才会发送冲突

组组相联映射:前面两种方式的结合,将Cache存储器先分快再分组,主存也先分块再分组,组间采用直接映射,组内全相联映射

  • 命中率与平均时间

设读取一次Cache的时间为1ns,若CPU访问的数据不在Cache中,则需要从内存中读取,设读取一次内存的时间为 1000ns,若CPU多次读取过程中,有90%命中Cache
则CPU读取一次的平均时间为 (90% * 1 + 10% *1000)ns

1.5.4 虚拟存储器

虚拟存储器技术是将很大的数据分成许多较小的块,全部存储在外存中。运行时,将用到的数据调入主存中,马上要用到的数据置于缓存中,虚拟存储器中程序员无需映射关系,有系统自动完成,因此对于程序员来说是透明的

1.5.5 磁盘

  • 磁盘结构和参数

磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存在一个个扇区中

磁头首先要寻找到对应的磁道,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能读取到对应的数据,因此,会产生寻道时间和等待时间。公式为
存取时间=寻道时间+等待时间

  • 磁盘调度算法

先来先服务FCFS:根据进程请求访问磁盘的先后顺序进行调度

最短寻道时间优先SSTF:请求访问的磁道与当前磁带最近的进程优先调度,使得每次的寻道时间最短,会产生“饥饿”现象,即远处进程可能永远无法访问

扫描算法SCAN:又称“电梯算法”,磁头在磁盘上双向移动,其会选择磁头当前所在磁道最近的请求访问的磁道,并且与磁头移动方向一致,磁头永远都是从里向外或者从外向里一直移动到完才掉头,与电梯类似

单向扫描算法CSCAN:与SCAN不同的是,其只做单向移动,只能从里向外或者从外向里

1.6 输入输出技术

计算机系统中存在多种内存与接口地址的编址方法,常见的有下面两种:

  • 内存与接口地址独立编址方法

内存地址和接口地址是完全独立的两地址空间,它们是完全独立并且相互隔离的。访问数据时所用的指令也完全不同,用于接口的指令只用于接口的读写,其余的全部都是用于内存的
因此,在编程或读程序时很容易辨认,这种编址方法的缺点是用于接口的指令太少、功能太弱

  • 内存与接口统一编址方法

内存地址和接口地址统一在公共的地址空间,这些地址空间划出一部分地址分配给接口使用,其余地址归内存单元使用,这种编址的优点是原则上用于内存的指令全部都可以用于接口,
大大增强了对接口的操作功能,而且在指令上也不区分内存或者接口指令。
该编址方法的缺点是经常会导致内存地址不连续

程序控制(查询)方式:CPU主动查询外设是否完成数据传输,效率极低

程序中断方式:外设完成数据传输后,向CPU发送中断,等待CPU处理数据,效率相对较高

中断响应时间指从发出中断请求到开始进入中断处理程序
中断处理时间指从中断处理开始到中断处理结束
中断向量提供中断服务程序的入口地址
多级中断嵌套,使用堆栈来保护断点和现场

DMA方式(直接主存存取):CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA控制器来完成,在主存和外设之间建立直接的数据通道,效率很高
在一个总线周期结束后,CPU会响应DMA请求开始读取数据;CPU响应程序中断方式的请求是在一条指令执行结束时,区分指令执行结束和总线周期结束

1.7 总线

从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:

内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线

系统总线:是板级总线,用于计算机各部分之间的连接,具体分为数据总线(并行数据传输位数)、地址总线(系统可管理的内存空间的大小)、控制总线(传送控制指令)
代表的有ISA总线、EISA总线、PCI总线

外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总线)、USB(通用串行总线,即插即用,支持热拔插)

并行总线适合近距离高速数据传输,串行总线适合长距离数据传输

总线计算:总线的时钟周期=时钟频率的倒数;总线的宽度(传输速率)=单位时间内传输的数据总量/单位时间大小

二、操作系统知识

2.1 操作系统概述

操作系统定义:能有效地组织和管理系统中的各种软/硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口

操作系统有三个重要的作用:
第一,管理计算机中运行的程序和分配各种软件硬件资源
第二,为用户提供友善的人机界面
第三,为应用程序的开发和运行提供一个高效率的平台

操作系统的4个特征:并发性、共享性、虚拟性、不确定性

2.1.1 操作系统功能概述

  • 进程管理

    实质上是对处理机的执行“时间”进行管理,采用多道程序等技术将CPU的时间合理分配各每个任务,主要包括进程控制、进程同步、进程通信和进程调度

  • 文件管理

    主要包括文件存储空间管理、目录管理、文件的读写管理和存取控制

  • 存储管理

    对主存储器“空间”进行管理,主要包括存储分配与回收、存储保护、地址映射(变换)和主存扩充

  • 设备管理

    对硬件设备的管理,包括输入输出设备的分配、启动、完成和回收

  • 作业管理

    包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实

2.1.2 操作系统分类

  • 批处理操作系统

    单道批处理和多道批处理(主机与外设可并行)

  • 分时操作系统

    一个计算机系统与多个终端设备连接。分时操作系统是将CPU的工作时间划分为许多很短的时间片,轮流为各个终端的用户服务

  • 实时操作系统

    实时是指计算机对外来信息能够以足够快的速度进行处理,并在被控制对象允许的时间范围内做出快速反应。实时系统对交互能力要求不高,但要求可靠性有保障
    为了提供系统的响应时间,对随机发生的外部事件应及时做出响应并对其进行处理

  • 网络操作系统

    是使互联网计算机分方便而有效的共享网络资源,为网络用户提供各种服务的软件和有关协议的集合。功能主要包括高效、可靠的网络通信;对网络中共享资源的有效管理;
    提供电子邮件、文件传输、共享硬盘和打印等服务;网络安全管理;提供互操作能力。三种模式:集中模式、客户端/服务器模式、对等模式

  • 分布式操作系统

    分布式计算机系统是由多个分散的计算机连接而成的计算机系统,系统中的计算机无主、次之分,任意两台计算机可以通过通信交换信息。
    通常,为分布式计算机系统配置的操作系统称为分布式操作系统,是网络操作系统的更高级模式

  • 微型计算机操作系统

    简称微机操作系统,常用的有Windows、Mac OS、Linux

  • 嵌入式操作系统

    运行在嵌入式智能芯片环境中,对整个智能芯片以及它所操作、控制的各种部件装置等资源进行统一协调、处理、指挥和控制。

嵌入式操作系统的特点

(1)微型化
从性能和成本考虑,希望占用的资源和系统代码量少,如内存少,字长短、运动速度有限、能源少(用微小型电池)

(2)可定制
从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用需要

(3)实时性
嵌入式操作系统主要应用于过程控制、数据采集、传输通信、多媒体信息及关键要害领域需要迅速响应的场合,所以对实时性要求高

(4)可靠性
系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施

(5)易移植性
为了提高系统的易移植性,通常采用硬件抽象层(HAL,Hardware Abstract Level)和板级支撑包(BSP,Board Support Package)的底层设计技术

嵌入式系统的初始化过程按照自底向上、从硬件到软件的次序依次为:片级初始化-》板级初始化-》系统初始化。芯片级是微处理器的初始化,板卡级是其它硬件设备初始化,
系统级初始化就是软件及操作系统的初始化

  • 微内核操作系统

    就是尽可能将内核做的很小,只将最为核心必要的东西放入内核中,其他能独立的东西都放入用户进程中,这样,系统就被分为了用户态和内核态

2.2 进程管理

2.2.1 进程的组成和状态

进程的组成:进程控制块PCB(唯一标志)、程序(描述程序要做什么)、数据(存放进程执行时的所需数据)

进程基础状态转换图:

新建态对应进程刚刚被创建时没有被提交的状态,并等待系统完成创建进程的所有必要信息。
终止态等待操作系统进行善后处理,释放主存

2.2.2 前趋图和进程资源图

  • 前趋图
    用来表示哪些任务可以并行执行,哪些任务之间有顺序关系

可知,ABC可以并行执行,但是必须ABC都执行完成后,才能执行D,这就确定了两点:任务间的并行、任务间的先后顺序

  • 资源进程图

用来表示进程和资源直接的分配和请求关系

P代表进程,R代表资源,R方框里面有几个圆球就表示有几个这种资源,在上图中,R1指向P1,表示R1有一个资源已经分配给了P1,P1指向R2,表示P1还需要请求一个R2资源才能执行。

阻塞节点:某进程所请求的资源已经全部分配完毕,无法获取所需资源,该进程被阻塞了无法继续,如上图P2

非阻塞节点:某进程所请求的资源还有剩余,可以分配给该进程继续执行,如上图P1、P3

当一个进程资源图中所有进程都是阻塞节点时,即限入死锁状态

进程资源图的简化方法:先看系统还剩下多少资源没有分配,再看有哪些进程是不阻塞的,接着把不阻塞的进程的所有边都去掉,形成孤立的点,
再把系统分配给这个进程的资源回收回来,这样系统剩余的空闲资源便多了起来,接着又去看看剩下的进程有哪些是不阻塞的,然后又把它们逐个变成孤立的点,
最后,所有的资源和进程都变成孤立的点

2.2.3 进程间的同步和互斥

互斥和同步并非反义词,互斥表示一个资源在同一时间只能有一个任务单独使用,需要加锁,使用完后解锁才能被其它任务使用;
同步表示两个任务可以同时执行,只不过有速度上的差异,需要速度上匹配,不存在资源是否单独或共享的问题

2.2.4 信号量操作

  • 基本概念

临界资源:各个进程间需要互斥方式对其进行共享的资源,即在某一时刻只能被一个进程使用,该进程释放后又可以被其它进程使用
临界区:每个进程中访问临界资源的那段代码
信号量:是一种特殊的变量

  • 两类信号量

互斥信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初始值为1
同步信号量:对共享资源的访问控制,初始值是共享资源的个数

  • P操作和V操作

都是原子操作,用来解释进程的同步和互斥原理

例如在生产者和消费者的问题中,生产者生产一个商品S,而后要申请互斥的使用该仓库,即首先需要执行互斥信号量P(S0),申请到仓库独立使用权后,再判断仓库是否有空闲(信号量S1),
执行P(S1),若结果大于等于0,表示仓库有空闲,再将S放入仓库中,此时仓库商品数量(信号量S2)增加1,即执行V(S2)操作,使用完毕后,释放互斥信号量V(S0)

对于消费者,首先也需要执行互斥信号量P(S0),申请到仓库独立使用权后,再判断仓库中是否有商品,执行P(S2),若结果大于0,表示有商品,可以取出,此时造成了一个结果,
即仓库空闲了一个,执行V(S1)操作,使用完毕后,释放互斥信号量V(S0)

因此,执行P操作是主动的带有判断性质的-1,执行V操作是被动的因为某操作产生的+1

2.2.5 进程调度

进程调度方式是指当有更高优先级的进程到来时如何分配CPU。分为可剥夺和不可剥夺两种,可剥夺指当有更高优先级进程到来时,强行将正在进行进程的CPU分配给高优先级进程;
不可剥夺是指高优先级进程必须等待当前进程自动释放CPU

在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度

  1. 高级调度
    又称“长调度” “作业调度” 或“接纳调度”,它决定处于输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程,在系统中一个作业只需要经过一次高级调度
  2. 中级调度
    又称“中程调度”或“对换调度”,它决定处于交换区中的哪个就绪进程可以调入内存,以便直接参与对CPU的竞争
  3. 低级调度
    又称“短程调度”或“进程调度”,它决定处于内存中的哪个就绪进程可以占用CPU,低级调度是操作系统中最活跃、最重要的调度程序,对系统的影响很大
调度算法
  • 先来先服务FCFS
    先到达的进程优先分配CPU,用于宏观调度
  • 时间片轮转
    分配给每个进程CPU时间片,轮流使用CPU,每个进程的时间片大小相同,很公平,用于微观调度
  • 优先级调度
    每个进程都拥有一个优先级,优先级大的先分配CPU
  • 多级反馈调度
    时间片轮转和优先级调度结合而成,设置多个就绪队列 1,2,3…n 每个队列分别赋予不同的优先级,分配不同的时间片长度;新的进程先进入队列1的末尾,
    按FCFS原则,执行队列1的时间片;若未能执行完,则转入队列2的末尾,如此重复

2.2.6 死锁问题

当一个进程在等待永远不可能发生的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁

死锁产生的四个必要条件:资源互斥、每个进程占有资源并等待其他资源、系统不能剥夺进程资源、进程资源图是一个环路

死锁产生后,解决措施是打破四大条件,有下列方法:

  • 死锁预防
    采用某种策略限制并发进程对于资源的请求,破坏死锁产生的条件之一,使系统任何时刻都不满足死锁的条件
  • 死锁避免
    一般采用银行家算法来避免,银行家算法,就是提前计算出一条不会死锁的资源分配方法,才分配资源,否则不分配资源,相当于借贷,考虑对方还得起才借钱,提前考虑好以后,就可以避免死锁
  • 死锁检测
    允许死锁产生,但系统定时运行一个检测死锁的程序,若检测到系统中发生死锁,则设法加以解除
  • 死锁解除
    即死锁发生后的解除方法,如强制剥夺资源,撤销进程等
  • 死锁资源计算
    系统内有n个进程,每个进程都需要R个资源,那么其发生死锁的最大资源数为 n*(R-1) ,其不发生死锁的最小资源数为 n*(R-1) + 1

2.2.7 线程

传统的进程有两个属性:可拥有资源的独立单位;可独立调度和分配的基本单元

引入线程的原因是进程在创建、撤销和切换中,系统必须为之付出较大的时空开销,故在系统设置的进程数目不易过多,进程切换的频率不宜太高,这就限制了并发程度的提高。
引入线程后,将传统的进程两个基本属性分开,线程作为调度和分配的基本单元,进程作为独立分配资源的单位。用户可以通过创建线程来完成任务,以减少进程并发执行时付出的时空开销

线程是进程中的一个实体,是被系统独立分配和调度的基本单位,线程基本上不拥有资源,只拥有一点运行中必不可少的资源(如程序计数器、一组寄存器和栈),它可与同属一个进程的其他线程共享进程所拥有的全部资源,
例如进程的公共数据、全局变量、代码、文件等资源,但不能共享线程独有资源,如线程的栈指针等标识数据

2.3 存储管理

存储器结构:寄存器-高速缓存Cache-主存-外存

地址重定位:将逻辑地址转换为实际主存物理地址的过程,分为静态重定位(在程序装入主存时就完成了转换)、动态重定位(边运行边转换)

2.3.1 分区存储管理

所谓的分区存储组织就是整存,将某进程运行所需的内存整体一起分配给它,然后再执行,有三中分区方式:

  • 固定分区

    静态分区方法,将主存分为若干个固定的分区,将要运行的作业装配进去,由于分区固定,大小和作业的大小不同,会产生内部碎片

  • 可变分区

    动态分区方法,主存空间的分区是在作业转入时划分,正好划分为作业需要的大小,这样就不存在内部碎片,但容易将整片主存空间切换成许多块,会产生外部碎片

假如要分配9k空间,可变分区算法如下

首次适用法:按内存地址顺序从头查找,找到第一个 >=9k 空间的空闲块,即切割9k的空间分配给进程

最佳适应法:按内存中所有空闲的内存块从小到大排序,找到第一个 >=9k 空间的空闲块,切割分配,这个将会找到与9k空间大小最相近的空闲块

最差适应法:和最佳适应法相反,将内存中空闲块最大的,切割9k空间分配给进程,这是为了预防系统中产生过多的细小空闲块

循环首次适应法:按内存顺序查找,找到第一个>=9k空间的空闲块,而后若还需分配,则找下一个,不用每次都从头查找,这是与首次适应法不同的地方

  • 可重定位分区

    可以解决碎片问题,移动所有已分配好的区域,使其成为连续的区域,这样其他外部细小的分区碎片可以合并为大的分区,满足作业要求。只在外部作业请求空间得不到满足时进行

2.3.2 分页存储管理

如果采用分区存储,都是整存,会出现一个问题,即当进程运行所需的内存大于系统内存时,就无非将整个程序一起调入内存,因此无非运行,若要解决此问题,就要采用段页式存储,
页式存储是基于可变分区而提出的

如下图所示,逻辑页分为页号和页内地址,页内地址就是物理偏移地址,而页号与物理块号并非按序对应的,需要查询页表,才能得知页号对应的物理块号,
再用物理块号加上偏移地址才得出了真正运行时的物料地址

优点:利用率高,碎片小,分配及管理简单
缺点:增加了系统开销,可能产生抖动现象

  • 地址表示和转换

地址组成:页地址+页内偏移地址(页地址在高位,页内偏移地址在低位)
物料地址:物料块号+页内偏移地址
逻辑地址:页号+页内偏移地址

  • 页面置换算法

有时候,进程空间分为100个页面,而系统内存只有10个物料块,无法全部满足分配,就需要将马上执行的页面先分配进去,而后根据算法进行淘汰,
使100个页面能够按照执行顺序调入物理块中执行完
缺页表示需要执行的页不在内存物理块中,需要从外部调入内存,会增加执行时间,因此,缺页数越多,系统效率越低

最优算法:OPT,理论上的算法,无法实现,是在进程执行完后进行的最佳效率计算,用来让其他算法比较差距。原理是选择未来最长时间内不被访问也页面置换,这样可以保证未来执行的都是马上要访问的

先进先出算法:FIFO,先调入内存的页先被置换淘汰,会产生抖动现象,即分配的页数越多,缺页率可能越多

最近最少使用算法:LRU,在最近的过去,进程执行过程中,过去最少使用的页面被置换淘汰,根据局部性原理,这种方式效率高,且不会产生抖动现象,使用大量计数器,但是没有LFU多

淘汰原则:优先淘汰最近未访问的,而后淘汰最近未被修改的页面

  • 快表

是一块小容量的相联存储器,由快速存储器组成,按内容访问,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号
快表是将页表存于Cache中;慢表是将页表存于内存上,慢表需要访问2次内存才能取页,而快表是访问一次Cache和一次内存,因此更快

2.3.3 段式存储管理

将进程空间分为一个个段,每段也有段号和段内地址,与页式存储不同的是,每段物理大小不同,分段是根据逻辑整体分段的,因此,段表也与页表的内容不同,
页表中直接是逻辑页号对应物理块号,段表有段长和基址两个属性,才能确定一个逻辑在物料段中的位置

优点:多道程序共享内存,各段程序修改互不影响
缺点:内存利用率低,内存碎片浪费大

分页是根据物料空间划分,每页大小相同;分段是根据逻辑空间划分,每段是一个完整的功能,便于共享,但是大小不同

地址表示:(段号+段内偏移地址),其中段内偏移地址不能超过该段号对应段长,否则越界错误,而此地址对应的正真内存地址应该是:段号对应的基地址+段内偏移

2.3.4 段页式存储管理

对进程先进行分段,后分页

优点:空间浪费小、存储共享容易、存储保护容易、能动态链接
缺点:由于软件管理增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降

2.4 设备管理

2.4.1 概述

设备是计算机系统与外界交互的工具,具体负责计算机与外部输入输出工作,所以常称为外部设备(简称外设),在计算机系统中,将负责管理设备和输入输出的机构称为I/O系统。
因此,I/O系统由设备、控制器、通道、总线和I/O软件组成

  • 设备分类

按数据组织分类:块设备、字符设备
按设备功能分类:输入设备、输出设备、存储设备、网络联网设备、供电设备等
资源分配角度分类:独占设备、共享设备和虚拟设备
数据传输速率分类:低速设备、中速设备、高速设备

设备管理的任务是保证在多道程序环境下,当多个进程竞争使用设备时,按一定的策略分配和管理各种设备,控制设备的各种操作,完整I/O设备与主存之间的数据交换

设备管理的主要功能是动态的掌握并记录设备的状态、设备分配和释放、缓冲区管理、实现物理I/O设备的操作、提供设备使用的用户接口及设备的访问和控制

2.4.2 I/O软件

当用户程序试图读一个硬盘文件时,需要通过操作系统实现这一操作。与设备无关软件检查高速缓存中有无要读的数据块,若没有,则调用设备驱动程序,向I/O硬件发出一个请求。
然后,用户进程阻塞并等待磁盘操作完成。当磁盘操作完成时,硬件产生一个中断,转入中断处理程序。中断处理程序检查中断原因,认识到这时磁盘读取操作已完成,
于是唤醒用户进程取回从磁盘读取的信息,从而结束此次I/O请求,用户进程在得到了所需的硬盘文件内容后继续运行

2.4.3 虚设备和SPOOLING技术

一台实际的物理设备,例如打印机,在同一时间只能由一个进程使用,其他进程只能等待,且不知道什么时候打印机空闲,此时,极大的浪费了外设的工作效率
引入SPOOLING(外围设备联机操作)技术,就是在外设上建立两个数据缓冲区,分别为输入井和输出井,这样,无论多少进程,都可以共用这一台打印机,只需要将打印命令发出,
数据就会排队存储在缓冲区中,打印机会自动按顺序打印,实现了物理外设的共享,使得每个都感觉是在使用一个打印机,这就是物理设备的虚拟化

2.5 文件管理

2.5.1 概述

文件是具有符号名的,在逻辑上具有完整意义的一组相关信息项的集合

信息项是构成文件内容的基本单位,可以是一个字符,也可以是一个记录,记录可以等长,也可以不等长。一个文件包括文件体和文件说明,文件体是文件的真实内容,
文件说明是操作系统为了管理文件所用到的信息,包括文件名、文件内部标识、文件类型、文件存储地址、文件的长度、访问权限、建立时间和访问时间等

文件管理系统,就是操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件,简称文件系统。
文件系统的功能包括:按名存取、统一的用户接口、并发访问和控制、安全控制、优化性能、差错恢复

  • 文件类型

(1)按文件性质和用途:系统文件、库文件和用户文件
(2)按信息保存期限:临时文件、档案文件和永久文件
(3)按文件的保护方式:只读文件、读写文件、可执行文件和不保护文件
(4)UNIX系统将文件分为:普通文件、目录文件和设备文件

文件的逻辑结构可以分为两大类:一是有结构的记录式文件,它是由一个以上记录构成的文件,故又称为记录式文件;二是无结构的流式文件,它是由一串顺序字符流构成的

文件的物理结构是指文件的内部组织形式,即文件在物理存储设备上的存放方法,包括:
(1)连续结构,也称顺序结构,它是将逻辑上连续的文件信息依次存放在连续的物理块号上
(2)链接结构,也称为串联结构,它是将逻辑上连续的文件信息存放在不连续的物理块上,每个物理块设有一个指针指向下一个物理块,因此只要知道文件的第一个物理块号,就可以按链指针查找整个文件
(3)索引结构,在采用索引结构时,将逻辑上连续的文件信息(如记录)存放在不连续的物料块中,系统为每个文件建立一张索引表;索引表记录了文件信息所在的逻辑块号对应的物理块号,
并将索引表的起始地址放在与文件对应的文件目录项中
(4)多个物理块的索引表,索引表是在文件创建时由系统自动创建的,并与文件一起存放在同一文件卷上,根据一个文件的大小不同,其索引表占用物理块的个数不等

2.5.2 索引文件结构

如下图所示,系统中有13个索引节点,0-9为直接索引,即每个索引节点存放的是内容,假设每个节点物理盘大小为4KB,共可存4KB*10=40KB数据;
10号索引节点为一级间接索引节点,大小为4KB,存放的并非直接数据,而是链接到直接物理盘的块地址,假设每个地址占4B,则共有1024个地址,对应1024个物理盘,可存1024*4KB=4096KB数据
二级索引节点类似,直接盘存放一级地址,一级地址再存放物理盘块地址,而后链接到存放数据的物理盘块,容量又扩大了一个数量级,为1024*1024*4KB

2.5.3 文件目录

文件控制块中包含以下3类信息:基本信息类、存取控制信息类和使用信息类

(1)基本信息类:例如文件名、文件物理地址、文件长度、文件块数等
(2)存取控制信息类:文件存取权限,像UNIX用户分成文件主、同组用户、一般用户三类,读写执行权限RWX
(3)使用信息类:文件创建日期、最后一次修改日期、最后一次访问日期、当前使用的信息,如打开文件的进程数、在文件上等待的队列

文件控制块的有序集合称为文件目录

相对路径:从当前路径开始的路径
绝对路径:从跟目录开始的路径

全文件名=绝对路径+文件名

树形结构主要区分相对路径和绝对路径,如下图所示

2.5.4 文件存储空间管理

文件的存取方法是指读写文件存储器上的一个物理块的方法。通常有顺序读取和随机读取两种,顺序存取是指对文件中的信息按顺序依次进行读写;
随机存取是指对文件中的信息可以按任意的次序随机读写

文件存储空间管理方法:
(1)空闲区表,将外存空间上的一个连续的未分配区域称为“空闲区”,操作系统为磁盘外存上的所有空闲区建立一张空闲表,每一个表项对应一个空闲区,适用于连续文件结构

(2)位视图,在外存上建立一张位视图(Bitmap),记录文件存储器的使用情况,每一位对应文件存储器上的一个物理块,取值0 1分别表示空闲和占用

(3)空闲块链,每个空闲物理块中有指向下一个空闲物理块的指针,所有的空闲物理块构成一个链表,链表的头指针放在文件存储器的特定位置上,如管理块中,不需要磁盘分配表,节省空间。
每次申请空闲物料块,只需根据链表的头指针取出第一个空闲物理块,根据第一个空闲物理块的指针可找到第二个空闲物理块,以此类推

(4)组成链接法,在实现时系统将空闲块分成若干组,每100个空闲块为一组,每组的第一个空闲块登记了下一组空闲的物理块号和空闲块总数,假如某个组第一个空闲块号等于0,意味着该组是最后一组,无下一组空闲块

三、数据库系统

3.1 三级模式-两级映像

3.2 数据库的设计

3.3 E-R模型

3.4 关系代数运算

3.5 关系数据库的规范化

3.5.1 函数依赖

3.5.2 键和约束

3.5.3 范式

3.5.4 模式分解

3.5.5 并发控制基本概念图

3.5.6 事务管理

3.5.7 封锁协议

3.6 数据故障与备份

3.6.1 安全措施

3.6.2 数据故障

3.6.3 数据备份

3.7 分布式数据库

3.8 数据仓库与数据挖掘

3.9 反规范化技术

3.10 SQL语言

3.11 NOSQL数据库

四、嵌入式技术

4.1 嵌入式内容补充

4.2 嵌入式微处理器

4.2.1 嵌入式微处理器体系结构

4.2.2 嵌入式微处理器分类

4.2.3 多核处理器结构

4.3 嵌入式软件和操作系统

4.3.1 嵌入式软件基础

4.3.2 嵌入式操作系统

4.3.3 嵌入式实时操作系统

4.4 嵌入式软件设计

4.4.1 开发流程

4.4.2 开发工具

五、计算机网络

5.1 网络概述和模型

5.2 传输介质

5.3 通信方式和交换方式

5.4 IP地址

5.4.1 分类地址格式

5.4.2 子网划分

5.4.3 无分类编址

5.5 IPV6

5.6 网络规划和设计

5.6.1 层次化局域网模型

5.6.2 建筑物综合布线系统PDS

5.7 网络管理命令

5.8 网络存储技术

5.8.1 廉价磁盘冗余阵列

5.8.2 网络存储

5.9 其他考点汇总

六、其他计算机系统知识

6.1 计算机语言

6.2 多媒体

6.3 系统工程

七、系统配置与性能评价

7.1 性能指标

7.2 性能评价方法

7.3 阿姆达尔解决方案

八、信息系统基础知识

8.1 信息系统概述

8.2 业务处理系统 TPS

8.3 管理信息系统 MIS

8.4 决策支持系统 DSS

8.5 专家系统 ES

8.6 办公自动化系统 OAS

8.7 企业资源规划 ERP

8.8 典型信息系统架构模型

8.9 信息化战略体系

8.10 信息系统战略规划

8.11 企业信息化与电子商务

8.11.1 客户关系管理 CRM

8.11.2 供应链管理 SCM

8.11.3 企业应用集成 EAI

8.11.4 电子商务

九、系统安全

9.1 信息安全基础知识

9.2 信息安全系统的组成框架

9.3 信息安全系技术

9.4 信息安全的抗攻击技术

9.5 信息安全的保证体系与评估方法

9.6 网络安全技术

9.7 网络安全协议

十、软件工程基础知识

10.1 软件工程

10.1.1 软件过程模型

10.1.2 能力成熟度模型

10.1.3 逆向工程

10.2 需求工程

10.2.1 软件需求

10.2.2 需求获取

10.2.3 需求分析

10.2.4 需求定义

10.2.5 需求验证

10.2.6 需求管理

10.3 系统设计

10.3.1 处理流程设计

10.3.2 系统设计

10.3.3 人机界面设计

10.4 测试基础知识

10.4.1 测试基础

测试原则
  • 应尽早并不断的进行测试
  • 测试工作应该避免由原开发软件的人或小组承担
  • 在设计方案时,不仅要确定输入数据,而且要根据系统功能确定预计的输出结果
  • 既包含有效、合理的测试用例,也包含不合理、失效的用例
  • 检验程序是否做了该做的事,且是否做了不该做的事
  • 严格按照测试计划进行

10.4.2 测试阶段

10.4.3 测试用例设计

10.4.4 调试

10.5 系统运行与维护

10.5.1 系统转换

10.5.2 系统维护概述

10.6 净室软件工程

10.7 基于构件软件工程

十一、面向对象技术

11.1 面向对象基础

11.2 UML

11.2.1 事务

11.2.2 关系

11.2.3 图

11.3 设计模式

十二、项目管理

12.1 进度管理

11.2 软件配置管理

11.3 质量管理

11.4 风险管理

十三、系统架构设计

11.1 软件架构的概念

11.2 基于架构的软件开发方法

11.3 软件架构风格

11.3.1 基本架构风格

11.3.2 层次结构风格

11.3.3 面向服务的架构 SOA

11.4 软件架构的复用

11.5 特定领域软件架构 DSSA

11.6 系统质量属性与架构评估

11.6.1 软件质量属性

11.6.2 系统架构评估

11.6.3 基于场景的评估方法

11.7 中间件技术

11.7.1 典型的应用架构 J2EE

11.7.2 典型的应用架构 .NET

十四、软件可靠性基础知识

14.1 软件可靠性基本概念

14.2 软件可靠性建模

14.3 软件可靠性管理

14.4 软件可靠性设计

14.5 软件可靠性测试与评价

十五、软件架构的演化和维护

15.1 软件架构演化和定义

15.2 面向对象软件架构演化

15.3 软件架构演化的分类

15.4 软件架构演化原则

15.5 软件架构演化评估方法

15.6 大型网站系统架构演化实例

15.7 软件架构维护

十六、未来信息综合技术

16.1 信息物理系统技术

16.2 人工智能技术

16.3 机器人技术

16.4 边缘计算

16.5 数字孪生体技术

16.6 云计算和大数据技术

十七、知识产权和标准化

17.1 知识产权基础知识

17.2 标准化基础知识

十八、数学与经济管理

18.1 图论应用

18.1.1 最小生成树

18.1.2 最短路径

18.1.3 网络与最大流量

18.2 运筹方法

18.2.1 线性规划

18.2.2 动态规划

18.2.3 伏格尔法

18.2.4 博弈论

18.2.5 状态转移矩阵

18.2.6 排队论

18.2.7 决策论

18.3 数学建模


本文不允许转载。
  目录