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

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

(按顺序)每周作业链接汇总

  • 第零周作业:

    • 简要内容:

      • 1、阅读老师给出的博客,并回答相关问题

      • 2、简单翻阅一下课本,对每章内容提出一个问题

      • 3、安装虚拟机,完成对环境的配置

    • 二维码:

  • 第一周作业:

    • 简要内容:
      • 1、了解Linux操作系统

      • 2、核心的Linux命令:find/locate/cheat/grep/which/whereis

      • 3、学习了实验楼上面的实验

    • 二维码:
  • 第二周作业:

    • 简要内容:
      • 1、Linux系统下的开发环境

      • 2、vim的基本操作

      • 3、gcc编译器的基本原理、gcc编译器的常用选项

      • 4、gdb调试技术

      • 5、静、动态库的制作

    • 二维码:
  • 第三周作业

    • 简要内容:课本第二章《信息的表示和处理》

    • 1、三种数字、进制转换、 gcc -m32 生成32位的代码、字节顺序、逻辑运算和位运算、掩码、0扩展和符号扩展、整数运算溢出、IEEE浮点标准、浮点数运算的不精确性与舍入、 整数与浮点数转换规则

    • 2、做重点习题:2.4、2.6、2.8、2.11、2.13、2.14、2.18、2.19、2.21、2.23、2.24、2.25、2.27、2.29、2.33、2.34、2.39、2.40、2.42、2.43、2.44、2.45、2.47、2.50、2.52、2.54

    • 二维码:

  • 第五周作业

    • 简要内容:课本第三章《程序的机器级表示》

    • 1、DOS时代的平坦模式、8086的分段模式、 IA32的带保护模式的平坦模式、ISA、使用gcc -S xxx.c -o xxx.s获得汇编代码、用objdump -d xxx 反汇编、不同数据的汇编代码后缀

    • 2、查看二进制文件可以用od 命令查看,也可以用gdb的x命令;more或less命令结合管道查看,使用输出重定向来查看

    • 3、Linux和Windows的汇编格式区别:ATT格式和Intel格式

    • 4、理解逆向的概念

    • 5、掌握X86汇编基础,能够阅读(反)汇编代码

    • 6、了解ISA(指令集体系结构)

    • 7、理解函数调用栈帧的概念,并用GDB进行调试

    • 8、做重点习题:3.1、3.3、3.5、3.6、3.9、3.14、3.15、3.16、3.22、3.23、3.27、3.29、3.30、3.33、3.34

    • 二维码:

  • 第六周作业

    • 简要内容:课本第四章《处理器体系结构》

      • 1、重点掌握ISA,并能举一反三.

      • 2、了解处理器Y86,一个类IA32体系的处理器

      • 3、做重点习题:4.1 4.2 4.5 4.6 4.8 4.10 4.11 4.12 4.16 4.17 4.19 4.21 4.24

  • 二维码:

  • 第七周作业:

    • 简要内容:课本第六章《存储器层次结构》

      • 1、了解存储设备的类型和特点;重点理解局部性原理和缓存思想在存储层次结构中的应用

      • 2、了解三种常见存储技术:RAM/ROM/磁盘;

      • 3、局部性原理、数据引用局部性、取指令局部性

      • 4、存储层次结构、缓存思想

      • 5、高速缓存结构、映射、命中、缓存管理

      • 6、做重点习题:6.2 6.3 6.4 6.8 6.9 6.10 6.11 6.12 6.13

  • 二维码:

  • 期中总结(第八周作业):

    • 简要内容:复习学习过的内容

      • 1、复习Linux常用命令,特别是man -k, cheat, grep -nr xxx /usr/include

      • 2、复习vim, gcc, gdb的使用

      • 3、复习教材1-7章,复习前面的考题

  • 二维码:

  • 第九周作业:

    • 简要内容:课本第10章《系统级I/O》

      • 1、每个系统调用的参数、返回值,查帮助文档

      • 2、掌握两个重要命令:man -k key1 | grep key2| grep 2 根据关键字检索系统调用;grep -nr XXX /usr/include查找宏定义,类型定义

      • 3、
        掌握系统编程和系统调用的概念、
        掌握系统编程错误处理的方式、
        掌握Unix/Linux系统级I/O、
        掌握RIO、
        掌握I/O重定向的方法、

      • 4、做重点习题:10.1、10.2、10.3、10.4、10.5

  • 二维码:

  • 第十周作业:

    • 简要内容:课本附录A,代码理解和调试

      • 1、代码:cp1.c、echostate.c、fileinfo.c、filesize.c、ls1.c、ls2.c、setecho.c、spwd.c、testioctl.c、who1.c、who2.c
  • 二维码:

  • 第十一周作业:

    • 简要内容:课本第八章《异常控制流》,代码理解和调试

      • 1、异常及其种类、异常处理

      • 2、进程和并发、进程创建和控制的系统调用及函数使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv

      • 3、信号机制:kill,alarm,signal,sigaction

      • 4、管道和I/O重定向:pipe, dup, dup2

      • 5、代码:argv,env,fifo,pipe,signal,exec,forkdemo,forkgdb.c,psh,testbuf,testpid、testpp、testsystem,waitdemo

  • 二维码:

  • 第十二周作业

    • 简要内容:复习

      • 1、复习9、10、11周的内容及代码

      • 2、数组指针、指针数组、函数指针、指针函数的区别

      • 3、信号:查看、生命周期、产生、处理

    • 二维码:

  • 第十三周作业

    • 简要内容:课本第十一章《网络编程》、第十二章《并发编程》,代码理解和调试

      • 1、客户端-服务器编程模型、网络、套接字、Web服务器

      • 2、基于进程的并发编程、基于 I/O 多路复用的并发编程、基于线程的并发编程、多线程程序中的共享变量、用信号量同步线程、使用线程提高并行性、其他并发问题

      • 3、代码:hello_multi.c、hello_multi1.c、hello_single.c、incprint.c、twordcount1.c、twordcount2.c、twordcount3.c、twordcount4.c、condvar.c、count.c、countwithmutex.c、cp_t.c、createthread.c、semphore.c、share.c、threadexit.c

  • 二维码:

  • 第十四周作业

    • 简要内容:课本第九章《虚拟存储器》

      • 理解虚拟存储器的概念和作用、理解地址翻译的概念、理解存储器映射、掌握动态存储器分配的方法、理解垃圾收集的概念、了解C语言中与存储器有关的错误
    • 二维码:

