2017-2018-1 20155202 《信息安全系统设计基础》第9周学习总结
第6章 存储器层次结构
教材学习内容总结
随机访问存储器(Random-AccessMem)分为两类:静态的和动态的。
- 静态RAM (SRAM)比动态RAM(DRAM)更快,但也贵得多。SRAM用来作为高速缓存存储器,既可以在CPU芯片上,也可以在片下。
静态存储器
SRAM将每个位存储在一个双稳态的(bitable)存储器单元里。每个单元是用一个六晶体管电路来实现的。 - 动态RAM
DRAM将每个位存储为对一个电容的充电。这个电容非常小,通常只有大约30毫微微法拉 (femtofarad)——30*10^15法拉。不过,回想一下法拉是一个非常大的计量单位。DRAM存储 器可以制造得非常密集——每个单元由一个电容和一个访问晶体管组成。
区别:
- 只要有电,SRAM就会保持不变,而DRAM需要不断刷新;
- SRAM比DRAM快;
- SRAM对光和电噪声等干扰不敏感;
存储器层次结构总览
访问主存
- 读事务:从主存传送数据到CPU
- 写事务:从CPU传送数据到主存
- 总线:一组并行的导线,能携带地址、数据和控制信号。
- 系统总线:连接总线接口和I/O桥
- 存储器总线:连接I/O桥和主存
访问磁盘:
- 在磁盘控制器接收到CPU的读命令后,它将逻辑号翻译成一个扇区地址,读该扇区的内容,然后将这些内容直接传送到主存,不需要CPU的干涉,这个过程称为直接存储器传送(Direct Memory Access, DMA),这种数据传送称为DMA传送。
局部性
- 一个编写良好的计算机程序常常具有良好的局部性(locality)。也就是说,它们倾向于引用 邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。这种倾向性,被称为 局部性原理(principle of locality),是一个持久的概念,对硬件和软件系统的设计和性能都有着 极大的影响。
- 局部性通常有两种不同的形式:时间局部性(temporal locality)和空间局部性(spatial locality)。在一个具有良好时间局部性的程序中,被引用过一次的存储器位置很可能在不远的将来再被多次引用。在一个具有良好空间局部性的程序中,如果一个存储器位置被引用了一次,那 么程序很可能在不远的将来引用附近的一个存储器位置。
局部性小结: 量化评价一个程序中局部性的简单原则:
- 重复引用同一个变量的程序有良好的时间局部性。
- 对于具有步长为t的引用模式的程序,步长越小,空间局部性越好。具有步长为1的引 用模式的程序有很好的空间局部性。在存储器中以大步长跳来跳去的程序空间局部性会很差。
- 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
磁盘存储
- 磁盘是由盘片(platter)构成的。每个盘片有两面或者称为表面(surface),表面覆盖着磁性记录材料。盘片中央有一个可以旋转的主轴(spindle),它使得盘片以固定的旋转速率 (rotational rate)旋转,通常是 5400〜15000 转每分钟(Revolution Per Minute, RPM)0磁盘通常包含一个或多个这样的盘片,并封装在一个密封的容器内。
- 一个典型的磁盘表面的结构。每个表面是由一组称为磁道(track)的同心圆组成的。每个磁道被划分为一组扇区(sector)。每个扇区包含相等数量的数据位(通常是512字 节),这些数据编码在扇区上的磁性材料中。扇区之间由一些间隙(gap)分隔开,这些间隙中不存储数据位。间隙存储用来标识扇区的格式化位。
磁盘构造:
-
磁盘由盘片构成,表面覆盖着磁性记录材料,中央有一个可以旋转的主轴 ,旋转速率大约为5400-15000每分钟。磁盘的每个表面是一组称为磁道的同心圆组成,每个磁道被划分为一组扇区,扇区之间由一些间隙隔开,间隙存储用来标识扇区的格式化位。
-
磁盘容量由以下技术因素决定:
-
记录密度(位/英寸):磁道一英寸的段中可以放入的位数。
-
磁道密度(道/英寸):从盘片中心出发半径上一英寸的段内可以有的磁道数
-
面密度(位/平方英寸):记录密度与磁道密度的乘积。
关于磁盘的补充讲解
总的来说,磁盘结构包括:盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等。一般一个磁盘就一个主轴。 一般每个扇区的大小为512B
代码调试中的问题和解决过程
linux下pwd命令的编写
PWD我的博客链接
pwd命令含义:在Linux层次结构中,想要知道当前所处的目录,可以用pwd命令,该命令显示整个路径名。
语法:
pwd [ -L | -P ]
描述
- pwd 命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用 /(斜线)分隔。第一个 / 表示根目录,最后一个目录是当前目录。
标志
- L
如果 PWD 环境变量包含了不包含文件名 .(点)或 ..(点点)的当前目录的绝对路径名,则显示 PWD 环境变量的值。否则,-L 标志与 -P 标志一样运行。
- P
显示当前目录的绝对路径名。与 -P 标志一起显示的绝对路径不包含在路径名的绝对路径中涉及到符号链接类型的文件的名称。
- 退出状态
该命令返回以下出口值:
0 成功完成。
>0 发生错误。
pwd的实现:
- pwd以绝对路径打印当前的工作目录。因为整个系统的文件组织是树形的,所以,可以从当前目录逐层向根目录进行查找,当找到根目录,即可得到完全路径。
1.如何逐层查找?
- 系统通过inode节点来管理文件,所以每个文件会有一个inode号。目录是比较特殊的文件,通过<inode, name>的列表组织目录下的文件。每个目录下有两个特殊的文件名".", "..",分别表示当前目录和父目录。
2.如何知道到了根目录?
- 到达根目录说明没有父目录了,但是".", ".."还是存在于根目录,只是其inode号是相同的。
3.如何打破文件系统的限制,形成完整的绝对路径?
- 查看系统所有的挂载路径,将所有挂载路径和上面求得的路径拼接起来,如果是合法路径且inode号与最初目录的inode号相同,即是想要的最终的路径。
目录的存储结构
-
每个目录下都至少有两个内容‘.’和’..’,其中‘.’代表当前目录,’..’代表上级目录。每个目录或文件都有对应的i-节点号,根目录的‘.’和’..’相同,所以i-节点号相同。通过命令’ls -1ia’(数字1,不是字母l)可以查看当前目录下的文件名和对应的i-节点号。
-
利用
ls -1ia查看i节点
-
运行结果
代码托管
其他(感悟、思考等,可选)
学习了存储器层次结构让我知道了原来硬盘是那么脆弱,结构如此复杂,怪不得电脑要轻拿轻放,cpu通过I/O总线访问主存和硬盘使我对系统内部程序和硬件之间的交互学习理解又加深了一步。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第9周 | 200/200 | 13/13 | 10/10 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:10小时
-
- 实际学习时间:10小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)