2017-2018-1 20155315 《信息安全系统设计基础》第1周学习总结
2017-09-24 17:40
579 查看
2017-2018-1 20155315 《信息安全系统设计基础》第1周学习总结
每章一个问题
第1章:我们输入的命令,计算机是如何将其转换为计算机的语言?第2章:计算机在计算的过程中产生溢出要如何保证计算的精确度?
第3章:及时编译的时候,如果输错了命令只能从头开始吗?有其他的办法吗?
第4章: 处理器是如何跟踪每一条命令的?又是如何分配每一条命令的空间的?
第5章:既然程序可以分块,那么,模块被其他程序调用修改值的时候,是不是会有专门的区域存储修改的值?
第6章:一个程序只要满足了高速缓存是不是就可以称作是高效率的程序呢?
第7章:链接器在使用的时候有什么限制吗?
第8章:fork函数与之前java中的catch有什么区别?
第9章:虚拟内存与动态分配的malloc有冲突吗?两者是什么关系?
第10章:Unix I/O与标准I/O函数之间的关系是什么?两者要如何互换?
第11章:linux下的网络编程有什么优势?
第12章:线程化的程序中如何找到最适合最高效的函数?
教材学习内容总结
Linux快捷键复习
Ctrl+Alt+T打开新窗口
Ctrl+Shift+T打开新的标签页
Ctrl+Shift+Q关闭当前窗口
Ctrl+Shift+w关闭当前标签页
Ctrl+空格切换输入法
位+上下文
源程序是由0和1组成的位(bit)序列。8个位被组织成一组,称为字节。
16个位称为字
程序的生命周期(gcc)
用vi编辑程序,编译,运行编译
运行
预处理
编译
汇编
链接:用链接器将函数链接到程序
硬件组成
总线:贯穿整个系统,相当于各字节间的连接,总线上有接口,每次只传送1个字。I/O设备:输入与输出相当于计算机与外界沟通的桥梁
键盘
鼠标
显示器
磁盘
主存:存储程序和程序处理的数据,由一组动态随机存取存储器芯片组成。
处理器:中央处理单元,相当于计算机的大脑,不断处理接收到的指令,维持计算机的运行。
存储设备的层次结构
从上至下,设备的访问速度越来越慢,容量越来越大。高一层的存储器将作为低一层存储器存储器的高速缓存。进程、线程、文件、并发、并行
一个系统上可以有多个进程一个进程可以由多个线程组成
多线程比单线程更高效
进程就像是线程上的单元,而线程就是解决每个程序的控制流。
文件就是字节序列,I/O设备包括磁盘、键盘、显示器甚至网络
并发:一个同时具有多个活动的系统。
并行:用并发使一个系统运行得更快。
三个抽象
文件是对I/O的抽象虚拟存储器是对程序存储器的抽象
进程是对一个正在运行的程序的抽象
链接
相当于一个整合,将各部分整合成一个单一的可执行的文件。符号解析,将每一个定义与引用联系起来
重定位,把定义与位置联系起来,修改引用后指向新的位置实现重定位。
目标文件就是字节块的集合
可重定位的
可执行的
共享的:可以被动态地加载并链接
符号和符号表
目标模块定义的可被其他模块引用的全局符号其他模块定义的可被目标模块引用的全局符号(外部符号)
目标模块定义的只可被目标模块引用的本地符号
教材学习中的问题和解决过程
问题1:链接器如何解析多重定义的全局符号?但是,链接器是如何筛选不同定义的全局变量呢?全局变量不是不变的吗?问题1解决方案:看了书上的解释,我知道了“符号”就像是我们熟知的变量和函数一样。全局符号就相当于动态变量,本地符号就相当于本地的静态变量。
根据强弱符号的定义,Unix链接器使用下面的规则来处理多重定义的符号:
1)不允许有多个强符号
2)如果有一个强符号和多个弱符号,那么选择强符号
3)如果有多个弱符号,那么从这些弱符号中选择任意一个
没有定义的全局变量就是弱符号,强符号被定义了多次就会出现错误。如果是同一个符号但有强有弱,链接器就会自动选择模块中的强符号。
代码调试中的问题和解决过程
问题1:将程序进行预处理问题1解决方案:在gcc中,
gcc -o用来指定输出文件的文件名。输入
gcc -E hello.c -o hello.i,结果正确。
代码托管
(statistics.sh脚本的运行结果截图)上周考试错题总结
暂无结对及互评
暂无其他(感悟、思考等,可选)
一个暑假过去了,发现自己好多虚拟机的操作都不像之前那么熟练了。感觉还是得多练,要多敲代码才能更好地学习。这一周学习了第一章和第七章,前面的内容掌握得差不多了,但是,第七章的链接还不是很理解,后续会继续学习。然后自己敲了一些C语言的小程序,对用vim写代码也熟练了一点。学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 37/37 | 1/1 | 25/25 |
实际学习时间:25小时
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
《深入理解计算机系统V3》学习指导举例讲解C语言链接器的符号解析机制
ELF(六)符号解析,此大多摘自深入理解操作系统
gcc命令
相关文章推荐
- 2017-2018-1 20155324 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155207 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 学号20155329 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155226《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155318 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155315 《信息安全系统设计基础》第13周学习总结
- 2017-2018-1 20155215 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155211 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155304 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155316 《信息安全系统设计基础》第1周学习总结
- 20155214 2017-2018-1 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155308 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155338 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155332 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155314 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155315 《信息安全系统设计基础》第6周学习总结
- 20155326 2017-2018-1 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155232 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155331 《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155231 《信息安全系统设计基础》第1周学习总结