2017-2018-1 20155214 《信息安全系统设计基础》课程学习总结

2017-2018-1 20155214 《信息安全系统设计基础》课程学习总结

目录

  1. 每周作业汇总
  2. 课程学习感悟和思考
  3. 代码托管
  4. 课程收获与不足
  5. 给开学初的你和学弟学妹们的学习建议
  6. 问卷调查
  7. 关于本文

每周作业汇总

第1周学习总结

  • 简介
  1. 掌握静态库和动态库的生成与调用方法
  2. 了解链接的概念
  • 相关博客二维码

第3周学习总结

  • 简介
  1. 理解二进制在计算机中的重要地位
  2. 掌握布尔运算在C语言中的应用
  3. 理解有符号整数、无符号整数、浮点数的表示
  4. 理解补码的重要性
  5. 进一步理解“信息=位+上下文”
  6. 熟悉makefile基本原理及语法规范
  • 相关博客二维码

第4周学习总结

  • 简介
  1. 用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名
  2. 查询及阅读源码技巧
  • 相关博客二维码

第5周学习总结

  • 简介
  1. 理解逆向的概念
  2. 掌握X86汇编基础,能够阅读(反)汇编代码
  3. 了解ISA(指令集体系结构)
  4. 理解函数调用栈帧的概念,并能用GDB进行调试
  • 相关博客二维码

第6周学习总结

  • 简介
  1. 了解异常及其种类
  2. 理解进程和并发的概念
  3. 掌握进程创建和控制的系统调用及函数使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv,
  4. 理解数组指针、指针数组、函数指针、指针函数的区别
  5. 理解信号机制:kill,alarm,signal,sigaction
  6. 掌握管道和I/O重定向:pipe, dup, dup2
  • 相关博客二维码

第7周学习总结

  • 简介
    1.了解ISA抽象的作用
  1. 掌握ISA,并能举一反三学习其他体系结构
  2. 了解流水线和实现方式
  • 相关博客二维码

第8周学习总结

  • 简介
  1. 掌握三种并发的方式:进程、线程、I/O多路复用
  2. 掌握线程控制及相关系统调用
  3. 掌握线程同步互斥及相关系统调用
  • 相关博客二维码

第9周学习总结

  • 简介
  1. 了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)
  2. 理解局部性原理
  3. 理解缓存思想
  4. 理解局部性原理和缓存思想在存储层次结构中的应用
  5. 高速缓存的原理和应用
  • 相关博客二维码

第11周学习总结

  • 简介
  1. 理解虚拟存储器的概念和作用
  2. 理解地址翻译的概念
  3. 理解存储器映射
  4. 掌握动态存储器分配的方法
  5. 理解垃圾收集的概念
  6. 了解C语言中与存储器有关的错误
  • 相关博客二维码

第13周学习总结

  • 简介
  1. 本章主要学习网络编程,重点研究 客户端-服务器编程模型 。
  2. socket服务器和客户端搭建
  3. daytime服务器
  4. echo服务器
  5. wc服务器
  6. 服务器迭代
  7. 服务器并发
  8. 服务器文件简单加密
  • 相关博客二维码

第14周学习总结

  • 简介
  1. 我们描述许多提高代码性能的技术。理想的情况是编译器能够接受我们编写的任何代码并产生尽可能高效的、具有指定行为的机器级程序
  2. 现代编译器采用了复杂的分析和优化方式而且变得越来越好,然而即使是最好的编译器也受到了妨碍优化因素的阻碍。程序员必须编写容易优化的代码,帮助编译器。
  • 相关博客二维码

实验报告链接汇总

实验一 开发环境的熟悉

  • 简介
  1. 建立实验目录"mkdir linux_组员1学号_组员2学号"。
  2. 在实验目录中编写“hello word”程序,另外补充几行打印所有组员的学号姓名。
  3. 分别用gcc和交叉编译器arm-none-linux-gnuenbi-gcc编译hello.c,用gcc编译的可执行文件命名linuxhello:gcc hello.c -o linuxhello; 用arm-none-linux-gnuenbi-gcc编译的命名为armhello: /usr/local/toolchain/toolchain4.3.2/bin/arm-none-linux-gnuenbi-gcc hello.c -o armhello。
  4. 分别运行linuxhello,armhello。
  • 相关博客二维码

实验二 固件程序设计

  • 简介
  1. 注意不经老师允许不准烧写自己修改的代码
  2. 两人(个别三人)一组
  3. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM)
  4. 提交破解程序中产生LIC的截图
  5. 提交破解成功的截图
  • 相关博客二维码

实验三 实时系统

  • 简介
  1. 学习使用Linux命令wc(1)
  2. 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端
  3. 客户端传一个文本文件给服务器
  4. 服务器返加文本文件中的单词数
  5. 使用多线程实现wc服务器并使用同步互斥机制保证计数正确
  6. 上方提交代码
  7. 下方提交测试
  8. 对比单线程版本的性能,并分析原因
  9. 交叉编译多线程版本服务器并部署到实验箱中
  10. PC机作客户端测试wc服务器
  • 相关博客二维码

