数据库系统工程师-计算机知识

271 阅读38分钟

数据库系统工程师-计算机基础

硬件基础

CPU 的组成

CPU 由运算器、控制器、寄存器组(专用寄存器、通用寄存器)和内部总线组成。

  • 运算器:

    • 功能:

      1. 执行所有的算术运算。如加、减、乘、除等基本运算及附加运算。
      2. 执行所有的逻辑运算并进行逻辑测试。如与、非、或、零值测试或两个值的比较等。
    • 组成:

      1. 算术逻辑单元(ALU):负责处理数据,实现对数据的算术运算和逻辑运算
      2. 累加寄存器(AC):也称累加器,当算术逻辑单元 ALU 执行运算时,为其提供一个工作区
      3. 数据缓冲寄存器(DR):对内存进行读写操作时,用 DR 暂时存放由内存读写的一条指令或一个数据字。作为CPU 和内存、外设之间在操作速度上的缓冲,以及数据传送的中转站。
      4. 状态条件寄存器(PSW):保存根据算术指令和逻辑指令运行或测试的结果建立的各种条件码的内容,主要分为状态标志和控制标志。如运算结果进位标志(C)、运算结果溢出标志(V)、运算结果为0标志(Z)、运算结果为负标志(N)、中断标志(I)、方向标志(D)等。
  • 控制器:

    • 功能:决定了计算机运行过程的自动化。它不仅要保证程序的正确执行,而且要能够处理异常事件。

    • 包括:指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等几个部分。

      控制器在工作过程中主要使用以下部件:

      1. 指令寄存器(IR):用来暂时存放一条指令,由指令译码器根据指令寄存器中的内容产生各种微操作指令,控制其它部分协调工作。
      2. 程序计数器(PC):存放的是将要执行的下一条指令的地址
      3. 地址寄存器(AR):保存当前 CPU 所访问的内存单元的地址。由于内存和 CPU 存在操作速度上的差异,所以需要使用AR保存地址信息,直到内存读/写操作完成为止。
      4. 指令译码器(ID):对指令中的操作码字段进行分析解释,识别该指令规定的操作,然后向操作控制器发出具体的控制信号。
  • 寄存器组:

    1. 专用寄存器:运算器和控制器中的寄存器是专用寄存器,其作用是固定的。
    2. 通用寄存器:用途广泛并可由程序员规定其用途,其数目因处理器不同而不同。

指令:是对机器进行程序控制的最小单位。一条指令通常包括两个部份:操作码和操作数

操作码指出是什么操作,由指令译码器(ID)来识别。

操作数直接指出操作数本身或者指出操作数所在的地址。

进制转换

  1. 进制的缩写:二进制是Binary,简写为B。八进制是Octal,简写为O。十进制为Decimal,简写为D。十六进制为Hexadecimal,简写为H。

  2. 二/八/十六进制转为十进制(按权展开):

    二进制 10100.01(B) = 1×24+0×23+1×22+0×21+0×20+0×21+1×221×2^4+0×2^3+1×2^2+0×2^1+0×2^0+0×2^{-1}+1×2^{-2}

    八进制 256.3(O) = 2×82+5×81+6×80+3×812×8^2+5×8^1+6×8^0+3×8^{-1}

    十六进制 6F8A(H) = 6×163+15×162+8×161+10×1606×16^3+15×16^2+8×16^1+10×16^0

  3. 十进制转为二/八/十六进制(整除取余法):

    十进制 100 转为二进制:1100100(B)

    十进制 100 转为八进制:144(O)

    十进制 100 转为十六进制:64(H)

210=10242^{10} = 1024

存储器与总线

总线的分类:

  • 数据总线(DB):用来传送数据信息,是双向的。DB 的宽度决定了 CPU 和计算机其他设备之间每次交换数据的位数。
  • 地址总线(AB):用于传送 CPU 发出的地址信息,是单向的。地址总线的宽度决定了 CPU 的最大寻址能力。
  • 控制总线(CB):用来传送控制信号、时序信号和状态信息等。CB 中的每一条线的信息传送方向是单方向且确定的,但 CB 作为一个整体则是双向的。

输入输出技术

程序控制方式:

  1. 无条件传送:外设总是准备好的,无条件,随时接收和提供数据。
  2. 程序查询方式:CPU 利用程序来查询外设的状态,准备好了再传数据。
  3. 中断方式:CPU 不等待,也不执行程序去查询外设的状态,而是由外设在准备好以后,向 CPU 发出中断请求。 ==以上三种方式都需要 CPU 的参与==
  4. DMA 方式(直接内存存取):数据的传输是在主存和外设之间直接进行,不需要 CPU 的干预,实际操作是由 DMA 硬件直接执行完成的。采用 DMA 方式传送数据时,每传送一个数据都需要占用一个总线周期。
  5. 通道方式和外围处理机方式:更进一步减轻了 CPU 对 I/O 操作的控制,更进一步提高了 CPU 的工作效率,但是是以增加更多硬件为代价的。

