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

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


[博客目录]


1、每周做业连接汇总

第一周做业

  • 在Linux环境下C语言程序的gcc编译运行汇编方法,使用gdb进行调试、设置断点等方法。

第二周做业:

  • 有关设置gdb断点,创建静动态库等课上未提交的题目补充,以及自主编程制做MYOD的实现。

第三周做业:

  • 教材内容第二章《信息的表示和处理》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。

第四周做业:

  • 课上未提交题目命令行传入文件实现myod,第十章教材内容学习以及两个重要命令man -k key1 | grep key2| grep 2grep -nr XXX /usr/include的掌握。

第五周做业:

  1. 教材内容第三章《程序的机器级表示》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。
  2. Mybash 实现

第六周做业:

  1. 教材内容第八章《异常控制流》,第十章《系统级I/O》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。
  2. 课上有关汇编代码的转换和删除的未提交题目的补充,以及教材 p97 2.96 2.97,完备的测试。
  3. 课上相关未提交题目的补充,在本身的电脑中完成https://www.shiyanlou.com/courses/231缓冲区溢出漏洞实验的详细实验过程。

第七周做业:

  • 教材内容第四章《处理器体系结构》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。

第八周做业:

  1. 教材内容第十一章《网络编程》简单过一下,教材第十二章《并发编程》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。
  2. 课上有关X86转Y86和代码反汇编的相关未提交题目的补充,以及课下实践书后习题的实践测试和多线程并发服务器的制做与测试。

第九周做业:

  1. 教材内容第六章《存储器层次结构》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。
  2. 加分项目MYPWD的自主设计与编写测试。
  3. homebrew/pipe学习博客
  • homebrew
  • pipe

第十周做业:

  • 课上未提交题目有关stat指令的学习及编写的提交以及课下自主学习IPC相关知识。

第十一周做业:

  • 教材内容第九章《虚拟存储器》的自主学习,教材内容总结,以及教材和代码学习中遇到的问题和解决。

第十三周做业:

  • 从新精学第十章,对课本内容反复学习,而且所有家庭做业的编写制做,以及蓝墨云中的试题总结,结对学习,给同伴讲解收获和疑惑,共同窗习,共同进步。

第十四周做业:

  • 从新精学以前学得最差的一章,第四章处理器系统相关内容,以前学习学习Y86时候没有学的很好,详细从新回顾了课本内容。

返回目录html

2、实验报告连接汇总

实验一 开发环境的熟悉:

交叉编译环境,目标机与宿主机的联通,目标机运行程序以及最后的清理工做,实验一为小组共同完成。
git

实验二 固件程序设计:

要用系统管理员身分运行uVision4,破解MDK(破解程序中target必定选ARM),KEIL-MDK 中添加 Z32 SC-000 芯片库,打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32便可被电脑识别,进行下载调试。网上找一下国密算法标准的代码和标准测试代码,在Ubuntu中分别用gcc和gcc-arm编译,并回答四个算法的用途。小组共同完成。
程序员

实验三 实时系统:

基于Linux Socket程序设计实现wc(1),使用多线程实现wc服务器并使用同步互斥机制保证计数正确。我的完成。
web

实验四 外设驱动程序设计:

学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章,在Ubuntu完成资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章的test试验。我的完成。
算法

实验五 通讯协议设计:

了解学习Linux下openssl,测试对称算法中的AES,非对称算法中的RSA,Hash算法中的MD5,在Ubuntu中实现对实验二中的“wc服务器”经过混合密码系统进行防御。我的完成。
数据库

返回目录编程

3、代码托管连接和二维码

  • 截图 git log --pretty=format:"%h - %an, %ar : %s" 的结果


    缓存

  • 代码量汇总提交statistics.sh的支持截图



    返回目录安全

4、学期学习总体评价

代码驱动的学习作到没有?bash

作到了,在每次学习新知识或者出现不理解的地方,都会上网或者看书,查阅相关资料,不断循环这个过程,是的本身对于代码的理解和分析能力进一步增长。

加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得

在我学习实现Linux相关命令的时候,开始都是懵懵懂懂的,我摸索着使用老师的man命令学习法,总结出一下学习步骤:

  1. man命令查看命令的实现函数、结构体等
  2. 结合网络搜索其代码实现,阅读并理解
  3. 并在此基础上编写本身须要的代码
  4. 测试及运行

实践上有什么经验教训

花费时间较多,可是熟练后会比较熟练,同时了解了一些比较好的学习网站和平台。

总体评价一下第1周做业中本身提出的问题是否是抓住了学习重点

