# 2024-10-真题

## 第一部分 选择题  `+8`
> 单项选择题：本大题共10小题，每小题1分，共10分。在每小题列出的备选项中只有一项是最符合题目要求的，请将其选出。  


### 1. 下列数中最大的数是  
   A. $ 98_{16} $
   
   B. $227_{8}$
   
   C. $10011001_{2}$
   
   D. $152_{10}$ 
   

### 解
### 各选项转换为十进制：
### A. $\left(98\right)_{16} = 9 \times 16^1 + 8 \times 16^0 = 144 + 8 = 152$
### B. $\left(227\right)_{8} = 2 \times 8^2 + 2 \times 8^1 + 7 \times 8^0 = 128 + 16 + 7 = 151$
### C. 
$$
10011001_{2} = 1 \times 2^7 + 0 \times 2^6  \\\\
    + 0 \times 2^5 + 1 \times 2^4 + 1 \times 2^3 \\\\
    + 0 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 \\\\
    = 128 + 0 + 0 + 16 + 8 + 0 + 0 + 1 = 153 
$$

### D. $\left(152\right)_{10} = 152$

### 因此，最大的数是 C。


### 2. 冯·诺依曼计算机工作方式的基本特点是  
   A. 多指令流单数据流  
   B. 存储程序工作方式  
   C. 堆栈操作  
   D. 存储器按内部选择地址  

### 解
### 冯·诺依曼计算机的基本特点是存储程序工作方式，即程序和数据都存储在同一存储器中，由计算机按顺序取出指令并执行。因此，正确答案是 B。


3. 运算器的核心部件是  
   A. 数据总线  
   B. 通用寄存器  
   C. 多路开关  
   D. 算术逻辑运算单元  

### 解
### 运算器的核心部件是算术逻辑运算单元（ALU），它负责执行算术和逻辑运算。因此，正确答案是 D。
### A. 数据总线是用于在计算机各部分之间传输数据的通道，不是运算器的核心部件。
### B. 通用寄存器用于临时存储数据和指令，但不是运算器的核心部件。
### C. 多路开关用于选择不同的数据源或目的地，也不是运算器的核心部件。


4. 下列关于浮点运算器的描述，正确的是  
   A. 浮点运算器可用阶码部件和尾数部件来实现  
   B. 阶码部件可实现加、减、乘、除四种运算  
   C. 阶码部件可进行阶码相加、相减和相乘操作  
   D. 尾数部件只进行乘法和除法运算  

### 解
### 浮点运算器通常由两个主要部分组成：阶码部件和尾数部件。阶码部件负责处理指数部分的运算，而尾数部件负责处理有效数字部分的运算。因此，正确答案是 A。
### B. 阶码部件主要进行指数的加减运算，而不是乘除运算。
### C. 阶码部件主要进行指数的加减运算，而不是乘法运算。
### D. 尾数部件不仅进行乘法和除法运算，还可以进行加法和减法运算。

5. 指令系统中采用不同寻址方式的目的主要是  
   A. 实现存储程序和程序控制  
   B. 缩短指令长度，扩大寻址空间，提高编程灵活性  
   C. 可以直接访问外存  
   D. 提供扩展操作码的可能并降低指令译码难度  

### 解
### 采用不同寻址方式的主要目的是为了缩短指令长度，扩大寻址空间，提高编程的灵活性。因此，正确答案是 B。
### A. 存储程序和程序控制是计算机的基本功能，但不是采用不同寻址方式的主要目的。
### C. 直接访问外存通常通过I/O操作实现，而不是通过寻址方式。
### D. 扩展操作码和降低指令译码难度不是采用不同寻址方式的主要目的。

6. 从源程序变为可执行文件的第一个步骤是  
   A. 链接  
   B. 编译  
   C. 汇编  
   D. 预处理  

### 解
### 从源程序变为可执行文件的第一个步骤是预处理。预处理器会处理源代码中的预处理指令，如宏定义和文件包含等。因此，正确答案是 D。
### A. 链接是将多个目标文件组合成一个可执行文件的过程，通常在编译和汇编之后进行。
### B. 编译是将高级语言源代码转换为汇编代码的过程，通常在预处理之后进行。
### C. 汇编是将汇编代码转换为机器代码的过程，通常在编译之后进行。

---

7. 在父进程中创建一个子进程，用到的函数是  
   A. main  
   B. fork  
   C. execve  
   D. add  