流水线技术

流水线周期:各子任务中执行时间最长的(最慢的)子任务的执行时间。

流水线执行完 n 条指令所需要的时间:

Tn=执行一条指令所需时间+(n1)流水线周期T_n = 执行一条指令所需时间+(n-1)*流水线周期

吞吐率:是指单位时间里流水线处理机流出的结果数。对指令而言,就是单位时间里执行的指令数。

吞吐率:p=1/max(t1,∆t2tm)p=1/max(∆t_1,∆t_2,…∆t_m),即最长子过程所用时间的倒数,也就是流水线周期的倒数。

存储系统

存储器的分类:

  • 按存储器所处的位置:可分为内存和外存。
  • 按构成存储器的材料:可分为磁存储器、半导体存储器和光存储器。
  • 按存储器的工作方式:可分为读写存储器和只读存储器。
  • 按访问方式:可分为按地址访问的存储器和按内容访问的存储器。
  • 按寻址方式:可分为随机存储器、顺序存储器和直接存储器。

随机访问存储器:

  • 静态随机访问存储器(SRAM)
  • 动态随机访问存储器(DRAM)

虚拟存储器实际上是一种逻辑存储器,常用的虚拟存储器由主存和辅存两级存储器组成 相联存储器是一种按内容访问的存储器

高速缓存

  • Cache 是介于 CPU 与主存之间的一级存储器,其容量较小,但速度较快,一般比主存快 5~10 倍。
  • 它的主要作用是:调和 CPU 的速度与内存存取速度之间的差异,从而提升系统性能。
  • 它使用的是程序的局部性原理,其内容是主存局部域的副本。
  • 当 CPU 需要读取数据时,首先判断要访问的信息是否在 Cache 中,如果在即为命中,如果不在,就要按替换算法把主存中的一块信息调入 Cache 中。
  • 替换算法有:随机替换算法、先进先出替换算法、近期最少使用替换算法、优化替换算法等。
  • CPU 工作时给出的是主存的地址,要从 Cache 存储器中读写信息,就需要将主存地址转换成 Cache 存储器的地址,这种地址的转换叫作地址映像

Cache 的性能分析: 设 HcH_c 为 Cache 的命中率,tct_c 为 Cache 的存取时间,tmt_m 为主存的访问时间,则 Cache 存储器的等效加权平均访问时间 tat_a 为:

ta=Hctc+1Hc)tmt_a = H_ct_c +(1-H_c)t_m

Cache 地址映像

  • 直接映像:

    Cache 会进行分块,内存则会进行先分区后分块,块的大小是一致的,内存的区与 Cache 的容量大小保持一致。例如 Cache 的容量为 16KB,分成 32 块,每块为 512B,那么内存的每个区也是 16KB,区内的每个块也是 512B。主存地址由 3 部分组成:主存区号、区内块号和块内地址

    主存的块与 Cache 块的对应关系是固定的,主存中的块只能存放在 Cache 存储器的相同块号中

    优点:地址变换简单、访问速度快。 缺点:块冲突率高、Cache 空间得不到充分利用。

  • 全相联映像:

    Cache 会进行分块,内存也进行分块,而且块的大小是一致的,比如 Cache 以 512B 为一块,内存也会以 512B 为一块。主存中的任意一块都可以缓存到 Cache 中的任意一块中。主存地址由 2 部分组成:主存块号和块内地址

    主存与 Cache 存储器均分成容量相同的块。允许主存的任一块可以调入 Cache 存储器的任何一个块的空间中

    优点:灵活,块冲突率低,只有在 Cache 中的块全部装满后才会出现冲突,Cache 利用率高。 缺点:无法从主存块号中直接获得所对应 Cache 的块号,变换比较复杂,地址变换速度慢,成本高。

  • 组相联映像:

    Cache 会先进行分组,组内再分块。相当于是把直接映像中的块换成组的概念(组的容量要大一些,因为组内还要分块),主存也是先分区,区内再分组,主存的组与 Cache 组的对应关系是固定的,主存中的组只能存放在 Cache 存储器的相同组号中。这时 Cache 中的组与主存中的组之间有相对固定的映射关系,而当一两个组相对应时,组内的块之间则使用全相联的方式,自由配对。

    主存的任何区的 0 组只能存到 Cache 的 0 组中,1 组只能存放到 1 组中,依此类推。而组内的块可以存入 Cache 中相同组的任一块中。

    主存地址位数=区号+组号+主存块号+块内地址

    Cache地址位数=组号+组内块号+块内地址

信息安全

对称加密

文件加密和解密使用相同的密钥,或者虽然不同,也可以从其中一个很容易地推导出另一个。

代表算法:

  • DES:主要采用替换和移位的方法加密。它用 56 位密钥对 64 位二进制数据块进行加密。
  • 3DES:用两个56位的密钥。
  • RC-5
  • IDEA:类似于 DES,其密钥长度为 128 位。
  • AES:基于排列和置换运算。

非对称加密