在第一周做业中出的问题都是每一章讲解的重点,在每章的学习中都可以解决个人理解问题。

回答一下第1周做业中本身提出的问题

  • 第1章 计算机系统漫游:一个程序从编写到执行的过程在计算机中是什么实现的
    • 答:经由一下四个部分:
      预处理器:根据以#开头的命令,将包含的头文件加载进入源程序源程序。预处理器读取系统头文件stdio.h中的内容,代替此行内容。源程序通过预处理后,获得另外一个c程序,此程序一般以.i为后缀保存。
      编译器:将预处理后的.i文件转换成汇编程序。编译器将不一样的高级语言(如c语言,C++语言)转换成严格一致的汇编语言格式进行输出。汇编语言以标准的文本格式确切的描述每机器语言指令。编译器获得的文件一般以.s为后缀保存。
      汇编器:将汇编语言(.s文件)翻译成机器语言指令,并将这些指令打包成一种可定位目标程序格式。汇编后获得的文件即为二进制文件,一般以.o为后缀。
      连接器:程序中调用的函数,存放在一个*.o的单独预编译的文件中。而这个文件必须以适当的方式并入到咱们的程序中,这个工做由连接器完成。将外部的.o文件并入后,获得一个完整的可执行文件。可执行文件加载到存储器后,由系统复制执行。
  • 第2章 信息的表示和处理:如何理解计算机的算术运算?
    • 答:计算机不能像人同样理解1,2,3,只能借助材料的物理特性经过一、0来进行记录和运算,因此计算机的算术运算其实就是2进制的运算,并经过各类码来表示不一样的符号。
  • 第3章 程序的机器级表示:如何理解汇编在计算机运算中的地位?
    • 答:汇编语言介于机器级代码和高级语言之间,及不会让人以为迷糊,具备较好的文本格式表达形式,也比较便于计算机的理解和执行,能够说是一个承接二者的中介。
  • 第4章 处理器体系结构:为何要虚构出Y86指令系统?
    • 答:Y86指令集的数据类型、指令和寻址方式较少,字节级编码也比较简单。可是它仍然足够完整,可以写一些简单的处理证书的程序,有助于咱们理解指令集的原理。
  • 第5章 优化程序性能:如何根据处理器的原理优化程序?
    • 答:这个问题比较复杂,涉及的知识比较广范,简单的来讲,面向处理器结构的优化能够从如下几个方向入手:缓存命中,指令预测,数据预取,数据对齐,内存拷贝优化,ddr访问延迟,硬件内存管理优化,指令优化,编译器优化等级以及性能描述工具。
  • 第6章 存储器层次结构:存储器为什么要采起这种分层结构?
    • 答:为了解决对存储器要求容量大,速度快,成本低三者之间的矛盾,使用分级结构可以下降成本,提升效率,简单的来讲就是性价比较高,不会形成过多的资源浪费。
  • 第7章 连接:连接的原理及实现
    • 答:将各类代码和数据片断收集并组合成为一个单一文件的过程,其实现是在编译过中实现的。
  • 第8章 异常控制流:为何计算机要使用进程这个概念?
    • 答:进程是资源分配和调度的基本单位,是OS结构的基础,引入了进程后才使得处理机利用率和内存利用率大大提升。
      进程是一个具备独立功能的程序关于某个数据集合的一次运行活动。它能够申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不仅是程序的代码,还包括当前的活动,经过程序计数器的值和处理寄存器的内容来表示。
  • 第9章 虚拟内存:虚拟内存的优势的?
    • 答:
      使用虚拟地址能够更加高效的使用物理内存:在访问后边的地址空间的时候就能够将前边当前没有在访问的物理页释放掉,或者交换到硬盘中。这样这个物理页又能够去对应新的虚拟地址,从而使物理内存能够充分的利用。
      使用虚拟地址可使内存的管理更加便捷:在程序编译的时候就会生成虚拟地址,对于不一样的机器或者对于同一台机器的不一样时间,该虚拟地址能够对应不一样的物理页。
      能够提升系统安全性:在使用虚拟地址的时候,暴露给程序员永远都是虚拟地址,而具体的物理地址在哪里,这个只有系统才了解。这样就提升了系统的封装性。
  • 第10章 系统级I/O:C的标准I/O库与Linux 文件I/O的区别?
    • 答:
      文件I/O:文件I/O称之为不带缓存的IO(unbuffered I/O)。不带缓存指的是每一个read,write都调用内核中的一个系统调用。也就是通常所说的低级I/O——操做系统提供的基本IO服务,与os绑定,特定于linix或unix平台。
      标准I/O:标准I/O是ANSI C创建的一个标准I/O模型,是一个标准函数包和stdio.h头文件中的定义,具备必定的可移植性。标准I/O库处理不少细节。例如缓存分配,以优化长度执行I/O等。标准的I/O提供了三种类型的缓存。
      (1)全缓存:当填满标准I/O缓存后才进行实际的I/O操做。
      (2)行缓存:当输入或输出中遇到新行符时,标准I/O库执行I/O操做。
      (3)不带缓存:stderr就是了。
  • 第11章 网络编程:Web服务器是经过什么原理实现的?
    • 答:额,这个仍是看书吧,一只半会儿说不清楚。
  • 第12章 并发编程:指令级并行,线程级并行,数据级并行的区别?
    • 答:
      指令级并行:是一种隐式并行,经过流水线和超标量,使得一个程序的指令序列中共有多条同时乱序运行,顺序提交。
      线程级并行:是一种显示并行,须要写多线程程序,主要指同时多线程(SMT)/超线程(HT)以及多核和多核处理器。
      数据级并行:是一种显式并行,主要指单指令多数据(SIMD)
      返回目录

