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

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

每周作业链接汇总

  • 第零周作业

    • 简要内容:

      1、了解课程上课方式,做好心理预期

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

      3、快速翻阅一下课本,对每章内容提出一个问题

      4、安装虚拟机,并解决安装过程中出现的问题

    • 二维码:

  • 第一周作业

    • 简要内容:实验楼实验一

      1、了解Linux操作系统

      2、核心的Linux命令:find/locate/cheat/grep/which/whereis,熟练应用“搜索”进行举一反三的学习

      3、Linux中用户管理命令/系统相关命令/文件目录相关命令/打包压缩相关命令/比较合并相关命令/网络相关命令等

    • 二维码:

  • 第二周作业

    • 简要内容:实验楼vim编辑器、GDB简明教程、Linux系统编程;课本第一章《计算机系统漫游》、第七章《链接》

      1、Linux系统下的开发环境

      2、vi的基本操作

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

      5、gdb调试技术

      6、makefile基本原理及语法规范

      7、静态库和动态库的生成与调用方法

      8、C程序中模块的概念,模块分解的“高内聚,低耦合”的原则

      9、理解信息的概念、用od 命令 od -tc -tx1 hello.c查看源文件、 冯式结构、 CPU执行指令的操作(加载、存储、操作、跳转)、理解存储系统的核心思想:缓存、操作系统核心抽象(文件、虚存、进程、虚拟机)

      10、链接器的两个任务、目标文件的三种形式、目标文件格式、 ELF文件格式、readelf命令、全局符号、处理目标文件

    • 二维码:

  • 第三周作业

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

      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、寻址方式、操作数的三种类型、有效地址的计算方式

      6、汇编指令: MOV、push、pop、jmp、leal、CMP、SUB、SET、call、ret,目的操作数的类型,算术和逻辑运算,移位操作移位量,跳转语句

      7、栈帧结构,关于栈帧的gdb命令:bt/frame/up/down

      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抽象、Y86处理器、流水线和实现方式

      2、做重点习题: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、局部性原理、数据引用局部性、取指令局部性

      3、存储层次结构、缓存思想

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

      5、做重点习题: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、复习vi, gcc, gdb,make的使用

      3、复习教材1-7章、总结每周的考题

    • 二维码:

  • 第九周作业

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

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

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

      3、Unix I/O、打开和关闭文件、用RIO包健壮地读写、读取文件元数据、共享文件、I/0重定向、标准I/O和I/O函数

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

    • 二维码:

  • 第十周作业

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

      1、三种风格的错误处理

      2、代码:cp1.c、echostate.c、fileinfo.c、filesize.c、ls1.c、ls2.c、setecho.c、spwd.c、testioctl.c、who1.c、who2.c

    • 二维码:

  • 第十一周作业

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

      1、代码:argv(argv.h、freemakeargv.c、makeargv.c、argtest.c),env(environ.c、environvar.c),fifo(consumer.c、producer.c、testmf.c),pipe(listargs.c、pipe.c、pipedemo.c、pipedemo2.c、stdinredir1.c、stdinredir2.c、testtty.c、whotofile.c),signal(sigdemo1.c、sigdemo2.c、sigdemo3.c、sigactdeom.c、sigactdeom2.c),exec(exec1.c、exec2.c、exec3.c),forkdemo(forkdemo1.c、forkdemo2.c、forkdemo3.c、forkdemo4.c),forkgdb.c,psh(psh1.c、psh2.c),testbuf(testbuf1.c、testbuf2.c、testbuf3.c),testpid、testpp、testsystem,waitdemo(waitdemo1.c、waitdemo2.c)

      2、异常及其种类、异常处理

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

      4、信号机制:kill,alarm,signal,sigaction

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

    • 二维码:

  • 第十二周作业

    • 简要内容:视频、复习

      1、复习9、10、11周代码

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

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

    • 二维码:

  • 第十三周作业

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

      1、代码: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

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

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

    • 二维码:

  • 第十四周作业

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

      虚拟存储器的概念和作用、地址翻译、存储器映射、动态存储器分配的方法、垃圾收集、C语言中与存储器有关的错误

    • 二维码:

