20155336 2017-2018 1 《信息安全系统设计基础》第1周学习总结
- 一:操作系统的核心抽象有哪些?
- 二:无符号数的编码是什么?
- 三:栈帧结构是什么?
- 四:如何比较IA32和Y86的指令编码?
- 五:优化程序性能的技巧有哪些?
- 六:存储器是由哪些层次结构组成的?
- 七:链接器起到的功能是什么?
- 八:系统是如何处理遇到的突发状况?
- 九:储存器怎么管理最高效?
- 十:系统级的I\O和原来java中遇到的I\O有什么不同?
- 十一:如何编写客户端-服务器程序?
- 十二:三种不同的并发程序技术的区别?
第一第七章教材内容总结
第一章:
-
计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序;
-
信息就是位+上下文;
-
hello.c
--->hello.i
--->hello.s
--->hello.o
; -
了解编译系统的益处:
- 优化程序性能;
- 理解链接是出现的错误;
- 避免安全漏洞;
-
硬件:
- 总线:贯穿整个系统的一组电子管道。
- I/O设备:输入/输出设备。
- 内存:临时存储设备,用来存放程序和程序处理处理的数据。
- 处理器:中央处理单元,简称处理器。
-
只由ASCII字符构成的文件称为文本文件,所有其他文件都成为二进制文件
-
存储设备形成了层次的结构
从上之下,设备变得访问速度越来越慢,容量也越来越大,并且每字节造价也越来越低储存器结构的主要思想是一层上的存储器作为低一层存储器的高速缓存
-
进程是操作系统对一个正在运行的程序的一种抽象。需要运行的进程数是多于可以运行他们的cpu个数的。一个cpu看上去都像是在并发地执行多个进程,这是通过处理器在进程间切换来实现的。操作系统的这种交错机制称上下文交换。
-
处理器读取并解释存放在主存里的二进制指令
-
操作系统内核是应用程序和硬件之间的媒介。它提供三个基本的抽象:1)文件是对I/O设备的抽象;2)虚拟存储器是对主存和磁盘的抽象;3)进程是对处理器、主存和I/O设备的抽象。
-
网络提供了计算机系统之间通信的手段。从特殊系统的角度来看,网络就是一种I/O设备。
第七章:
- 链接可以在编译时由静态编译器来完成,也可以在加载时和运行时由动态链接器来完成。
- 链接处理器分为:1)可重定位的、2)可执行的、3)共享的
- 静态链接器是由像GCC这样的编译驱动器调用的。
- 多个目标文件可以被链接到一个单独的静态库中。
- 加载器将可执行文件的内容映射到存储器,并运行这个程序。
- 被编译为位置无关代码共享库可以加载到任何地方,也可以在运行时被多个进程共享,为了加载、链接和访问共享库的函数和数据,应用程序还可以在运行时使用动态链接。
教材学习中的问题和解决过程
-
问题1 what is GCC?
-
问题1 解决:
- GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统
- 预处理:
gcc –E hello.c –o hello.i;gcc –E
调用cpp - 编 译:
gcc –S hello.i –o hello.s;gcc –S
调用ccl - 汇 编:
gcc –c hello.s –o hello.o;gcc -c
调用as - 链 接:
gcc hello.o –o hello ;gcc -o
调用ld - 前三步,GCC的参数连起来是“ESc”,相应输入的文件的后缀是“iso”
- GCC常用选项:
c
只编不链,目标文件.oS
只编不汇,汇编代码E
只进行预编,不做任何处理g
在可执行程序中包含标准调试信息I dir
在头文件的搜索路径列表中添加dir目录
-
问题2 汇编到机械以及机械到汇编的转换?
-
问题2 解决:
-
gcc-c hello.s-s hello.o
汇编--->机械 -
objdump - d hello.o
机械--->汇编
-
-
问题3 符号和符号表是什么?
-
问题3解决:
- 程序编译的链接阶段,将函数和变量统称为符号;符号表是由汇编器构造的,使用编译器输出到汇编语言.s文件中的符号。
-
问题4 了解ELF头包含哪些信息?
-
问题4解决:(参考狄维佳的博客)
上周考试错题总结
- 无
结对学习
- 20155315
- 结对学习内容:
- 学习第1、7章
- 交流课堂学习内容
- 大致了解本学期实验
本周代码
老师,我电脑出现了一些问题,但是本周我在尝试训练编译了一些简单的代码如下
(1)vi hello.c
#include<stdio.h>
main()
{
printf("Hello");
}
gcc hello.c
ls
a.out hello.c
之后就会出现结果
./out
Hello!
(2)预处理:
ls
./out hello.c hello.o
gcc-E hello.c -o hello.o
vi hello.i
(3)编译
gcc-S hello.i -o hello.s
ls
a.out hello.c hello.i hello.s
vi hello.s
(4)汇编
gcc - c hello.s - o hello.o
ls
hello.c hello.i hello.o hello.s
vi hello.o
我会尽快修复好电脑,完成代码上传,望老师见谅!
其他(感悟、思考等,可选)
这学期相比上学期,能够更多的跟着老师在课堂上学习。而且老师也改变了教学方式,从原先的一周一篇博客到现在的两篇博客,减轻了我们的压力。看着如此如此厚的一本书,我倍感焦急,不知道能够从中习得多少知识,能够掌握多少知识,希望这学期能够把书本从厚学薄再学厚,先从中精炼然后自己再拓展,让自己能够充分理解。加油!
学习进度条
| | 代码行数(新增/累积)| 博客量(新增/累积)|学习时间(新增/累积)|重要成长|
| ----- | :---------😐:------😐:----------: |
| 目标 | 5000行 | 30篇 | 400小时 | |
| 第一周 | 40/40 | 1/1 | 15/15 | |