20145236《信息安全系统设计基础》课程总结

20145236《信息安全系统设计基础》课程总结

每周作业链接汇总

第0周作业

  • 简要内容:安装虚拟机,阅读老师推荐文章后的一些感想以及粗略阅读教材后所提出的一些问题。
  • 二维码

第1周作业

  • 简要内容:Linux常见的一些命令及实践过程记录
  • 二维码

第2周作业

  • 简要内容:学习了vim的基本操作;学会使用gcc编译器;学习了gdb的调试。
  • 二维码

第3周作业

  • 简要内容:学习了操作系统中的信息表示和处理;学习了整数与浮点数的转换。
  • 二维码

第5周作业

  • 简要内容:汇编相关知识,指令集体系结构,函数调用栈帧过程
  • 二维码

第6周作业

  • 简要内容:安装了Y86处理器,了解Y86指令体系结构;学习ISA抽象。
  • 二维码

第7周作业

  • 简要内容:学习了局部性原理和缓存思想在存储层次结构中的应用;根据代码驱动的程序设计学习建立了项目结构。
  • 二维码

第8周作业

  • 简要内容:总结并复习了前7周的学习内容。
  • 二维码

第9周作业

  • 简要内容:学习Linux操作系统的基本I/O服务。
  • 二维码

第10周作业

  • 简要内容:学习并实践了常用指令的代码,加深了对指令的理解。
  • 二维码

第11周作业

  • 简要内容:学习了异常;通过实践了解了进程的并发。
  • 二维码

第12周作业

  • 简要内容:复习了了第九周、第十周、第十一周代码;进行了实验的汇总。
  • 二维码

第13周作业

  • 简要内容:学习了网络编程和多线程的基本内容
  • 二维码

第14周作业

  • 简要内容:学习了虚拟存储器的概念及其作用
  • 二维码

实验报告链接汇总

实验一 开发环境的熟悉

  • 简要内容:熟悉Linux开发环境,使用armv4l-unknown-linux-gcc指令进行编译
  • 二维码

实验二 固件设计

  • 简要内容:多线程程序设计,pthread库函数的使用
  • 二维码

实验三 实时系统的移植

  • 简要内容:安装ADS,安装GIVEIO驱动及JTAG驱动的过程,在arm开发板上测试结果
  • 二维码

实验四 驱动程序设计

  • 简要内容:Linux下进行驱动设计的原理,使用模块方式进行驱动开发调试的过程
  • 二维码

实验五 网络通信

  • 简要内容:学习在arm开发板上的SOCKET网络编程
  • 二维码

代码

由于之前虚拟机崩掉了,重装了好多次还是用不了,所以每次的代码实践都是在实验楼和同学的电脑上做,所以这一部分无法提交git log --pretty=format:"%h - %an, %ar : %s" 的结果。
这是部分代码之前在其他同学电脑上实践的截图

关于第0周学习

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

  • 部分内容抓住了重点,但是由于课本知识比较片面,自己提出的问题还是太单一,没有深入。

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

1. 多处理器与多线程的运行模式是什么样的?

  • 多路处理器是服务器上的技术,就是多个CPU
    CPU最初发展的时候是一个CPU一个处理核心,CPU的性能主要靠提高核心工作频率来提高,由于物理限制,不能把CPU的核心无限提高频率,所以发展出来双核心的CPU。两个核心一起工作需要靠软件的支持。
  • 多线程:每一个程序可以包含至少一个线程,而多个线程之间可以“并发”执行。

2. 为什么计算机算数运算会引发计算机的安全漏洞?
一个怀有恶意程序的计算溢出会破坏其他的数据结构,会导致程序崩溃或者行为异常

3. 如何对计算机中的信息进行表示,它的处理方法又是什么?
计算机系统中的所有信息都是以二进制形式存储的,计算机系统规定了三种重要的编码方式:无符号编码、补码编码、浮点数编码。无符号编码是基于传统的二进制表示法,表示大于或等于0的数字;补码编码是表述有符号整数的常见方式,正或负的数字;浮点数编码是表示实数的科学记数法的以2为基数的版本。

4. 流水线怎么利用?
SEQ(顺序的)处理器,SEQ在执行命令时需要6步:1、取指;2、译码;3、执行;4、访存;5、写回;6、更新PC。在这过程中,SEQ会花费大量的时间,为了提高处理器的执行效率,引入流水线化的Y86处理器。也就是说,SEQ处理器一条指令执行必须上一条指令的6步全部结束后才能开始,而在流水化的处理器中只需要指令执行的一个步骤结束后下一个指令就可以开始。