同样使用两个密钥:加密密钥和解密密钥,一个是公开的,一个是非公开的私有密钥。他们是一对,只有使用对应的密钥才能解密。

非对称加密有两个不同的体制:加密模型和认证模型。

加密模型:发送者 A 使用接收者 B 提供的公钥加密信息,加密后的信息只有接收者 B 才能解密查看。

认证模型:发送者 A 用自己的密钥加密信息,接收者使用 A 的公钥解密,若能解密,表示信息是 A 所发送。

代表算法:

  • RSA,基于大素数分解的困难性

信息摘要

  • Hash 函数:输入一个长度不固定的字符串,返回一串固定长度的字符串,又称 Hash 值。
  • 单向 Hash 函数用于产生信息摘要
  • 对于特定的文件而言,信息摘要是唯一的。
  • 在某一特定的时间内,无法查找经 Hash 操作后生成特定 Hash 值的原报文,也无法查找两个经 Hash 操作后生成相同 Hash 值的不同报文。
  • 在数字签名中,可以解决验证签名和用户身份验证、不可抵赖性的问题。
  • MD2、MD4 和 MD5 是被广泛使用的 Hash 函数,它们产生一种 128 位的信息摘要。

数字签名(防篡改防抵赖)

可以确认信息发送者的身份信息是否被修改过。但不能保证发送信息的保密性。

发送者A:

graph LR
a[信息M]
b[信息摘要Z]
c[加密后的信息摘要E]
a-- 使用 Hash 函数生成 -->b
b-- "使用 A 的密钥加密(签名)" -->c

接收者B:

接收由 A 发送的信息 M 和加密后的信息摘要 E

graph LR
a[接收到的信息M]
b[新的信息摘要N]
c["接收到的信息摘要E(已由A签名)"]
d["解密后的信息摘要K"]
e["验证N和K是否一致"]
a-- 使用与 A 相同的 Hash 函数生成 -->b
c-- "使用 A 的公钥解密" -->d
d-->e

这种方式下,信息是明文传输的,没有进行保密,但发送者不可抵赖,因为用 A 的公钥能解密信息摘要,说明信息摘要确定是 A 加密过的,同时信息也不能被修改,否则 Hash 值就会发生变化。

数字加密(数字信封)

可以保证发送信息的保密性,经过数据加密的信息,只能由发送者和接收者查看,任何第三人都无法查看。

但是不能确认发送者的身份,也就是说发送者可能会被冒充。

发送者 A:

将加密后的信息和加密后的对称密钥一起发送给 B,这称为数字信封技术。

graph LR
a[信息M]
b[加密后的信息E]
c["对称密钥K"]
d["加密后的对称密钥D"]
a-- 使用对称密钥K加密 -->b
c-- "使用 B 的公钥加密" -->d

接收者B:

graph LR
a[加密后的对称密钥D]
b[对称密钥K]
c["加密后的信息E"]
d["信息M"]
a-- 使用B的私钥解密 -->b
c-- "使用对称密钥K解密" -->d

数字签名和数字加密的区别和联系

  • 数字签名使用的是发送方的密钥对,任何拥有发送方公开密钥的人都可以验证数字签名的正确性。数字加密使用的是接收方的密钥对,是多对一的关系,任何知道接收方公开密钥的人都可以向接收方发送数据,但只有唯一拥有接收方私有密钥的人才能对信息解密。
  • 数字签名只采用了非对称加密算法,它能保证发送信息的完整性、身份认证和不可否认性,但不能保证发送信息的保密性。
  • 数字加密采用了对称密钥算法和非对称密钥算法相结合的方法,它能保证发送信息的保密性。

计算机可靠性

  • 计算机系统的可靠性:是指从它开始运行(t=0)到某时刻 t 这段时间内能正常运行的概率,用 R(t) 表示。
  • 计算机系统的失效率:是指单位时间内失效的元件数与元件总数的比例,用 λ 表示。
  • 平均无故障时间(MTBF):两次故障之间能正常工作的时间的平均值称为平均无故障时间,MTBF = 1/λ
  • 计算机系统的可维修性:一般平均修复时间(MTRF)表示,指从故障发生到机器修复平均所需的时间。
  • 计算机系统的可用性:指计算机的使用效率,它以系统在执行任务的任意时刻能正常工作的概率 A 表示。A = MTBF/(MTBF+MTRF)
  • 串联系统的可靠性:R=R1×R2×R3×RNR=R_1×R_2×R_3×…R_N
  • 并联系统的可靠性:R=1(1R1)(1R2)(1R3)(1RN)R=1 - (1-R_1)(1-R_2)(1-R_3)…(1-R_N)

程序语言基础

数据类型

  • 基本类型:整型、字符型、实型和布尔类型。
  • 特殊类型:空类型。
  • 用户定义类型:枚举类型。
  • 构造类型:数组、结构、联合。
  • 指针类型:type*。
  • 抽象数据类型:类类型。