(按顺序)实验报告链接汇总

  • 实验一 开发环境的熟悉

    • 简要内容:

      • 熟悉Linux开发环境,使用Linux的arm编译,了解嵌入式开发的基本过程、了解交叉编译。

    二维码:

  • 实验二 固件开发

    • 简要内容:学习、读懂02_pthread、03_tty中的代码,配置实验环境完成实验指导书中的实验2、3。

    • 二维码:

  • 实验三 实时系统的移植

    • 简要内容:根据实验指导书进行实时软件的安装(ADS、GIVEIO驱动、JTAG驱动),配置实验环境并对软件进行测试,运行测试程序。

    • 二维码:

  • 实验四 驱动程序设计

    • 简要内容:掌握实时系统应用和驱动程序的编写,在模块化方式下进行驱动开发调试。

    • 二维码:

  • 实验五 网络通信

    • 简要内容:在arm开发板上实现一个简单web服务器的过程,在arm开发板上进行socket网络编程。

    • 二维码:

代码量汇总(用wc命令,有截图)

  • 利用如下命令统计整个目录下(包括子目录)的c代码行数:

    截图没有截好...命令为:find . -name '*.c'|xargs wc -l *.c

代码驱动的学习做到没有

我觉得这个代码驱动学习真的非常棒,但是遗憾的是自己没有完全达到了老师的要求。看了老师发的《代码驱动的学习》博客后,我认识到了代码管理的重要性,于是我便按照博客上的要求,目录清晰。但是有的代码确实非常简单,一看就知道他所实现的功能,我就没有每一条都加上注释上传。到了后面老师直接给我们代码,我就觉得既然是老师给的代码就没有必要上传,然后偷工减料的没有上传这些代码,这可能是我所欠下债吧。

加点代码,改点代码是理解的最好方式,谈谈你的心得

看懂代码说明你了解其初等的意思,但是修改代码、或者把代码应用到别的地方才是真正掌握这个代码。看懂不一定会用,会用才是真正的提高。

实践上有什么经验教训

