-
Notifications
You must be signed in to change notification settings - Fork 0
/
课后练习.txt
56 lines (41 loc) · 3.53 KB
/
课后练习.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
第一章:计算机系统漫游
Q1.解释程序、进程和线程之间的区别和联系。
A:程序是代码的集合,在特定输入下执行操作。
进程是操作系统对一个正在运行的程序的一种抽象。
进程实际上由多个线程执行单元组成,多个线程可以提高进程运行的效率。
Q2.描述静态链接和动态链接的区别,并讨论它们的优缺点。
A:静态链接在编译期间通过链接器将程序中所有的库直接复制到可执行文件中。
动态链接在运行期间按名称将库复制到可执行文件中。这意味着操作系统只在程序运行时将必要的库加载到内存中。
静态链接占用空间多,更新困难,但运行速度快。
动态链接占用空间少,更新容易,但运行速度慢。
Q3.什么是虚拟内存?它的主要目的是什么?如何实现虚拟内存?
A:虚拟内存将主存和磁盘I/O空间组合使用,给进程提供比实际物理内存更大的可用空间。
同时,虚拟内存还提供了内存保护机制,防止进程越界访问和相互干扰。
程序中访问的内存地址不是物理内存地址,而是一个虚拟地址,然后由操作系统将这个虚拟地址映射到适当的物理内存地址上。
这样保证不同的程序最终访问的内存地址位于不同的区域,彼此没有重叠,就可以达到内存地址空间隔离的效果。
第二章:信息的表示和处理
Q1.解释无符号整数和补码整数的表示方法,并比较它们的差异。
A:无符号整数只能表示非负数,以八位举例,每一位从高到低表示数字2^7到2^0,表示的无符号数即为这八位之和。
补码整数可以表示负数,与无符号数不同的是,最高位前有符号,在八位中即-2^7.
Q2.如何使用位运算实现乘法和除法操作?
A:乘以2的k次幂即左移k位。
除以2的k次幂时:
无符号数——逻辑右移;
有符号数——负数先增加偏置α=(1<<k-1)=2^k-1后算数右移,达到结果向0舍入的结果。正数直接算数右移。
将乘数和除数分解为2的k次幂之和可以实现惩处任意数。
Q3.什么是浮点数表示法?解释规范化和非规范化浮点数的概念。
A:浮点数表示法使用第一位表示符号位,之后若干位表示阶码,再若干位表示小数部分的表示形式,
规范化浮点数阶码不等于0和2^7-1(以32位举例)
而非规范化浮点数阶码等于0
第三章:程序的机器级表示
Q1.解释指令集体系结构(ISA)的概念和作用。
A:指令集体系结构定义机器级程序的格式和行为,即每个机器码指令对应特定的操作。
它定义了处理器状态、指令的格式,以及每条指令对状态的影响。
Q2.什么是汇编语言?描述汇编语言和机器语言之间的关系。
A:汇编语言是一种低级语言,是晦涩难懂的二进制机器码转化成相对容易理解的形式。
汇编语言与机器语言紧密相连,与机器语言指令一一对应。
Q3.解释程序计数器(PC)和栈指针(SP)在程序执行过程中的作用。
A:程序计数器用于存储计算机接下来执行的指令在内存中的地址。
在一条指令被执行后指向下一个执行的指令地址,控制指令执行的顺序。
栈指针由独立寄存器保存,该指针指向栈顶的地址,用于管理程序运行时的栈。
通过栈指针的上下移动来保存或者释放数据,提供了临时数据和函数调用的存储空间。