编译过程

  1. 词法分析

    • 对源程序从前到后(从左到右)逐个字符地扫描,从中识别出一个个“单词”符号。
    • “单词”符号是程序设计语言的基本语法单位,如关键字(保留字)、标识符、常数、运算符和标点符号、左右括号等。
  2. 语法分析:

    • 根据语言的语法规则,在词法分析的基础上,分析单词串是否构成短语和句子,即是否为合法的表达式、语句和程序等基本语言结构,同时检查和处理程序中的语法错误
    • 如果源程序没有语法错误,语法分析后就能正确地构造出其语法树
  3. 语义分析

    • 分析各语法结构的含义,检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。

    • 语义分析的一个主要工作是进行类型分析和检查。一个数据类型一般包含两个方面的内容:类型的载体及其上的运算。例如:整除取余运算符只能对整型数据进行运算,如果运算对象为浮点数,则认为是一种类型不匹配的错误。

  4. 中间代码生成

    • 根据语义分析的输出生成中间代码。
    • 常用的中间代码有:后缀式(逆波兰式)、四元式(三地址码)、树形表示
  5. 代码优化:

    • 由于编译器将源程序翻译成中间代码的工作是机械的、按固定模式进行的,因此,生成的中间代码往往在时间和空间方面的效率较差。当需要生成高效的目标代码时,就必须进行优化。
    • 优化过程可以在中间代码生成阶段进行,也可以在目标代码生成阶段进行。
  6. 目标代码生成

    • 目标代码生成是编译器工作的最后一个阶段。

    • 把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码和汇编指令代码。

    • 这个阶段的工作与具体的机器密切相关。

符号表管理

符号表的作用是记录源程序中各种符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地查找、插入、修改和删除等操作。

出错处理

源程序中不可避免地会有一些错误,大致分为静态错误和动态错误。

  1. 动态错误发生在程序运行时,如:变量取零时作除数、引用数组下标错误等。

  2. 静态错误是指编译阶段发现的程序错误,可分为语法错误和静态语义错误。

语法错误:单词拼写错误、标点符号错、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。

静态语义错误:语义分析时发现的运算符和运算对象类型不合法等错误。

中缀、前缀与后缀表达式

  • 中缀表达式:即我们通常所使用的表达式。如: (a+b)*c-d
  • 前缀表达式(波兰式):将运算符写在前面,操作数写在后面,且不使用括号。-*+abcd
  • 后缀表达式(逆波兰式):将运算符写在后面,操作数写在前面,且不使用括号。ab+c*d-

操作系统

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

  • 操作系统两个重要的作用:(1)通过资源管理提高计算机系统的效率;(2)改善人机界面向用户提供友好的工作环境
  • 操作系统的 4 个特征:并发性、共享性、虚拟性和不确定性。
  • 操作系统的五大功能:进程管理、文件管理、存储管理、设备管理和作业管理。

进程

进程是程序的一次执行。

  • 进程通常是由程序数据进程控制块(PCB)组成的。
  • 进程是资源分配和独立运行的基本单位,进程两个基本属性:可拥有资源的独立单位;可独立调度和分配的基本单位。
  • 进程间的同步:是指在系统中一些需要相互合作,协同工作的进程,这样的相互联系称为进程的同步。
  • 进程间的互斥:是指系统中多个进程因争用临界资源而互斥执行。
  • 临界资源:是指有些资源一次只能供一个进程使用。如打印机、共享变量等。

信号量

信号量是一个整型变量,根据控制对象的不同被赋予不同的值。

  • 公用信号量:实现进程间的互斥,初值为 1 或资源的数目

  • 私用信号量:实现进程间的同步,初值为 0 或某个正整数。

  • 信号量 S 的物理意义:S≥0 表示某资源的可用数,S<0,则其绝对值表示阻塞队列中等待该资源的进程数。

  • PV 操作是实现进程同步与互斥的常用方法,P 操作和 V 操作是低级通信原语,在执行期间不可分割。其中,P 操作表示申请一个资源,V 操作表示释放一个资源。

  • P 操作的定义:S=S-1, 若 S≥0,则执行 P 操作的进程继续执行;若 S<0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。

    // 不管能不能获取获取,首先要把 S 减 1
    if(--S >= 0) {
      // 继续执行本进程
    }
    else {
      // 挂起本进程(本进程等待),转到另一个进程
    }
    
  • V 操作定义:S=S+1,若 S>0,则执行 V 操作的进程继续执行;若 S≤0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行 V 操作的进程继续。

    if (++S > 0) {
      // 不唤醒队列中的等待进程,继续执行本进程
    } else {
      // 唤醒队列中的等待进程,同时继续执行本进程
    }
    

生产者消费者问题(单缓冲)

在单缓冲的条件下,设 P1 是生产者,P2 是消费者。要实现 P1 和 P2 的同步,需要两个信号量:

  1. S1: 同步/互斥信号量,初值为 1,代表缓冲区可放入的产品数量
  2. S2: 同步信号量,初值为 0,代表缓冲区可消费的产品数量