实验报告链接汇总

  • 实验一 开发环境的熟悉

    • 简要内容:

      熟悉Linux开发环境,学会Linux开发环境的配置和使用,使用Linux的arm编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。

    • 二维码:

  • 实验二 固件开发

    • 简要内容:

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

    • 二维码:

  • 实验三 实时系统的移植

    • 简要内容:

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

    • 二维码:

  • 实验四 驱动程序设计

    • 简要内容:

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

    • 二维码:

  • 实验五 网络通信

    • 简要内容:

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

    • 二维码:

代码托管

  • 链接:20145219宋歌代码托管项目

  • 二维码

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

  • 代码量汇总

  • 代码驱动的学习做到没有?

    做到了。本学期刚开始的时候只是简单地上传了代码,没有分目录,描述也很简单。后来,看了老师发的《代码驱动的学习》博客后,我认识到了代码管理的重要性,恰逢此时,因为我之前不规范的上传代码导致我的项目工程出了问题,于是我新建了一个项目重新上传代码,按照博客上的要求,目录清晰、一个一个代码的添加并注释。

  • 实践上有什么经验教训

    开学初建立的工程由于上传后在本地、远程都更改了很多,所以在第5周就发现怎么上传都不能成功,最后一怒之下废弃了原项目,重新新建了一个项目,重新上传了之前的代码,之后一直按照要求一步一步的添加、上传再也没有出现过问题。

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

  • 第一章

    什么是计算机系统?它包括什么?研究它有什么意义?

    答:计算机系统由计算机硬件和软件两部分组成。硬件包括中央处理机、存储器和外部设备等;软件是计算机的运行程序和相应的文档。计算机系统具有接收和存储信息、按程序快速计算和判断并输出处理结果等功能。

  • 第二章

    计算机中的数据和平常我们生活中的数据有什么异同?

    答:在计算机系统中,各种字母、数字符号的组合、语音、图形、图像等统称为数据,数据经过加工后就成为信息。

  • 第三章

    为什么要学习汇编?

    答:用高级程序语言编程时,机器屏蔽了程序的细节,抽象级别高,而汇编代码可以很好的规避这一点,帮助我们更好的分析代码中隐藏的低效率。

  • 第四章

    ISA是什么?

    答:ISA即指指令集架构(Instruction Set Architecture)是与程序设计有关的计算机架构的一部分,包括本地数据类型、指令、寄存器、地址模式、内存架构、中断和意外处理和外部 I/O 。一个 ISA 包括一系列 opcodes(机器语言)的一个规格,本地命令由一个特定的 CPU 设计来实现。

  • 第五章

    如何优化程序性能?

    答:第一,消除不必要的内容,包括函数调用、条件测试和存储器引用。第二,利用处理器提供的指令级并行能力,同时执行多条指令。

  • 第六章

    存储系统层次结构分为什么?

    答:高速缓冲存储器、主存储器、辅助存储器。

  • 第七章

    链接是如何进行的?

    答:将各种代码和数据部分收集起来并组合成为一个单一文件,由链接器自动执行。

  • 第八章

    常见异常怎么解决?

    答:

      1.使用标准C库提供了abort()和exit()两个函数,它们可以强行终止程序的运行,其声明处于<stdlib.h>头文件中。
      2.使用assert(断言)宏调用,位于头文件<assert.h>中,当程序出错时,就会引发一个abort()。
      3.使用errno全局变量,由C运行时库函数提供,位于头文件<errno.h>中。
      4.使用goto语句,当出错时跳转。
      5.使用setjmp,longjmp进行异常处理。
    
  • 第九章

    虚拟存储器如何工作?它有什么特性?

    答:虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。

  • 第十章

    Unix I/O是什么?

    答:Unix下共有五种I/O模型

      a. 阻塞I/O 
      b. 非阻塞I/O 
      c. I/O复用(select和poll) 
      d. 信号驱动I/O(SIGIO) 
      e. 异步I/O(Posix.1的aio_系列函数) 
    
  • 第十一章

    网络编程步骤?

    答:客户端:

      1、通过socket函数获取一个socket文件描述符。程序通过这个文件描述符与内核的tcp/ip架构通讯联系。
      
      2、通过该描述符请求与服务器的连接(connect函数),此时需要事先知道服务器的ip和服务器上的应用程序的端口
      
      3、当connect函数成功返回,则表示连接达成,则可通过该文件描述符或者recv,send该文件描述符,即可实现与某服务器端的通信
    

    服务器端:

      1、通过socket函数获取一个socket文件描述符。程序通过这个文件描述符与内核的tcp/ip架构通讯联系。
      
      2、绑定端口(bind函数),端口人为设置,本机IP自动获取即可(端口和IP设置通过sockaddr_in结构体实现)。
      
      3、监听socket函数返回文件描述符(listen函数)
      
      4、当listen函数返回时,表示有请求,则使用accept获取请求,accept函数产生一个新的文件描述符,用于和该请求通信。
      
      5、读写该文件描述符或者recv,send该文件描述符,即可实现与某客户端的通信
      
      6、服务器端还可以继续监听socket文件描述符,接受其他端口的请求
    
  • 第十二章

    并发编程是什么?

    答:并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。

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

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