5. 对程序的优化具体应该从哪些方面下手?

  • 语句调整,用汇编重写
  • 指令调整
  • 循环展开
  • 参数传递优化

6. 如何判定一个存储器单元是是否在稳态状态?
静态RAM存储在一个双稳态的单元里,动态RAM对干扰比较敏感

7. 链接器是干什么的?
链接器是将一个或多个由编译器或汇编器生成的目标文件外加库链接为一个可执行文件的程序,它的两个主要任务是:符号解析及重定位。

8. 异常触发的机制是怎样的?有哪几种类型的异常?

  • 当处理器监测到有事件发生时,通过一张叫做异常表的跳转表,进行一个间接过程调用,到一个专门设计用来处理这类事件的操作系统子程序(异常处理程序)。
  • 异常分为:中断、陷阱、故障和终止。

9. 虚拟存储器是如何工作的?
为了给用户提供更大的随机存取空间而采用的一种存储技术。它将内存与外存结合使用,好像有一个容量极大的内存储器,工作速度接近于主存,每位成本又与辅存相近,在整机形成多层次存储系统。  

10. I/O函数该如何正确的使用?
open 打开文件描述符
read
write
close 关闭文件描述符
vfcntl 修改文件描述符,例如改为不阻塞
lseek 移动文件读写的当前位置
ioctlfcntl类似
readdir 读取目录
select 多路选择
readlink 读取符号链接
stat 读取文件属性

11. 服务器如何将其他信息传递给子程序?
通过fork函数或者exec类型的函数,共享文件表。

12. 如何有效控制并发线程的不安全性?

  • 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。
  • 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据
  • 一方面,对申请访问临界资源的所有线程要公平对待,不能对部分线程优先考虑,使一些线程长时间独占资源,而使其它的线程进行长时间的等待,得不到资源。
  • 另一方面,在考虑了公平性的同时,也不能忽视了安全性的考虑,出现某一个线程访问临界资源,致使程序不能正常运行,产生严重的后果。
  • 在Java中对多线程的并发控制应该做到公平性和安全性的理想兼容,两方面都不可忽视。并发系统的公平性使得资源在多线程之间得到相当科学和合理的分配,安全性保证了各线程的正常调度运行,从而使程序顺利地执行结束,完成任务。

关于加分项目

优秀作业

第3周作业

  • 二维码

第6周作业

  • 二维码

第8周作业

  • 二维码

第11周作业

  • 二维码

GDB调试汇编堆栈过程分析

  • 二维码

20145236 第九周问题汇总

  • 二维码

经验

我觉得最重要的还是态度,毕竟态度决定一切,只要态度端正了,我觉得学习并不是一件非常难的事情,很多时候不是说我们学不会,而是不想学。只要认真对待,完成了应做的事情,就一定会有相应的回报。

课程收获与不足

  • 自己的收获
    在两个学期这种自学模式的教学下,我自我学习的能力得到了很大的提高,不只是对于这门课的学习,对于这大学四年的学习也是非常有用的,我觉得有些东西是受益终生的。

  • 自己需要改进的地方
    自己的学习方法还需要改进,要克服自身得懒毛病。

  • 给开学初的你和学弟学妹们的学习建议
    不管做什么事情都需要一种认真的态度去对待,不管这件事情是不是你喜欢去做的事情,我们都要保持一种积极向上的心态去做好每一件力所能及的事。

  • 如果重新学习这门课,怎么做才可以学的更好
    如果重新学习这门课,就应该给自己制定一个计划去学习,因为每周的学习任务都挺多的,如果都堆在一个时间段内学习,难免会消化不了。

问卷调查

  • 你平均每周投入到本课程多长时间?
    15小时
  • 每周的学习效率有提高吗?
    有提高
  • 学习效果自己满意吗?
    比较满意,还能做得更好
  • 你觉得这门课老师应该继续做哪一件事情?
    我觉得老师应该继续让学生写博客、扇贝打卡、每周的小测试。
  • 你觉得这门课老师应该开始做什么新的事情?
    应该开始上课讲解教材上的内容,因为毕竟我们不是专业人员,完全靠自学的模式对于一部分人来说不太好,比如他们遇到问题就直接放弃了,想要靠他们自己问肯定是不可能的了,老师应该对每周同学们反馈最普遍的问题在课上进行讲解。

本文链接和二维码

原文地址:https://www.cnblogs.com/feng886779/p/6229630.html