# 软件设计师

​ 干巴爹哟~

# 进制的转化

进制转化 例子 技巧
十进制转二进制 20.25 = 10100.01 整数部分除于2、小数部分乘于2
二进制转十进制
十进制转十六进制 30.25 = 1E.4 整数部分除于16、小数部分乘于16
十六进制转十进制 1E.4 =

+

.

= 30.25
十六进制转二进制 6E.3 = 01101110.0011 各自为营除于2、四位一组、前面补0
二进制转十六进制 01101110.0011 =

+

+

+

.

+

= 6E.3
四个为一组
八进制转二进制 216 = 10001110 各自为营除于2、三位一组、前面补0
二进制转八进制 10001110 =

+

= 216
三个为一组

# 原码、反码、补码

十进制 = 原码 = 反码 = 补码
1= [0000 0001] = [0000 0001] = [0000 0001]
-1 = [1000 0001] = [1111 1110] = [1111 1111]
3 - 5 = [0000 0011] - [1000 0101] = [0000 0011] + [1111 1011] = [1111 1110] = [1111 1101] = [1000 0010] = -2

# 浮点数运算(科学技术法)

操作说明 运算
M是尾数 R是基数 e是指数 N = M *

正常计算 1000 + 119
科学计算 1.0 *

+ 1.19 *

指数向大对齐 (对阶) 1.0 *

+ 0.119 *

尾数计算 1.119 *

保证小数点前不为零且只有一位 (结束格式化) 19.11 *

➡️ 1.911 *

# 计算机结构

  • Flynn 结构分类

    体系结构类型 结构 关键特性 代表
    单指令流单数据流 SISD 控制部分(一个)、处理器(一个)、主存模块(一个) 单片机
    单指令流多数据流 SIMD 控制部分(一个)、处理器(多个)、主存模块(多个) 各处理器以异步的形式处理同一条指令 阵列处理机(二维数组)
    多指令流单数据流 MISD 控制部分(多个)、处理器(一个)、主存模块(多个) 理论上存在
    多指令流多数据流 MIMD 控制部分(多个)、处理器(多个)、主存模块(多个) 实现作业、任务、指令各级全面并行 多处理机系统
  • CISCRISC

    指令系统类型 指令 实现方式 其它
    CISC (复杂) 数量多、使用频率差别大、可变长格式 微程序控制技术(微码) 研制周期长
    RISC (精简) 单周期指令、操作寄存器、LoadStore 操作内存 通用寄存器、硬布线逻辑控制、流水式 优化编译
  • 流水线计算

    操作 说明
    题目 已知流水线运行指令时 取值 2 ns 、分析 2 ns 、执行 1 ns
    求流水周期 以上面三个步骤消耗最久的周期为准 所以是 2 ns
    求100条消耗时间 以理论公式优先

    是指流水周期

    是指次数

    是指步骤
    理论公式

    (2+2+1)+(100-1)*2 = 203
    实践公式

    (3+100-1)*2 = 204
  • 流水线吞吐率计算

    操作 说明
    题目 已知 100 条指令流水周期 2 ns 一百条指令总耗时 203 ns
    吞吐率

    线

    最大吞吐率

  • 流水加速比

    操作 说明
    题目 已知流水线运行指令时 取值 2 ns 、分析 2 ns 、执行 1 ns

    使线使线

  • 流水线效率

    操作 说明
    题目 流水线运行指令时耗时分别是

    总共运行 4 个指令

    线

# 层次化存储结构

  • Cache 和主存器的平均周期

    操作 说明
    题目 已知 Cache 的访问命中率为 0.95 周期时间为 1 ns 主存器周期为 1000 ns
    Cache 和主存器的平均周期 h 表示 Cache 的访问命中率

    表示 Cache 的周期时间

    表示主存器的周期时间

    0.95* 1 + (1-0.95)*1000 = 50.95ns
  • 主存编址

    操作 说明
    题目 内存地址从 AC000HC7FFFH16bit 编址 由 28 片芯片构成 16K 个存储单元
    求地址单元 C7FFFH 自增为 C8000H 后减去 AC000H1C000H 转为十进制为 114688 / 1024 = 112K
    求储存单元位数 (112 * 16) / (28 * 16) = 4
  • 磁盘读取

     pie
     "R0" : 9.09
     "R1" : 9.09
     "R2" : 9.09
     "R3" : 9.09
     "R4" : 9.09
     "R5" : 9.09
     "R6" : 9.09
     "R7" : 9.09
     "R8" : 9.09
     "R9" : 9.09
     "R10" : 9.09
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    操作 说明
    题目 如上图 磁道分成 11 个物理块 磁盘旋转周期为 33ms 单缓存区处理数据耗时 3ms
    顺序处理磁盘耗时 读取物理块平均耗时 3ms 而单缓存区导致数据处理完毕后需要旋转一圈才能读到下一块物理块
    计算 (33+3)*10+3+3 = 366 (一圈读取耗时+处理耗时)*剩余物理块数 + 第一块读取+ 第一块处理耗时
    优化后耗时 33*2 = 66 两圈读取可完成
  • 系统可靠性分析

    graph LR
    start[开始];A[R];B[R];C[R];D[R];E[R];F[R];G[R];done(结束); 
    start-->A;
    A-->B;
    A-->C;
    A-->D;
    B-->E;
    C-->E;
    D-->E;
    E-->F;
    E-->G;
    F-->done;
    G-->done;
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    操作 说明
    已知上图每一步的可靠性为 R 求总体的可靠性

# 校验码

  • CRC 循环校验码

    原始报文为 11001010101 其生成多项式为

    CRC 编码后的结果

    按照二进制拆分变为 11011
    原始报文按照上面格式位数减一后 补零为 110010101010000
    11001010101000011011 做异或操作
    CRC 编码后的结果为 0011
    sequenceDiagram
    Title: CRC编码计算
    
    participant melon as 计算
    
    melon ->> melon : 源报文 110010101010000
    melon ->> melon : 11001 / 11011 = 10
    melon ->> melon : 10010 / 11011 = 1001
    melon ->> melon : 10011 / 11011 = 1000
    melon ->> melon : 10000 / 11011 = 1011
    melon ->> melon : 10111 / 11011 = 1100
    melon ->> melon : 11000 / 11011 = 11
    melon ->> melon : 11000 / 11011 = 0011
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
  • 海明校验码

    1011 的海明码
    根据公式

    n 是位数 r 是校验位下标数
    校验码为 3 个 分别是

    校验位公式

    根据 1101 异或操作后可得

    海明码表格如下
    7 6 5 4 3 2 1 位数

    信息位
    1 0 1 1

    校验位
    0 0 1

# 操作系统