生产者 P1 的执行流程为:

graph LR
a[生产]
b["P(S1)"]
c[送入缓冲区]
d["V(S2)"]
a--->b
b--->c
c--->d
d--->a

消费者 P2 的执行流程为:

graph LR
a["P(S2)"]
b[取出]
c["V(S1)"]
d[消费]
a--->b
b--->c
c--->d
d--->a

生产者消费者问题(多缓冲)

在多缓冲的条件下,设 P1 是生产者,P2 是消费者。要实现 P1 和 P2 的同步,需要三个信号量:

  1. S: 互斥信号量,初值为 1
  2. S1: 同步信号量,初值为 n,代表缓冲区中还可放入的产品数量
  3. S2: 同步信号量,初值为 0,代表缓冲区中还有多少产品

生产者 P1 的执行流程为:

graph LR
a[生产]
b["P(S1)"]
c["P(S)"]
d[送入缓冲区]
e["V(S)"]
f["V(S2)"]
a--->b
b--->c
c--->d
d--->e
e--->f
f--->a

消费者 P2 的执行流程为:

graph LR
a["P(S2)"]
b["P(S)"]
c[取出]
d["V(S)"]
e["V(S1)"]
f[消费]
a--->b
b--->c
c--->d
d--->e
e--->f
f--->a

死锁

死锁是指两个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去的现象。

产生死锁的 4 个必要条件:互斥条件(资源互斥,不能共享)、请求保持条件、不可剥夺条件、环路条件。

死锁的处理策略有:鸵鸟策略(不管)、预防策略、避免策略和检测与解除死锁。

  • 死锁预防:采用某种策略限制并发进程对资源的请求。
  • 死锁避免:如银行家算法(先判断若执行进程是否会发生死锁,会则不执行)。
  • 死锁检测:系统定时地运行一个程序来检测是否发生死锁,若有,则设法加以解除。
  • 死锁解除:有资源剥夺法和撤销进程法。

线程

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

引入线程后:线程作为调度和分配的基本单位,进程作为独立分配资源的单位。

一个进程中有多个线程,共享该进程的资源。

线程分为用户级线程和内核支持线程。

用户级线程不依赖于内核。该类线程的创建、撤销和切换都不利用系统调用来实现。

内核支持线程依赖于内核。该类线程的创建、撤销和切换都利用系统调用来实现

地址重定位

程序运行时,需要装载到内存中,就需要把程序中的指令和数据的逻辑地址转换为对应的物理地址,这个转换的过程称为地址重定位。

  • 静态重定位:在程序装入主存时已经完成了逻辑地址到物理地址的变化,在程序的执行期间不会再发生变化。
  • 动态重定位:在程序运行期间完成逻辑地址到物理地址的变换。

分区存储管理

把主存划分成若干个区域,每个区域分配给一个作业使用。这就是分区存储管理方式。分为固定分区、可变分区和可重定位分区。

  1. 固定分区:系统生成时已经分好区。
  2. 可变分区:是一种动态分区方式,存储空间的划分是在作业装入时进行的,故分区的个数是可变的,分区的大小刚好等于作业的大小。
  3. 可重定位分区:分配好的区域可以移动。

分页存储管理

将进程的地址空间划分成若干个大小相等的区域,称为页。将主存的空间也划分成与页相同大小的若干个物理块,称为块或页框。在为进程分配主存时,将进程中若干页分别装入多个不相邻接的块中。

地址结构:页号+页内地址

页表:当进程的多个页面离散地分配到主存的多个物理块时,系统应能保证在主存中找到进程要访问的页面所对应的物理块,为此,系统为每个进程建立了一张页面映射表,简称页表,页表就是虚拟页号与物理块号之间的映射。

分段存储管理

将用户程序或作业的地址空间按内容划分为段,比如主程序一段,子程序一段,数据专门放一段,每个段的长度是不等的,但是每个段占用一个连续的分区。进程中的各个段可以离散地分配到主存的不同分区中。在系统中为每个进程建立一张段映射表,简称为“段表”。

地址结构:段号+段内地址

段表中需要记录段号、段长、物理起始地址。

段页式存储管理

将整个主存划分成大小相等的存储块(页框)

将用户程序按程序的逻辑关系分为若干个段,然后再将段划分成页。

段页式系统中同时有段表和页表:

  • 段表:段号、页表始址、页表长度。
  • 页表:页号、物理块号。
  • 逻辑地址:段号、段内页号、页内地址
  • 物理地址:块号、页内地址

虚拟存储管理

允许将作业的一部分装入主存即可运行程序,而其余部分可以暂时留在磁盘上,等需要的时候再装入主存。这样一来,一个小的主存空间就可以运行比它大的一个作业。从用户角度看,系统具有的主存容量比实际的主存容量要大得多,称为虚拟存储器。

I/O 设备管理软件

graph TD
a[用户进程]
b["设备无关软件(系统软件)"]
c[设备驱动程序]
d[中断处理程序]
e[硬件]
a<-->b
b<-->c
c<-->d
d<-->e