实验四 外设驱动程序设计

  • 简介
  1. 学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章
  2. 提交康奈尔笔记的照片(可以多张)
  3. 在Ubuntu完成资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章的test试验
  4. 提交编译,加载模块,卸载模块,测试运行的截图(要多张,全屏,体现学号信息)
  • 相关博客二维码

实验五 通讯协议设计

  • 简介
  1. 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的作业
  2. 在Ubuntu中实现对实验二中的“wc服务器”通过混合密码系统进行防护
  3. 运行实验箱中,ARM调用Z32算法的实验,提交实验截图.用Z32的国密算法重新改写“wc服务器”的混合密码系统防护
  • 相关博客二维码

其他(感悟、思考)

这学期倏忽间就过去了,《信息安全系统设计基础》这门课让我学到了很多。CSAPP是一本很好的教材,值得反复阅读。即使是浅尝辄止,也已经让我受益匪浅。

在学习这条道路上,惰性总会让我们偏安一隅。学习新技术,用逻辑语言将所学所得表述出来是一件不简单的事。这也是博客的难点之一。但一旦跨出了限制自身的区域。知识又是无穷无尽,寻找到自己的源动力应该是学习的根本。

vim学习,git版本控制,gdb调试,查看man文档,这些都是基础技能。当我们扎稳篱笆,其他知识的学习就像是填白。

代码托管

  • besti155214

https://gitee.com/besti155214/BESTI.IS.ISSDB.20155214

  • 码云链接二维码

整体评价一下第1周作业中自己提出的问题是不是抓住了学习重点

第1周作业中提出的问题比较偏向框架概念,抓住了学习重点。

回答一下第1周作业中自己提出的问题

  • 问题1:Unix和Linux之间的区别?

    解决方案:通过搜索引擎初步了解,Unix侧重商业版,由封闭团队开发,注重对现有BSD做修改以适合80386系统。Linux作为免费软件,开放开发,使用类Unix内核的Minix作为模板研发,提供完整的Unix接口。

  • 问题2:命令行和shell,虚拟终端Terminal的联系?

    解决方案:shell解读并执行处理命令行,实行人机交互,执行脚本等。Terminal作为虚拟终端为shell提供命令行用户界面。

  • 问题3:如何理解“每个I/O设备,包括磁盘、键盘、显示器,甚至是网络都可以视作文件(字节序列)?

    解决方案:将Linux中的事物阐释为字节流,文件是对I/O的抽象,那么所有的输入输出都可以通过相同的Linux工具进行读写。主要分为普通文件特殊文件目录文件

  • 问题4:并发和超线程的区别?

    解决方案:当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。采用超线程即是可在同一时间里,应用程序可以使用芯片的不同部分,可以使芯片在任一时刻同时进行不冲突的多线程处理,使芯片性能得到提升。

  • 问题5:重定位和重定向的区别?

    解决方案:通过链接器将符号引用指向新生成的对应存储器,称为重定位数据节。重定向通过管道将父进程的标准输入与子进程的标准输出相连接。

你有什么项目被加分,谈谈你的经验

优秀作业(给出链接和二维码)

第4周学习总结

  • 相关博客二维码

你有什么项目被扣分,谈谈你的教训

本项无。

课程收获与不足

自己的收获(投入,效率,效果等)

操作系统的框架有了深入理解,对C语言实现流程更加清楚了。

自己需要改进的地方

个人在文档编辑,PPT制作方面亟需提升,还需要对代码的牢固性进行完善。

如果有结对,写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议

结对同学在进行试验箱操作时,对我的动手能力有很大帮助。

给开学初的你和学弟学妹们的学习建议

如果重新学习这门课,怎么做才可以学的更好

深入学习确实是一件很累的事情,特别是在挖掘自己的思维亮点这件事上,不必强求,但也不要因为惰性而限制自己的能力。

课程学习中学到的很多工具对当前,或是日后的学习工作都很有帮助,一定要好好掌握。

问卷调查

  • 你平均每周投入到本课程多长时间?

    教材学习4个小时,代码实现6个小时,博客撰写4个小时。

  • 每周的学习效率有提高吗?

    在熟悉学习流程的基础下,学习效率略有提高,但相比上学期,有创造性的想法减少了。

  • 学习效果自己满意吗?课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)

    主动写专业博客的话会有压力。或许日志和学习博客穿插会比较好些。任课老师对博客的看法也会有影响。

  • 你觉得这门课老师应该继续做哪一件事情?

    课后练习对于能力提升来说确实不错,而且还会减少课上练习由于各种原因无法完成的压力。

  • 你觉得这门课老师应该停止做哪一件事情?

    结对学习对我而言并没有起到良性作用,或许会在帮助解决他人问题上重复强化解决某一具体问题的经验,但并不会产生思维亮点,感觉就像重复工作。

  • 你觉得这门课老师应该开始做什么新的事情?

    我觉的可以设立一些3人小组设计的大作业,弥补个人的能力不足,产生更多的思维碰撞。

参考资料

  • 关于本文

2017-2018-1 20155214 《信息安全系统设计基础》课程学习总结

  • 二维码
posted @ 2017-12-28 23:10 曾士轩 阅读(...) 评论(...) 编辑 收藏