### 解
### 在父进程中创建一个子进程通常使用 fork 函数。因此，正确答案是 B。
### A. main 是程序的入口函数，不用于创建子进程。 
### C. execve 用于执行一个新的程序，而不是创建子进程。
### D. add 不是用于创建子进程的函数。
---

8. 属于易失性存储器的是  
   A. ROM  
   B. 磁表面存储器  
   C. 主存储器  
   D. 光存储器  

### 解
### 易失性存储器是指断电后数据会丢失的存储器。主存储器（RAM）是易失性存储器，因此正确答案是 C。
### A. ROM 是只读存储器，属于非易失性存储器。
### B. 磁表面存储器（如硬盘）是非易失性存储器。
### D. 光存储器（如CD、DVD）也是非易失性存储器。

9. 与设备无关的 I/O 软件不含  
   A. 缓存层  
   B. 文件系统  
   C. 中断服务程序  
   D. 通用块设备 I/O 层  


### 解### 与设备无关的 I/O 软件通常不包含中断服务程序，因为中断服务程序是与具体设备相关的。因此，正确答案是 C。
### A. 缓存层是与设备无关的 I/O 软件的一部分。
### B. 文件系统是与设备无关的 I/O 软件的一部分。
### D. 通用块设备 I/O 层是与设备无关的 I/O 软件的一部分。

10. 普通文件的缓冲区属性为  
    A. 全缓冲  
    B. 行缓冲  
    C. 列缓冲  
    D. 非缓冲  

### 解
### 普通文件的缓冲区属性通常为全缓冲，这意味着数据会在缓冲区满时才写入文件。因此，正确答案是 A。
### B. 行缓冲通常用于终端设备。
### C. 列缓冲不是常见的缓冲方式。
### D. 非缓冲通常用于特殊设备，如打印机。

---

## 第二部分 非选择题  `+6`
> 填空题：本大题共10小题，每小题2分，共20分。  

### 11. 指令所处理的非数值数据主要包括 ______ 数据和 ______ 数据。  

### 解 
### 指令所处理的非数值数据主要包括字`符数`据和`逻辑`数据。
`+1`

---


### 12. 与机器语言相对应的符号化表示语言称为 ______ 语言。通常用容易记忆的英文单词或缩写表示指令操作码的含义，用标号、变量名、寄存器名等表示操作数或其地址码，这些英文单词或其缩写、标号、变量名等称为 ______ 。  

### 解
### 与机器语言相对应的符号化表示语言称为`汇编语言`。通常用容易记忆的英文单词或缩写表示指令操作码的含义，用标号、变量名、寄存器名等表示操作数或其地址码，这些英文单词或其缩写、标号、变量名等称`为助记符`。
`+1`
---


### 13. 用来管理整个计算机系统的资源，包括对它们进行 ______ 、管理、监视和服务等的软件称为 ______ 。  

### 解
### 用来管理整个计算机系统的资源，包括对它们进行`调度`、管理、监视和服务等的软件称为`操作系统`。

### 14. 浮点数加减运算过程中，需要经过 ______ 、尾数加减、______ 和舍入 4 个步骤。 

### 解
### 浮点数加减运算过程中，需要经过`对阶`、尾数加减、`规格化`和舍入4个步骤。
`+1`


### 15. 在两个同号数相加时，当相加得到的 ______ 超出了 n 位数可表示的范围时出现这种情况，此时发生了 ______ 现象。  

### 解
### 在两个同号数相加时，当相加得到的`结果`超出了 n 位数可表示的范围时出现这种情况，此时发生了`溢出`现象。
`+2`

### 16. 链接器在将多个可重定位文件组合成一个 ______ 时，主要完成 ______ 和重定位两个任务。  

### 解
### 链接器在将多个可重定位文件组合成一个`可执行文件`时，主要完成`符号解析`和重定位两个任务。
`+1`


### 17. 进程可以看成是 ______ 的一次运行过程，因而它具有 ______ 的含义。 

### 解
### 进程可以看成是`程序`的一次运行过程，因而它具有`动态`的含义。


### 18. 层次结构存储系统可以在 ______ 、______ 和价格方面达到较好的综合指标。
### 解
### 层次结构存储系统可以在`速度`、`容量`和价格方面达到较好的综合指标。
`+1`  

### 19. 虚拟存储技术既解决了 ______ 受限的问题，又解决了多个程序共享 ______ 带来的安全等问题。  
### 解
### 虚拟存储技术既解决了`编程空间`受限的问题，又解决了多个程序共享`主存`带来的安全等问题。


