20145307《信息安全系统设计基础》课程总结
20145307《信息安全系统设计基础》课程总结
每周作业链接汇总
- 第0周
浏览课本内容,结合每一章提出自己想知道的问题,安装虚拟机。
- 第一周
了解Linux操作系统,掌握核心的Linux命令,实验楼实验学习。
- 第二周
教材第一章、第七章内容,学习vim编辑器,熟悉gcc编译器,gdb调试技术,makefile基本原理及语法,静态库和动态库的生成与调用方法,实验楼实验学习。
- 第三周
教材第二章内容,理解二进制在计算机中的重要地位,掌握布尔运算在C语言中的应用,理解有符号整数、无符号整数、浮点数的表示,理解补码的重要性,进一步理解“信息=位+上下文”,实验楼实验学习。
- 第四周
无
- 第五周
教材第三章内容,理解逆向的概念,掌握X86汇编基础,能够阅读(反)汇编代码,了解ISA(指令集体系结构),理解函数调用栈帧的概念,并能用GDB进行调试,实验楼实验。
- 第六周
教材第四章内容,了解ISA抽象的作用,掌握ISA,并能举一反三学习其他体系结构,了解流水线和实现方式,实验楼实验。
20145307《信息安全系统设计基础》第六周学习总结
- 第七周
教材第六章内容,了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等),理解局部性原理,理解缓存思想,理解局部性原理和缓存思想在存储层次结构中的应用,高速缓存的原理和应用,实验楼实验。
- 第八周
复习Linux常用命令,复习教材1-7章,期中总结。
- 第九周
附录A,教材第10章内容,掌握系统编程和系统调用的概念,掌握系统编程错误处理的方式,掌握Unix/Linux系统级I/O : open close read write seek stat,掌握RIO,掌握I/O重定向的方法。
- 第十周
代码学习。
- 第十一周
教材第八章《异常控制流》,第十章《系统级I/O》了解异常及其种类,理解进程和并发的概念,掌握进程创建和控制的系统调用及函数使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv,理解数组指针、指针数组、函数指针、指针函数的区别,理解信号机制:kill,alarm,signal,sigaction,掌握管道和I/O重定向:pipe, dup, dup2。
- 第十二周
第九周代码检查,第十周代码检查,第十一周代码检查,视频资料学习。
- 第十三周
教材第十一章《网络编程》,教材第十二章《并发编程》内容学习,掌握三种并发的方式:进程、线程、I/O多路复用,掌握线程控制及相关系统调用,掌握线程同步互斥及相关系统调用。
- 第十四周
教材第九章《虚拟存储器》学习,理解虚拟存储器的概念和作用,理解地址翻译的概念,理解存储器映射,掌握动态存储器分配的方法,理解垃圾收集的概念,了解C语言中与存储器有关的错误。
实验报告链接汇总
- 实验一
- 开发环境的熟悉
熟悉 linux 开发环境,学会基于 S3C2410 的 linux 开发环境的配置和使用,使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程,正确使用连接线等实验仪器,并注意保护实验箱。实验结束之后将实验箱送回。
20145307 《信息安全系统设计基础》实验一 开发环境的熟悉
- 实验二
- 固件设计
熟悉 linux 开发环境,学会基于 S3C2410 的 linux 开发环境的配置和使用,使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程,正确使用连接线等实验仪器,并注意保护实验箱。实验结束之后将实验箱送回。
- 实验三
- 实时系统的移植
根据实验指导书进行实时软件的安装,尝试配置实验环境,并学会对软件进行测试。
20145307 《信息安全系统设计基础》实验三 实时系统的移植
- 实验四
- 驱动程序设计
了解在 UP-TECH S2410/P270 DVP 平台上实现触摸屏 Linux 驱动程序的基本原理,了解 Linux 驱动开发的基本过程,以一个简单字符设备驱动程序为原型,剖析其基本结构。进行部分改写之后并编译实现其相应功能。
20145307《信息安全系统设计基础》实验四 驱动程序设计
- 实验五
- 网络通信
掌握在 ARM 开发板实现一个简单 WEB 服务器的过程 ,学习在 ARM 开发板上的 SOCKET 网络编程 ,学习 Linux 下的 signal()函数的使用。
代码量汇总
- 代码驱动的学习做到没有?
每次的学习,每周都有一点点的进步,但还有很多地方需要继续学习,继续用正确的方法去钻研。
- 加点代码,改点代码是理解的最好方式,谈谈你的心得
变成是门艺术,我认为真正搞懂代码是能够在代码的基础上进行增加功能或者进行完善才算真的理解了每一段代码每一段void的功能。
- 回答一下第0周作业中自己提出的问题?
1.从源文件到目标文件的转化,编译驱动程序是如何完成的?以hello.c为例
过程是由编译器完成的,gcc的编译器驱动程序读取源文件hello.c,并把它翻译成一个可执行目标文件hello,这个过程是分为四个阶段完成的
预处理阶段:将.c 文件转化成 .i文件,使用的gcc命令是:gcc –E,对应于预处理命令cpp;
编译阶段:将.c/.h文件转换成.s文件,使用的gcc命令是:gcc –S,对应于编译命令 cc –S;
汇编阶段:将.s 文件转化成 .o文件,使用的gcc 命令是:gcc –c,对应于汇编命令是 as;
链接阶段:将.o文件转化成可执行程序,使用的gcc 命令是: gcc,对应于链接命令是 ld;
2.各种进制及编码的转换及运算
进制转化:
x=2^n转化为十六进制
将x写成x=2n的形式,令n=i+4j,x的十六进制表示为:开头为2i的值,后面补j个0。
十进制转化为十六进制
十进制数x反复除以16,得十六进制数
十六进制转化为十进制
十六进制数x反复乘以16,得十进制数
3.程序机器级代码的格式及指令的规范
gcc -01 -o p p1.c
-01 表示使用第一级优化。优化的级别与编译时间和最终产生代码的形式都有关系,一般认为第二级优化-02 是较好的选择。
-o 表示将p1.c编译后的可执行文件命名为p
4.处理器的设计及体系结构
指令体系结构:一个处理器支持的指令和指令的字节级编码
5.优化编译器的功能
表示程序性能,消除循环的低效率,消除不必要的存储器引用。
6.存储器的层次结构
存储器系统是一个具有不同容量、成本和访问时间的存储器设备的层次结构。
随机访问存储器层次结构:硬件和软件的这些基本属性(存储技术、计算机软件)互相补充得很完美,这种互相补充的性质使人想到一种组织存储器系统的方法。
高速缓存存储器层次结构只有三层:CPU寄存器、DRAM主存储器和磁盘存储。
7.Unix中理解和处理目标文件的工具
AR :创建静态库,插入、删除、列出和提取成员。
STRINGS :列出目标文件中所有可以打印的字符串。
STRIP :从目标文件中删除符号表信息。
NM :列出目标文件符号表中定义的符号。
SIZE :列出目标文件中节的名字和大小。
READELF :显示一个目标文件的完整结构,包括ELF 头中编码的所有信息。
OBJDUMP :显示目标文件的所有信息,最有用的功能是反汇编.text节中的二进制指令。
LDD :列出可执行文件在运行时需要的共享库。
8.异常处理的方式
异常的一部分由硬件实现,一部分由操作系统实现,它就是控制流中的突变,用来响应处理器状态的某些变化。注意和语言中的应用级的异常概念区分。
处理器中,状态被编码为不同的位和信号,状态变化被称为事件,事件不一定和当前指令的执行有关。处理器检测到有事件发生时,会通过异常表进行间接过程调用,到一个专门设计处理事件的操作系统子程序,称为异常处理程序。
异常处理程序完成处理后,根据异常事件的类型会(执行一种):
将控制返回给当前指令(事件发生时正在执行的)。
将控制返回给下一条指令(没有异常将会执行的)。
终止被中断的程序。
异常表是一张跳转表,表目k包含异常k的处理程序的地址,在系统启动时由操作系统分配和初始化。系统中每种可能的异常都分配了一个唯一的非负整数的异常号。
9.虚拟存储器的功能
虚拟存储器3个重要的能力:
(1)将主存看作是一个存储在磁盘上的地址空间的高速缓存,在主存中只保护活动的区域,并根据需要在磁盘和主存之间来回传送数据
(2)为每个进程提供了一致的地址空间,从而简化了存储器管理
(3)保护了每个进程的地址空间不被其它进程破坏。
10.如何检索文件夹的相关信息
ls -l
11.客户端-服务器编程模型的基本操作
一个应用是由一个服务器进程和一个或多个客户端进程组成。
12.并发现象的功能
访问慢速I/O设备,与人交互,通过推迟工作以降低延迟,服务多个网络客户端,在多个机器上进行并行计算。
- 你有什么项目被加分,谈谈你的经验
三篇openssl总结博客
GBD调试
y86模拟器安装教程
优秀博客
- 扇贝背单词(对四六级有没有影响?)
没有按时打卡很遗憾,但是背单词肯定是对四六级有影响的,毋庸置疑
- 优缺点
优点:养成的自学的学习习惯,在课堂上老师为同学们解答问题,这种方式是值得提倡的,自己也会将这种方法应用到其他科目上。
缺点:有的应用太占用系统资源,比如64位的linux占用了2G内存,让有的程序直接crash
- 建议
每次实验进行一下提前的讲解,每次实验开始都是一头雾水,要是有一个好的引导的话,做的时候一定更快。
- 课程收获与不足
深入理解了计算机系统,掌握了多种信息的表示和处理方法,结合了上学期的汇编知识,学习到了更多东西
- 自己的收获(投入,效率,效果等)
更多学到的是动手能力吧,我更喜欢实验多一些,还是很好玩的,遇到问题如何解决,解决后的喜悦不言而喻。
- 自己需要改进的地方
更改代码的数量还是很少,光看懂是不够的,我觉得在原文的基础上能够进行增添修改才是看懂了代码
- 如果有结对,写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
结对实验时,两人合作会进行的更快,一个人来读步骤,另一人操作,效率十分的高,遇到问题一起思考,思维火花的碰撞很刺激
- 给学弟学妹们的学习建议
养成良好的学习习惯很重要,之后就是努力了。
- 如果重新学习这门课,怎么做才可以学的更好
多写代码,疯狂写代码,疯狂改代码。
- 问卷调查
你平均每周投入到本课程多长时间?
10 hours
每周的学习效率有提高吗?
后期效率明显提高了一些
学习效果自己满意吗?
还行还行,可以更好的,还有很大进步空间
课程结束后会继续一周至少一篇博客吗?
不会了,但我肯定会继续做喜欢的安全性实验
你觉得这门课老师应该继续做哪一件事情?
每周测试和写博客很好,博客相当于学习笔记,能够帮我们记录学习时遇到的问题,小组也提供了一个平台让同学们随时交流问题
你觉得这门课老师应该停止做哪一件事情?
暂无
你觉得这门课老师应该开始做什么新的事情?
用git传代码,交作业
本文链接和二维码