2017-2018-1 20155226 《信息安全系统设计基础》第11周学习总结
教材学习内容总结
学习目标
- 理解虚拟存储器的概念和作用
- 理解地址翻译的概念
- 理解存储器映射
- 掌握动态存储器分配的方法
- 理解垃圾收集的概念
- 了解C语言中与存储器有关的错误
教材内容提炼
第2章 信息的表示和处理
- 一、概述
虚拟存储器的三个重要能力:
它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,高效的使用了主存
它为每个进程提供了一致的地址空间,从而简化了存储器管理
它保护了每个进程的地址空间不被其他进程破坏
虚拟存储器是中心的、强大的、危险的。
二、地址
1.物理和虚拟寻址
(1)物理寻址
主存被组织成一个由M个连续的字节大小的单元组成的数组,依次类推的寻址方式称为物理寻址。
(2)虚拟寻址
CPU生成一个虚拟地址(VA)来访问主存,在被传送到存储器之前先转换成适当的物理地址。地址翻译通过CPU芯片上的存储器管理单元完成。
2.地址空间
地址空间是一个非负整数地址的有序集合:{0,1,2,……}
(1)线性地址空间
地址空间中的整数是连续的。
(2)虚拟地址空间
CPU从一个有 N=2^n 个地址的地址空间中生成虚拟地址,这个地址空间成为称为虚拟地址空间。
(3)物理地址空间
与系统中的物理存储器的M个字节相对应。
(4)地址空间的大小
由表示最大地址所需要的位数来描述。
N=2^n:n位地址空间
主存中的每个字节都有一个选自虚拟地址空间的虚拟地址和一个选自物理地址空间的物理地址。
三、虚拟存储器
1.作为缓存的工具
虚拟存储器——虚拟页VP,每个虚拟页大小为P=2^平字节
物理存储器——物理页PP,也叫页帧,大小也为P字节。
任意时刻,虚拟页面的集合都被分为三个不相交的子集:
未分配的:VM系统还没分配/创建的页,不占用任何磁盘空间。
缓存的:当前缓存在物理存储器中的已分配页
未缓存的:没有缓存在物理存储器中的已分配页
(1)DRAM缓存的组织结构
不命中处罚很大
是全相联的——任何虚拟页都可以放在任何的物理页中。
替换算法精密
总是使用写回而不是直写。向零舍入
代码托管
上周考试错题总结
CH03
- 假设用ADD指令完成C表达式t=a+b的功能,有关条件码寄存器的说法正确的是()
A. 若t==0 ,则ZF=1
B. 若t<0, 则CF=1
C. 若t<0, 则SF=1
D. 若(a<0==b<0)&&(t<0 != a<0), 则OF=1
E. 若(a<0==b<0)&&(t<0 != a<0), 则CF=1
F. leaq指令不影响条件码寄存器
G. cmp指令不影响条件码寄存器
【错选】A B D G
【答案】A D F
【解析】参考课本p135
- 以下代码是将void decode1(long xp, long yp, long *zp)反汇编的结果,下面说法正确的是()
A. 从汇编代码看出,decode1的参数先入栈的是zp
B. 从汇编代码看出,decode1的参数先入栈的是xp
C. 函数功能等价于 t=x; x=y; y=z; z=t;
D. 函数功能等价于 x=y; y=z; z=x;
【错选】B C
【答案】C
- 对于图中内存地址和寄存器的值,下面说法正确的是()
A. %rax的值是0x100
B. (%rax)的值是0x100
C. (%rax)的值是0x104
D. (%rax)的值是0xFF
E. 4(%rax)的值是0xAB
F. (%rax,%rcx,4)的值是0xAB
G. (%rax,%rcx,4)的值是0x104
【错选】A D E
【答案】A D E F
【解析】参考课本p121
CH08
- 有关exec系列函数,下面说法正确的是()
A. 可以用char[][] 来传递argv
B. 进程调用了exec系列函数后,pid会变
C. 进程调用了exec系列函数后,代码会改变
D. system()和exec系列等价
E. exec系列函数中带e的要传入环境变量参数
F. exec系列函数中带v的要传入环境变量参数
【错选】A C E
【答案】C E
【解析】不能用char[][] 来传递argv,结尾的0(null)无法处理;system=fork+exec+wait;
- 有关wait类系统调用,说法正确的是()
A. wait(&status) 等价于waitpid(-1, &status, 0)
B. 父进程中执行waitpid, 等待集合中的所有子进程结束了才返回
C. 父进程中执行waitpid, 等待集合中的任一子进程结束了才返回
D. 子进程中的退出状态在wait的status参数返回
【错选】A B D
【答案】A C D
【解析】参考课本p516 517 518
- 有关fork(),下面说法正确的是()
A. 一次调用,两次返回
B. 子进程中,fork()返回子进程PID
C. 子进程可以读写父进程中打开的文件
D. 子进程和父进程的用户级虚拟地址空间相同但独立
【错选】A D
【答案】A C D
【解析】参考课本p514
- 关于代码 int main(){} 说法正确的是()
A. 返回值是0
B. 返回值不确定
C. 会调用exit(0)
D. 返回值大于0
E. 上面代码运行完,在命令行中运行echo $? 的值是0
【错选】A E
【答案】A C E
【解析】main中不调用exit,会补上exit(0)
- 用户进程可以通过()访问内核代码和数据
A. 特权指令
B. 系统调用
C. 模式位
D. 程序计数器
【错选】C
【答案】B
【解析】参考课本p510
- 进程上下文包括程序的( )
A. 代码和数据
B. 栈
C. 通用寄存器中的内容
D. 程序计数器
E. 环境变量
F. 打开的文件描述符的集合
【错选】B C D F
【答案】A B C D E F
【解析】参考课本p508
- Linux中,信号(Signal)是一种()异常控制流。
A. 硬件层
B. 操作系统层
C. 用户层
D. 网络层
【错选】B
【答案】C
【解析】参考课本p501
结对及互评
学习进度条
代码行数(新增积) | 博客量(新增积) | 学习时间(新增积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第11周 | 500/2500 | 2/2 | 20/20 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
- 计划学习时间:25小时
- 实际学习时间:20小时