磁盘调度算法

磁盘调度分为移臂调度和旋转调度两类,先进行移臂调度,再进行旋转调度。磁盘调度的目标是使磁盘的平均寻道时间最少。

读取磁盘数据的时间 = 寻道时间 + 旋转延迟 + 数据传输时间

移臂调度算法

  1. 先来先服务:根据进程请求的先后次序进行调度。保证所有进程的请求都得到回应,但是平均寻道时间可能很长。
  2. 最短寻道时间优先:选择访问的磁道与当前磁头所在的磁道距离最近的,使得每次的寻道时间最短。
  3. 扫描算法(类似电梯调度):不仅考虑到要访问的磁道与当前磁道的距离,更优先考虑的是磁头当前的移动方向。
  4. 单向扫描调度算法:在扫描算法的基础上,规定磁头只做单向移动。

旋转调度算法

  1. 如果进程请求访问的是不同编号的扇区(无论是否在同一磁道),则总是让首先到达磁头位置下的扇区先进行读写操作。
  2. 如果进程请求访问的是相同编号的扇区(无论是否在同一磁道),旋转调度时可以任选一个扇区进行读写操作。

作业调度算法

  1. 先来先服务:按作业到达的先后顺序进行调度。

  2. 短作业优先:按作业运行时间的长短进行调度,即启动要求运行时间最短的作业。

  3. 响应比高优先:响应比高的作业优先启动。

    响应比:RP = 作业响应时间 / 作业执行时间 =(作业等待时间 + 作业执行时间)/ 作业执行时间

  4. 优先级调度算法:按照系统设定的优先级或者用户指定的优先级,优先级高的先调度。

  5. 均衡调度算法:根据系统的运行情况和作业本身的特性对作业进行分类,力求均衡地使用系统的各种资源,即注意发挥系统效率,又使用户满意。

计算机网络

ISO/OSI参考模型

数据传送单位网络设备
应用层报文网关
表示层报文
会话层报文
传输层报文(分段)
网络层数据包路由器
数据链路层网桥、交换机
物理层位(比特流)中继器、集线器

物理层设备

  • 中继器

    • 它是在物理层上实现局域网网段互连的,用于扩展局域网网段的长度。

    • 在以太网中最多只能使用4个中继器。

  • 集线器:

    • 可以看成是一种特殊的多路中继器(多端口中继器),其优点是当网络系统中某条线路节点出现故障时,不会影响网上其他节点的正常工作。
    • 分为无源和有源。无源集线器不对信号作任何处理,只负责将多段介质连接在一起。有源集线器对传输信号进行再生和放大。

数据链路层设备

  • 网桥:用于连接两个局域网网段,对帧进行过滤与转发。
    • 过滤帧:网桥检查帧的源地址和目的地址,如果不在同一网段上,就把帧转发到另一个网段上,如果在,则不转发。
    • 隔离不同网段:将不同楼层的网络分成不同的网络段,段中间用网桥连接,这样可以缓解网络通信繁忙的程度,提高通信效率;另外还可以提高网络的可靠性,一个网络段发生故障不会影响另一个网络段。
  • 交换机:多端口网桥,按物理地址对帧进行数据转发。
    • 按 MAC 地址(物理地址)进行数据转发,比网桥的转发性能要高,数据延迟要小。
    • 交换机的工作过程:从某一节点收到帧后,在其内存的 MAC 地址表(端口号-MAC地址)中进行查找,确认该 MAC 地址的网卡连接在哪一个节点,然后将帧转发至该节点。如果没有找到该 MAC 地址,就将数据包广播到所有节点,拥有该 MAC 的网卡收到广播后做出应答,交换机将该 MAC 地址添加到 MAC 地址列表中。
    • 交换机有三种交换技术:端口交换、帧交换和信元交换。

网络层设备

  • 路由器:用于连接多个逻辑上分开的网络,例如不同的子网。
    • 路由器具有很强的异种网互连能力。例如:即使两个互连的网络最低两层的协议不同,也可通过支持多协议的路由器进行连接。
    • 路由器最主要的功能是选择路径。在路由器的存储器中维护着一个路径表,记录各个网络的逻辑地址,用于识别其他网络。
    • 路由器的工作过程:收到某个网络向另一个网络发送的信息包时,打开信息包,并解读信息包中的数据,获得目的网络的逻辑地址(IP地址),使用复杂的程序决定该由哪条路径发送最合适,然后重新打包并转发出去。
  • 三层交换机:不仅包括所有交换机的功能,还包含了网络层的部分功能。一次路由,多次交换。
    • 工作原理:可以总结为“一次路由,多次交换”。当三层交换机第一次收到一个数据包时必须通过路由功能寻找转发端口,同时记住目标 MAC 地址和源 MAC 地址,以及其他相关信息,当再次收到目标地址和源地址相同的帧时就直接进行交换了,不再调用路由功能。三层交换机不但具有路由功能,而且比通常的路由器转发得更快。