无扣分项目。

待及格管理制度的优缺点(进入过的同学必写)

没有进入过,所以不太了解,不过可以看到老师为了不让部分同学落下进度做出的努力。

课程收获与不足

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

    在这学期的学习中,我清晰的感受到了效率、投入的重要性。刚开始,可能是由于刚过完假期,我一直不太能进入状态,效率很低,收获也寥寥无几,感觉老师的要求太多了,而自己却完全觉得是在浪费时间。后来,我逐渐进入了状态,学习效率大大提高,也更加能体会到老师的每一项要求的意义所在,于是,读书、理解、做练习题,读代码、理解、编译运行,这一个体系下来,觉得自己对于这门课的知识得到了掌握,而使用的时间也没有比之前更长。所以,不得不说,有付出才会有收获,效率高才能在有限的时间内收获更多。

  • 自己需要改进的地方

    争取进入状态更快,我进入状态慢可能是自身的问题,所以,我觉得我应该在假期的末尾就开始逐渐开始读书,这样可以早日进入状态。

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

    • 帮助:我和20145214张宁结对做了这学期的5个实验,我们一共去了实验室3次,实验一和实验五主要是我在进行操作,实验二和实验四主要是张宁在进行操作,实验三我们每人操作了一次,这样,我们每个人都可以做一次实验环境配置,难度也比较相当,大家的动手能力都在实验中得到了锻炼。在实验中有一些在预习时自己忽略的东西也会被队友指出,效率更高。
    • 建议:我觉得有一些组别分工合理,互相帮助,共同进行实验,而另一些则存在不太好的行为,自己完全不做,只依靠队友,解决办法还没想出。

给学弟学妹们的学习建议

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

    我觉得我的最大问题就是进入状态太慢,我最开始的几周学习效率太低了,每周的博客都要做很久很久,收获却不大。如果重新学习的话,我应该想办法让自己尽快进入这种学习模式,尽量从假期进入到学习中去,提高学习效率。

问卷调查

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

    25小时左右,平时课下有时间就看看书、画下来重点,周末把它们总结成一篇博客,并进行实践操作。

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

    相比于刚开学有了很大提高。

  • 学习效果自己满意吗?

    刚开学的几周很不满意,觉得自己效率太低,学了很长时间却收获很小。后来逐渐进入了学习状态,学习效率提高了,在加上有之前知识做基础,学习效果相对来说较为满意。

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

    我很希望自己能保持这个习惯,也会努力去做到。

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

    每周写博客,扇贝打卡,多理解、运行代码,期末、期中总结。

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

    感觉所有项目都有其存在的价值和意义,没有什么应该停止的。

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

    实验闭卷考试,我感觉实验更多的是在培养一种能力,应该化为自己的知识储备,不用查找就能运用,开卷更适用于考课本上的概念这类知识性的死记硬背的东西。

期末总结博客链接

posted @ 2016-12-23 21:39  20145219宋歌  阅读(254)  评论(7编辑  收藏  举报