《信息安全系统设计基础+Linux 内核分析》第一次学习总结
教材学习内容总结
学习了《庖丁解牛》的第一章。知道的概念有:
-
存储程序计算机 = 冯诺依曼计算机,主要思想是:将程序存放在计算机存储器中,然后按存储器中的程序的首地址来执行程序的第一条指令,接下来就是一步一步按照程序中的编写好的指令来一步一步执行,直至程序结束。
-
冯诺依曼体系结构的要点如下图。底层是:RAM,ROM,运算器(ALU),控制器,寄存器。 由图可知:寄存器是在CPU中的,而RAM,ROM不是在CPU中的,它们是内存。
。 -
CPU 像“贪吃蛇”一样,总是在内存里“吃”指令。
-
CPU、内存和I/O设备是通过总线连接的。内存中放着指令和数据。CPU负责解释和执行内存中的指令。
-
IA32 : Intel Architecture 32bit.
-
寄存器:ABCD是数据寄存器,这四个16位的寄存器可以分为两个独立的8位寄存器使用。E:32位;R:64位;X:128位。
-
64位中的增加的通用寄存器是可以用户随便使用的。
-
数据格式
- Word : 16 bit.
- Double Words : 32 bit. 4个Byte : l
- Quad Words : 64 bit.
-
寻找方式:找“对象” 的方法
- 寄存器寻址
- 立即寻址
- 直接寻址
- 间接寻址
- 变址寻址
-
栈:有书的那部分是栈。栈顶指针:Stack Pointer中是非空的。
- pushl 栈在增长
- popl 栈在收缩(减小)
-
指针、寄存器都是一个“小盒子”的“名称”,这个小盒子里放着“地址”(门牌号)。这个门牌号就是内存中的地址,地址里面“住着”一个一个的数据们。如下图所示:
-
下面的指令都是“复合”指令,而且最底层的“原材料”指令中有涉及到对堆栈指针(堆栈小盒子)的操作(更确切的说是操作了小盒子里的数据--地址)
- pushl : 由2条底层语句复合而成
- popl : 由2条底层语句复合而成
- call : 由3条底层语句复合而成,一个pushl 和一个 movel
- ret : 由2条底层语句复合而成,一个popl
- enter : 由3条底层语句复合而成,一个popl 和一个 movel
- leave : 由3条底层语句复合而成,一个pushl 和一个 movel
-
程序从main函数开始执行,即:main 标号(这个标号不算语句噢)下面的第一条语句。
-
通过函数调用堆栈框架,暂存了函数的上下文信息,整个程序的执行过程变成了一个指令流,从CPU 中“流”了一遍,最终栈空间又恢复到空栈的状态。
教材学习中的问题和解决过程
我觉得:应该把指针的指向放到中间比较好。因为:“门牌号”都是在房间门的正中央的。
代码调试中的问题和解决过程
没有敲很多代码,只是验证了一下自己的实验环境。
代码托管
无
上周考试错题总结
其他(感悟、思考等,可选)
好好学!
我发现,这门课好像和“深入理解计算机系统”这门课的联系很紧密?但是:这应该是两门课!可以同时进行吧。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:XX小时
-
实际学习时间:XX小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
- 庖丁解牛 Linux 内核分析。