应用层设备

  • 网关:主要功能是进行协议转换。
    • 当要连接不同类型而协议差别又较大的网络时,要选用网关设备。它可以将协议进行转换,并将数据重新分组,以便在两个不同类型的网络之间进行通信。

TCP/IP

TCP/IP包含以下五个特性:

  1. 逻辑编址。每一台连入互联网的设备都要分配一个 IP 地址,一个 IP 地址包含网络号,子网络号和主机号,因此可以通过 IP 地址很方便地找到对应的设备。
  2. 路由选择。在 TCP/IP 协议中包含了专门用于定义路由器如何选择网络路径的协议,即 IP 数据包的路由选择。
  3. 域名解析。为了方便用户记忆,专门设计了一种更方便的字母式地址结构,称为域名。将域名映射为 IP 地址的操作,称为域名解析。
  4. 错误检测与流量控制。TCP/IP 协议可以检测数据信息的传输错误,确认已传递的数据信息已被成功接收,监测网络系统中的信息流量,防止出现网络拥塞。

TCP/IP 协议簇

TCP/IP 模型协议
应用层FTP/TCP(文件传输协议):数据20,控制21
Telnet/TCP(远程登录协议):23
SMTP/TCP(简单邮件传输协议):25
HTTP/TCP(超文本传输协议):80
POP3/TCP :110
DHCP/UDP(动态主机配置协议):67
SNMP/UDP(简单网络管理协议)161/162
DNS/UDP(域名解析):53
传输层TCP、UDP
网际层IP:提供无连接的、不可靠的服务
ICMP(网络控制信息协议):专门用于发送差错报文
ARP(地址解析协议):将 IP 地址转换为物理地址
RARP(反地址解析协议):将物理地址转换为 IP 地址
网络接口层IEEE 802.3、FDDI、IEEE 802.5、ARCnet、PPP
  • IP:IP 所提供的服务通常被认为是无连接的和不可靠的,它将差错检测和流量控制之类的服务授权给了其他的各层协议,这正是 TCP/IP 能够高效率工作的一个重要保证。
    1. 将上层数据(TCP/UDP 数据)或同层的其他数据(如 ICMP 数据)封装到 IP 数据报中;
    2. 将IP数据报传送到最终目的地;
    3. 为了使数据能够在链路层上进行传输对数据进行分段;
    4. 确定数据报到达其他网络中的目的地的路径。
  • ARP 和 RARP:ARP 负责将 IP 地址转换为物理地址(MAC地址);RARP 负责将物理地址转换为 IP 地址。
    • 网络中的任何设备(主机、路由器和交换机等)均有唯一的物理地址,该地址通过网卡给出,每个网卡出厂后都有不同的编号,即用户所购买的网卡有着唯一的物理地址。而 IP 协议又使用了 IP 地址,因此,在数据传输过程中,必须对 IP 地址和物理地址进行相互转换。
  • ICMP(网络控制信息协议):是一个专门用于发送差错报文的协议。由于 IP 是一种尽力传送的协议,传送的数据报有可能丢失、重复、延迟或乱序,因此 IP 需要一种避免差错并在发生差错时报告的机制。
    • 通告网络故障、通告网络拥堵、协助解决故障。
  • TCP:
    • TCP 提供了一个可靠的、面向连接的、全双工的数据传输服务。
    • 它采用了一种叫做“重发”的技术。即在 TCP 传输过程中,发送方启动一个定时器,然后传输数据包,接收方收到后给发送方发送一个“确认”信息,如果超过时间发送方还没有收到确认信息,就重新发送这个数据包。
    • 利用 TCP 建立和关闭连接时,均需要通过三次握手。1)源主机发送一个数据包,表示想与目的主机进行通信。2)目的主机发送一个确认进行响应,表示愿意进行通信。3)源主机再发送一个确认来响应,该确认中可包含真正要发送的数据包。
    • TCP 协议一般用于传输数据量比较少,且对可靠性要求高的场合。
  • UDP:
    • UDP是一种不可靠的、无连接的协议,可以保证应用程序进程间的通信。
    • UDP的主要作用是将UDP消息展示给应用层,它并不负责重新发送丢失的或出错的数据信息,不对接收到的无序IP数据报重新排序,不消除重复的IP数据报,不对已收到数据进行确认,也不负责建立或终止连接。

IP地址的分类

A类 0------- xxxxxxxx xxxxxxxx xxxxxxxx
B类 10------ -------- xxxxxxxx xxxxxxxx 
C类 110----- -------- -------- xxxxxxxx
D类 1110---- -------- -------- --------
E类 1111---- -------- -------- --------
  • D类地址用于组播、路由器修改等,E类地址用于试验
  • 在 IP 地址中,全 0 代表网络地址,全 1 代表广播地址
分类第一个字节取值网络数量主机数量子网掩码
A类0~1272722^{7}-222422^{24}-2255.0.0.0
B类128~19121422^{14}-221622^{16}-2255.255.0.0
C类192~22322122^{21}-22822^{8}-2255.255.255.0