### 20. 内核空间的 I/O 软件由与设备无关的 I/O 软件、______ 程序和 ______ 程序等三个部分组成。  
### 解
### 内核空间的 I/O 软件由与设备无关的 I/O 软件、`设备驱动`程序和`中断服务`程序等三个部分组成。

## 第三部分 名词解释题  `+1`
> 本大题共2小题，每小题3分，共6分。  

**21.** 主频  
### 解
### 主频（Clock Frequency）就是CPU主脉冲信号的时钟频率，是CPU时钟周期的倒数。。
 `+1`
**22.** 重定位  

### 解
### 重定位（Relocation）是指在程序加载到内存时，将程序中的地址调整为实际的内存地址的过程。由于程序在编译时通常假设自己被加载到某个固定的内存地址，而实际运行时可能被加载到不同的地址，因此需要通过重定位来修改程序中的地址引用。重定位可以在编译时、链接时或加载时进行，常见的方法包括使用基址寄存器和偏移量等技术。重定位确保程序能够正确访问其数据和指令，从而保证程序的正常运行。


### 简洁的答案：重新确定代码和数据的地址，并更新指令中被引用符号地址的操作

`+1`

---

## 第四部分 简答题   `+6`
> 本大题共4小题，每小题6分，共24分。 

### **23.** 简述在递归深度较深时，递归调用的时间开销和空间开销都会较大的原因。
### 解
### 每个过程包含准备阶段和结束阶段，并在栈中新增一个栈帧（2分）；
### 每增加一次过程调用，就要增加许多条包含在准备阶段和结束阶段的额外指令，并增加一个栈帧的空间（2分）；
### 当递归调用深度较深时，这些额外指令的执行时间开销和栈帧的空间开销就会很大，有些情况下甚至发生栈溢出（2分）。
  

### **24.** 简述计算机内部和外部需要进行数制转换的原因。 

### 解
### 计算机内部所有信息都采用二进制编码表示（2分）；
### 但在计算机外部，大都采用八、十或十六进制表示形式（2分）；
### 因此，计算机在数据输入后或输出前都必须实现这些进制数和二进制数之间的转换（2分）。。

### **25.** 简述动态链接的共享性和动态性。  

### 解
- ### 共享性：共享库中的代码段在内存只有一个副本，当应用程序在其代码中需要引用共享库中的符号时，在引用处通过某种方式确定指向共享库中对应定义符号的地址即可（3分）；

- ### 动态性：共享库只有使用它的程序被加载或执行时才加载到内存（3分）。

### **26.** 简述中断控制I/O方式的基本思想。  

- ### 当需要进行I/O操作时，首先启动外设进行第一个数据的I/O操作，然后阻塞请求I/O的用户进程，并调度其他进程到CPU上执行，期间外设在设备控制器的控制下工作（2分）；

- ### 外设完成I/O操作后，向CPU发送一个中断请求信号，CPU检测到该信号后，则进行上下文切换，调出相应的中断服务程序执行（2分）；

- ### 中断服务程序将启动后续数据的I/O操作，然后返回到被打断的进程继续执行

---

## 第五部分 计算题  
> 本大题共2小题，每小题10分，共20分。  

### **27.** 假定某程序 P 编译后生成的目标代码由 A、B、C、D 四类指令组成，它们在程序中所占的比例分别为 50%、20%、20%、10%，已知它们的 CPI 分别为 1、2、2、2。现重新对程序 P 进行编译优化，生成的新目标代码中 A 类指令条数减少了 50%，其他类指令的条数没有变。请回答下列问题：  
###   (1) 编译优化前后程序的 CPI 各是多少？  
###   (2) 假定程序在一台主频为 50MHz 的计算机上运行，则优化前后的 MIPS 各是多少？  
###   (3) 优化前后程序的运行时间各是多少？

### 解 CPI的定义：特指每条指令所需的平均时钟周期数
### MIPS的定义：每秒钟执行的百万条指令数
###### **问题分析与解答（Markdown版）**

#### **问题背景**
- 程序 P 编译后生成 A、B、C、D 四类指令，比例分别为 **50%、20%、20%、10%**，CPI 分别为 **1、2、2、2**。
- 优化后，A 类指令条数减少 **50%**，其他类指令条数不变。
- 计算机主频为 **50MHz**。

---

#### **(1) 优化前后的 CPI 计算**
- **优化前 CPI**  
  加权平均公式：  
  $$
  \text{CPI}_{\text{优化前}} = 50\% \times 1 + 20\% \times 2 + 20\% \times 2 + 10\% \times 2 = 0.5 \times 1 + 0.2 \times 2 + 0.2 \times 2 + 0.1 \times 2 = 1.5
  $$