5、做业评价

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

  • 这个……不太清楚。
  • 经验就是有本身的思考过程和操做实例吧。

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

  • 第一周学习博客没有写每章提问
  • 教训:学会合理安排时间,每周的东西都要在时间内完成,不然拖到后面会忘记
  • 已经补完,并优化了博客内容,新增了内容,改善排版。

返回目录

6、课程收获与不足

本身的收获(投入,效率,效果等)

  • 课本知识
  • Linux系统的使用
  • 如何学习Linux命令的方法:man
  • 嵌入式系统编程
  • 网络编程
  • 密码算法
  • 博客写做习惯

本身须要改进的地方

  • 须要学会掌握学习方法
  • 合理安排时间
  • 更多的代码量

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

  • 我主要为结对对象讲解代码,让同伴读懂代码,也让我加深对代码的理解
  • 我建议老师可以就如何结对学习提供一点参考或者讲解

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

  • 勤练习,少哔哔
  • 学会自学
  • 尽可能独立完成

若是从新学习这门课,怎么作才能够学的更好

  • 若是从新学习,我会注重系统学习。
  • 由于如今回想感受知识点过于零散,很难糅合在一块儿。

问卷调查

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

    平均每周20个小时左右。

  2. 每周的学习效率有提升吗?

    每周学习效率还行,我是一个投入的人,一开始了就很难停下来。

  3. 学习效果本身满意吗?

    学习效果不太满意,由于在查找资料上花费不少时间,感受本身学习的知识点都是东平西凑,难以整合成系统的知识体系。

  4. 课程结束后会继续一周至少一篇博客吗?

    我平时会使用博客记录我在学习或者使用电脑的一些知识,不能保证每周,可是一个月大概会有两篇这样。

  5. 你以为这门课老师应该继续作哪一件事情?

    继续给咱们推荐好的教学资料以及视频。

  6. 你以为这门课老师应该中止作哪一件事情?

    目前还算适应,没有什么须要中止的。

  7. 你以为这门课老师应该开始作什么新的事情?

    在博客方面多和学生互动,及时反馈意见,这样咱们才知道怎样才能作得更好。

返回目录

7、期末总结

结对学习状况

  • 结对学习博客
    20155302
  • 结对感想
    个人结对学习对象是一个热爱学习的男生,平时学习认真,常常催促我和他一块儿学习,我受他影响颇深,也敬佩他的精神。
    和他结对学习效果很好,常常点出我平时遗漏或者不关注的地方,查漏补缺,受益颇丰。

学习感想

  • 本学期感想:活动多,学习紧,任务重
  • 就学习而言,感受我有两个问题须要注意:
    • 一是要学会安排时间,我老是想着找个时间空出来好好学,可是事实证实这是不可能的,永远会有下一件事情等着你作,要学会抽空学,有针对性的学,每天学。
    • 二是要学会高效率学习。由于我老是花费大量的时间再搜索资料上,我以为这样不行,时间宝贵,须要高效。因此我开始总结一些学习方法,好比首先是要把要学的知识理成一个系统,即我要作出这个做业,我须要掌握的东西,这些东西属于哪一个领域,学习这个领域的知识须要的基础等等,这样按部就班的去学习,永远比散漫乱找要高效的多。

学习展望

  • 将来要学会学习方法了,不要再瞎摸乱闯。
  • 从新学习Java、C语言
  • 学习Java web/html/数据库相关知识,作一些小网站
  • 学习PS/AI/PR/AE

课程总结二维码

返回目录

相关文章
相关标签/搜索