IPv6

IPv6 的地址空间为 128 位,共 16 个字节,书写时,2个字节为一组,共 8 组

864E:864E:864E:FFFF:FFFF:0:64:864E

FF05:0:0:0:0:0:0:B3 => FF05::B3

常见的网络攻击技术

  1. 篡改消息:是指一个合法消息的某些部分被修改、删除、延迟、重新排序等。如修改传输消息中的数据,将“允许甲执行操作”改为“允许乙执行操作”。
  2. 伪造(伪装、假冒):是指某个实体假扮成其他实体,从而以欺骗的方式获取一些合法用户的权利和特权。
  3. 重放:是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。
  4. 拒绝服务(DOS):是指攻击者不断地对网络服务系统进行干扰,改变其正常的作业流程,执行无关程序使系统响应减慢甚至瘫痪,影响正常用户的使用,甚至使合法用户被排斥而不能进入计算机网络系统或不能得到相应的服务。
  5. 窃听(截取):是指攻击者在未经用户同意和认可的情况下获得了信息或相关的数据。
  6. 流量分析(通信量分析):是指攻击者虽然从截获的消息中无法得到消息的真实内容,但攻击者还是能通过观察这些数据报的模式,分析确定出通信双方的位置、通信的次数及消息的长度,获知相关的敏感信息。
  7. 字典攻击:一种破解用户密码或密钥的一种攻击方式。事先将所有可能的密码口令形成一个列表(字典),在破解密码或密钥时,逐一将字典中的密码口令(或组合)尝试进行匹配。
  8. 社会工程学攻击:是指通过与他人进行合法的交流,来使其心理受到影响,做出某些动作或者是透露一些机密信息的方式。这通常被认为是一种欺诈他人以收集信息、行骗和入侵计算机系统的行为。
  9. SQL注入攻击:把SQL命令插入Web表单的输入域或页面的请求查找字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
  10. 会话劫持:是指攻击者在初始授权之后建立一个连接,在会话劫持以后,攻击者具有合法用户的特权权限。例如,一个合法用户登录一台主机,当工作完成后,没有切断主机。然后,攻击者乘机接管,因为主机并不知道合法用户的连接已经断开,于是,攻击者能够使用合法用户的所有权限。典型的实例是“TCP会话劫持”。
  11. 漏洞扫描:是一种自动检测远程或本地主机安全漏洞的软件,通过漏洞扫描器可以自动发现系统的安全漏洞。
  12. 缓冲区溢出:攻击者利用缓冲区溢出漏洞,将特意构造的攻击代码植入有缓冲区漏洞的程序之中,改变漏洞程序的执行过程,就可以得到被攻击主机的控制权。

防火墙

  1. 包过滤防火墙

    它处于网络层和数据链路层,一般有一个包检查块(包过滤器),通过该检查模块,对每一个传入和传出网络的IP包打开进行检查,例如源地址、目的地址、协议和端口等,对于不符合包过滤规则的包进行记录,发出报警并丢弃该包。

    优点:

    1. 过滤型的防火墙通常直接转发报文,它对用户完全透明,速度较快。

    2. 包过滤通常被包含在路由器数据包中,所以不需要额外的系统来处理。

    缺点:

    1. 它可以控制站点与网络之间的相互访问,但不能控制传输数据的内容,因为内容是应用层数据。
    2. 访问控制粒度太粗糙,不能防范黑客攻击,不能处理新的安全威胁。
  2. 应用代理网关防火墙

    能彻底隔断内网与外网的直接通信,内网用户对外网的访问变成了防火墙对外网的访问,然后再由防火墙转发给内网用户。所有通信都必须经应用层代理软件转发,访问者任何时候都不能与服务器建立直接的TCP连接,应用层的协议会话过程必须符合代理的安全策略要求。

    优点:可以检查应用层、传输层和网络层的协议特征,对数据包的检测能力比较强。

    缺点:难以配置,处理速度非常慢。

  3. 状态检测技术防火墙

    它结合了代理防火墙的安全性和包过滤防火墙的高速等优点,在不损失安全性的基础上,提高了代理防火墙的性能。状态监测不仅仅根据规则表来检查每一个进出的包,更考虑了数据包是否符合会话所处的状态,因此提供了完整的对传输层的控制能力,同时也改进了流量处理速度。因为它采用了一系列优化技术,使防火墙性能大幅度提升,能应用在各类网络环境中,尤其是在一些规则复杂的大型网络上。

入侵检测与防御

入侵检测系统(IDS):注重的是网络安全状况的监管,通过监视网络或系统资源,寻找违反安全策略的行为或遭到入侵攻击的迹象,并发出报警。因此绝大多数IDS系统都是被动的。

入侵防御系统(IPS):是在入侵检测系统的基础上发展起来的,不仅能够检测到网络中的攻击行为,同时可以主动地对攻击行为发出响应,对入侵活动和攻击性网络流量进行拦截,避免造成损失。