- **优化后 CPI**  
  - A 类指令比例调整：  
    $$
    \text{A 类新比例} = \frac{50\% \times 50\%}{1 - 50\% \times 50\%} = \frac{25\%}{75\%} = 33.33\%
    $$  
  - 其他类指令比例调整：  
    $$
    \begin{align*}
    \text{B 类新比例} &= \frac{20\%}{75\%} = 26.67\% \\
    \text{C 类新比例} &= \frac{20\%}{75\%} = 26.67\% \\
    \text{D 类新比例} &= \frac{10\%}{75\%} = 13.33\%
    \end{align*}
    $$  
  - 优化后 CPI 计算：  
    $$
    \text{CPI}_{\text{优化后}} = 33.33\% \times 1 + 26.67\% \times 2 + 26.67\% \times 2 + 13.33\% \times 2 = \frac{1}{3} + \frac{8}{15} + \frac{8}{15} + \frac{4}{15} = \frac{25}{15} \approx 1.67
    $$

---

#### **(2) 优化前后的 MIPS 计算**
- **MIPS 公式**  
  $$
  \text{MIPS} = \frac{\text{主频（Hz）}}{\text{CPI}} \times 10^{-6}
  $$  
  主频为 50MHz = $5 \times 10^7$ Hz。

- **优化前 MIPS**  
  $$
  \text{MIPS}_{\text{优化前}} = \frac{5 \times 10^7}{1.5} \approx 3.333 \times 10^7 \quad \text{即} \quad 33.33 \text{ MIPS}
  $$

- **优化后 MIPS**  
  $$
  \text{MIPS}_{\text{优化后}} = \frac{5 \times 10^7}{1.67} \approx 2.994 \times 10^7 \quad \text{即} \quad 29.94 \text{ MIPS}
  $$

---

#### **(3) 优化前后的运行时间计算**
- **总指令数假设**  
  设优化前总指令数为 $N$，则优化后总指令数为：  
  $$
  N_{\text{优化后}} = N \times (1 - 50\% \times 50\%) = 0.75N
  $$

- **运行时间公式**  
  $$
  \text{运行时间} = \frac{\text{总指令数} \times \text{CPI}}{\text{主频}}
  $$

- **优化前运行时间**  
  $$
  \text{时间}_{\text{优化前}} = \frac{N \times 1.5}{5 \times 10^7} = \frac{1.5N}{5 \times 10^7}
  $$

- **优化后运行时间**  
  $$
  \text{时间}_{\text{优化后}} = \frac{0.75N \times 1.67}{5 \times 10^7} = \frac{1.2525N}{5 \times 10^7}
  $$

- **运行时间对比**  
  $$
  \frac{\text{时间}_{\text{优化后}}}{\text{时间}_{\text{优化前}}} = \frac{1.2525N / 5 \times 10^7}{1.5N / 5 \times 10^7} = \frac{1.2525}{1.5} \approx 0.835
  $$  
  即优化后运行时间约为优化前的 **83.5%**，性能提升。

---

### **最终答案**
| 指标         | 优化前  | 优化后  |
|--------------|--------|--------|
| **CPI**      | 1.5    | 1.67   |
| **MIPS**     | 33.33  | 29.94  |
| **运行时间** | $1.5N/5 \times 10^7$ | $1.2525N/5 \times 10^7$ |


### **28.** 某计算机按字节编址，其中已配置有 0000～7FFFF 的 ROM 区。现在用 16K×4 位的 RAM 芯片形成 32K×8 位的 RAM 存储区，CPU 地址线为 $A_{15} \sim A_0$。请回答下列问题：  
###   (1) RAM 区的地址范围是什么？共需多少个 RAM 芯片？地址线中哪一位用来区分 ROM 和 RAM 区？  
###   (2) 假定 CPU 地址线改为 24 根，地址范围 000000～007FFFF 为 ROM 区，剩下所有地址空间都用 16K×4 位的 RAM 芯片配置，则需要多少个 RAM 芯片？  



#### **(1) RAM 区的地址范围、芯片数量及地址线区分**
- **RAM 地址范围**  
  - 已知 ROM 区占 `0000H～7FFFFH`（16 位地址空间，共 64KB），对应低 32KB 空间。  
  - 剩余高 32KB 空间分配给 RAM，地址范围为 `8000H～FFFFH`。