不动手问题永远不能解决,经过两个学期的自主学习,发现了自己自主学习能力有了巨大的提高。以前我觉得假如有人问我问题,我回复别人:“自己去百度吧!”是一种推脱、一种不负责任的表现。但是现在不一样了,别人问我问题我的第一反应鼓励别人是先去百度看看能不能自主解决。这种心态的变化说明我的实践动手能力的提高。

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

  • 1.计算机各个组件如何相互影响

  • 2.格式在进行强制转化时会发生什么问题

     - 会出现溢出、正负值不对应(产生逆向思维)
    
  • 3.看懂用c写出来的代码进行的反汇编代码,也要学会看汇编代码得到对应c代码的能力

  • 4.理解并使用Y86指令集

  • 5.优化程序性能要注意的方面

    • 高内聚,低耦合
  • 6.写好一个从高速缓存存取数据的程序

  • 7.实现与静态库链接

  • 8.如何对进程进行控制

    • 理解并会运用书中操作进程的各种函数
  • 9.为何要动态存储器分配

  • 10.c语言中使用I/O函数要注意的问题

    • I/O作为文件进行读写管理。
  • 11.web服务器如何搭建

      - bind->listen->accept->send/recv
    
  • 12.如何安全地创建和终止一个线程

    • 理解被运用pthread的各种函数,线程通过调用pthread_create来创建。调用pthread_exit函数,线程会显式地终止。

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

优秀博客

竞赛:全国密码技术竞赛,这周就要去决赛了,希望可以为校为系争光

扇贝背单词(对四六级有没有影响?)

坚持一样东西总是会有用的,不管是什么。而用扇贝背单词用处更大。

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

没有被老师扣分,但是自己给自己扣分

课程收获与不足

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

开始使用非图形化界面的时候还是非常抗拒的,觉得使用非图形化界面简直是时代的退化。但是经过这个学期的学习之后,我觉得只要打开一个窗口就可以实现很多功能简直太方便,根本不需要使用鼠标。而且有很多功能也是使用鼠标所无法实现的。

自己需要改进的地方

没有对每一个代码进行注释管理,有时甚至没有上传代码。

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

这个学期和20145319钟轲结对实验,其中遇到了很多问题,但是在不断的提高动手能力之后,很多问题都迎刃而解。钟轲同学是一个动手能力非常强的同学,他对一些有用的东西会花大量的时间学习。但是他对于一些繁琐但是不可避免的东西就不太感兴趣,比如他宁愿多看几遍代码都不愿意在git的时候给代码加上注释。

给学弟学妹们的学习建议

以前我在学习Java的时候就觉得每周都要手敲这么多字的课程总结好累啊,然后还在博客上面留言“累死人还学不精”之类的话语。但是到了这个学期突然懂得了一个道理:博客上面的文字可以少一点,但是书一定要看好、实践一定少不了。这个学期大家总结的部分都少了很多,篇幅大部分在于实践部分。

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

调整学习的顺序:先看懂书->完成书上的习题->亲自动手实践->写博客,写博客应该放在最后,写的应该是自己在学习中得到的体会与遇到问题。

问卷调查

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

20-25个小时

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

学期开始时状态不佳,逐渐进入状态,但是最近有所下滑

学习效果自己满意吗?

有时很满意,有时感觉自己在梦游

课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书)

刚刚我在回顾自己所写的随笔的时候发现自己有一篇博客的阅读量竟然有855,这个让我很吃惊。在有成就感的同时还发现了博客不止可以用来上交作业,还是一个学习交流的地方。

在百度上搜索相关的知识都能搜到很多人在博客园分享的经验方法等(例如我刚刚找如何统计子目录下的c行数),我也希望自己可以把自己学习到的经验放到博客园上给大家参考学习讨论,虽然不一定做到每周一篇,但是博客真的值得大家所坚持。

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

第一学期养成自学习惯,第二学期规范统一。真的非常好!博客也应该继续坚持,虽然开始会遇到很反对的声音。

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

没有!

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

可以多介绍一些好用的软件,我们接触的东西还是太少。想做一个好看的界面都不知道该选择什么软件,自学了Python也不怎么使用。

给出本文链接和二维码

http://www.cnblogs.com/zqh20145320/p/6218626.html

二维码:

posted @ 2016-12-24 22:23  20145320周岐浩  阅读(341)  评论(1编辑  收藏  举报