- **RAM 芯片数量计算**  
  - 目标：构建 **32K×8 位** RAM 存储区。  
  - 单个芯片规格：**16K×4 位**。  
  - **位扩展**：需 2 片并联实现 8 位数据宽度（每片提供 4 位）。  
  - **字扩展**：需 2 组并联芯片覆盖 32K 地址空间（每组 16K）。  
  - **总芯片数**：$2 \text{（位扩展）} \times 2 \text{（字扩展）} = 4 \text{ 片}$。

- **ROM/RAM 区分地址线**  
  - 地址线最高位 $A_{15}$ 用于区分：  
    - $A_{15} = 0$：访问 ROM 区（`0000H～7FFFFH`）。  
    - $A_{15} = 1$：访问 RAM 区（`8000H～FFFFH`）。

---

#### **(2) 24 位地址线下的 RAM 芯片需求**
- **地址空间分析**  
  - 总地址空间：$2^{24} = 16\text{MB}$（`000000H～FFFFFFH`）。  
  - ROM 区：`000000H～007FFFFH`（占前 8MB）。  
  - 剩余 RAM 区：$16\text{MB} - 8\text{MB} = 8\text{MB}$（`0080000H～FFFFFFH`）。

- **芯片数量计算**  
  - 单个芯片容量：$16\text{K} \times 4\text{ 位} = 16 \times 1024 \times 4 = 65,536\text{ 位}$。  
  - RAM 区总容量：$8\text{MB} \times 8\text{ 位} = 8 \times 1024^2 \times 8 = 67,108,864\text{ 位}$。  
  - **芯片数量**：$\frac{67,108,864}{65,536} = 1024 \text{ 片}$。

---

### **最终答案**
| 问题部分        |     答案 |
|-------------------|----------------------------------------------------------------------|
| **(1) RAM 地址范围** | `8000H～FFFFH`                                                        |
| **RAM 芯片数量**    | 4 片（需位扩展 + 字扩展）                                              |
| **区分地址线**      | $A_{15}$（最高位地址线）                                            |
| **(2) RAM 芯片需求**| 1024 片（24 位地址空间下覆盖剩余 8MB）                                 |

---

## 第六部分 分析设计题  
> 本大题共2小题，每小题10分，共20分。  

### **29.** 假设 $R[ax] = FFFAH$，$R[bx] = FFF00H$，则执行 Intel 格式指令“add ax,bx”后，AX、BX 中的内容各是什么？标志寄存器 CF、OF、ZF、SF 各是多少？要求分别将操作数作为无符号整数和带符号整数来解释并验证指令执行结果。  

### 十六进制加法计算：FFA H + FFF00 H

#### **步骤解析**
1. **对齐数字位数**  
   - 将两数补齐为五位：`00FFA` + `FFF00`
   - 对应位对齐如下：
     ```
       00FFA
     + FFF00
     --------
     ```

2. **从右至左逐位相加（含进位）**  
   - **个位（16⁰）**：A(10) + 0 = **A**，进位0  
   - **十位（16¹）**：F(15) + 0 = **F**，进位0  
   - **百位（16²）**：F(15) + F(15) = 30 → 30 ÷ 16 = 1余14 → **E**，进位1  
   - **千位（16³）**：F(15) + F(15) + 进位1 = 31 → 31 ÷ 16 = 1余15 → **F**，进位1  
   - **万位（16⁴）**：0 + F(15) + 进位1 = 16 → 16 ÷ 16 = 1余0 → **0**，进位1  
   - **十万位（16⁵）**：进位1 → **1**

3. **合并结果**  
   - 从高位到低位：`1`（十万位） + `0`（万位） + `F`（千位） + `E`（百位） + `A`（个位）  
   - 最终结果：**100FEA H**

#### **验证（十进制转换）**
- **FFA H** = 15×256 + 15×16 + 10 = **4090**  
- **FFF00 H** = 15×65536 + 15×4096 + 15×256 = **1,048,320**  
- **和** = 4090 + 1,048,320 = **1,052,410**  
- **1,052,410 转十六进制**：  
  1,052,410 ÷ 16 → 余数序列：$A → F → E → 0 → 0 → 1 →$ **$100FEA H$**

#### **最终答案**

### ax=FFFAH,bx = 100FEA H


### **30.** 假定 cache 采用全相联方式，主存块大小为 64B，按字节编址。cache 数据区大小为 1KB，主存空间大小为 256KB。试回答下列问题：  
###   (1) 主存地址如何划分？  
###   (2) 说明 CPU 对主存单元 0240CH 的访问过程。  

计算机系统原理试题第3页(共3页)