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

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

每周做业连接汇总html

第1周做业:针对课本十二章的内容提出本身的问题,并在以后的学习中慢慢思考与解答;温习了相关虚拟机知识。学习了gcc与gdb的使用,熟悉vi的基本操做,熟悉gcc编译器的基本原理,学习使用gcc编译器的经常使用选项,学习使用gdb调试技术,熟悉makefile基本原理及语法规范,掌握静态库和动态库的生成与调用方法。
git

第2周做业:完成课堂实践的内容补充
算法

第3周做业:学习了三种数字、进制转换、 gcc -m32 生成32位的代码、字节顺序、逻辑运算和位运算、掩码、0扩展和符号扩展、整数运算溢出、IEEE浮点标准、浮点数运算的不精确性与舍入、 整数与浮点数转换规则
编程

第4周做业:补充完成课上没有完成的内容。
掌握两个重要命令:
man -k key1 | grep key2| grep 2 : 根据关键字检索系统调用
grep -nr XXX /usr/include :查找宏定义,类型定义
完成head,tail的使用,相关API的分析,伪代码,产品代码,测试代码的编写数组

第5周做业:理解逆向的概念
掌握X86汇编基础,可以阅读(反)汇编代码
了解ISA(指令集体系结构)
理解函数调用栈帧的概念,并能用GDB进行调试

第6周做业:了解异常及其种类
理解进程和并发的概念
掌握进程建立和控制的系统调用及函数使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv,
理解数组指针、指针数组、函数指针、指针函数的区别
理解信号机制:kill,alarm,signal,sigaction
掌握管道和I/O重定向:pipe, dup, dup2
缓存

第7周做业:了解ISA抽象的做用
掌握ISA,并能触类旁通学习其余体系结构
了解流水线和实现方式
安全

第8周做业:掌握三种并发的方式:进程、线程、I/O多路复用
掌握线程控制及相关系统调用
掌握线程同步互斥及相关系统调用
bash

第9周做业:了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)
理解局部性原理
理解缓存思想
理解局部性原理和缓存思想在存储层次结构中的应用
高速缓存的原理和应用
服务器

第10周做业:完成课上测试的能够不写博客(本周因完成课上测试没有博客)
补充完成课上实践内容
完成课下做业并提交博客网络

第11周做业:理解虚拟存储器的概念和做用
理解地址翻译的概念
理解存储器映射
掌握动态存储器分配的方法
理解垃圾收集的概念
了解C语言中与存储器有关的错误

第12周做业:试题总结,博客改进(没有博客)

第13周做业:找出全书你认为最重要的一章,深刻从新学习一下。

第14周做业:找出全书你认为学得最差的一章,深刻从新学习一下。

第15周做业:课程总结

实验报告连接汇总

实验一 开发环境的熟悉

简要内容:

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

实验二 固件开发

简要内容:

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

实验三 实时系统的移植

简要内容:

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

实验四 驱动程序设计

简要内容:

1)学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章

2)提交康奈尔笔记的照片

1)在Ubuntu完成资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章的test试验

2)提交编译,加载模块,卸载模块,测试运行的截图(要多张,全屏,体现学号信息)

实验五 网络通讯

简要内容:
安装OpenSSL环境,并编写测试代码验证无误

研究OpenSSL算法,测试对称算法中的AES,非对称算法中的RSA,Hash算法中的MD5

在Ubuntu中实现对实验二中的“wc服务器”经过混合密码系统进行防御

代码托管

  • 连接20155219付颖卓代码托管

  • 代码量汇总



  • 代码驱动的学习作到没有?
    作到了。本学期刚开始的时候只是简单地上传了代码,没有分目录,描述也很简单。后来,看了老师发的《代码驱动的学习》博客后,我认识到了代码管理的重要性,以后在老师的引导下慢慢开始对代码进行分析,不懂的地方就经过man -k和grep -nr xxx /usr/include指令进行相关搜索,虽然是英文的,可是那些英语单词通常都能看懂,实在不懂的查一下也就知道了。

  • 加点代码,改点代码是理解的最好方式,谈谈你的心得
    咱们看到代码的时候总会下意识的以为太难懂了,看上去就很难理解,因此历来都是会去躲避学习代码,能不看就不看,能少看就少看,更别提加减代码了。但其实咱们静下心去一行行得读下去,就会发现其实并无很难理解,反而由于能多懂一点而感到开心。固然,我以为所谓的代码驱动不只仅是指将代码运行出来就能够了,更加剧要的是要去对代码进行分析,真正的读懂代码。一开始我以为读懂代码应该就是能把代码每一句看懂,而后知道这个代码在作什么,后来我发现作到这个依然是远远不够的,由于就算你看懂了每一句代码,让你从新编一个相似的程序你依然是不会。可是当你真正花了时间去学习,获得的也远比你想象的要多。

  • 实践上有什么经验教训?
    在作实验的时候,常常花了好久改出来的代码仍是不能用,仍是会出错,这样很打击个人自信心,每每作着作着既不想作了。但在现实中你仍是要继续硬着头皮去改正你的错误,我以为关于实践最重要的一点就是不要怕出错,不少人可能运行代码时一看到错误就会有些慌,不知道应该怎么办。我感受最有效的办法实际上是本身在阅读完代码以后,先想一下可能致使错误的缘由是什么,再根据你的想法去进行相应的修改,若是真的和你想的同样,修改完以后可以成功运行,那么你可能也会对本身解决问题的能力有了自信。

回答一下第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_系列函数)
  • 第十一章

网络编程步骤?

答:客户端:

一、经过socket函数获取一个socket文件描述符。程序经过这个文件描述符与内核的tcp/ip架构通信联系。

二、经过该描述符请求与服务器的链接(connect函数),此时须要事先知道服务器的ip和服务器上的应用程序的端口

三、当connect函数成功返回,则表示链接达成,则可经过该文件描述符或者recv,send该文件描述符,便可实现与某服务器端的通讯

服务器端:

一、经过socket函数获取一个socket文件描述符。程序经过这个文件描述符与内核的tcp/ip架构通信联系。

二、绑定端口(bind函数),端口人为设置,本机IP自动获取便可(端口和IP设置经过sockaddr_in结构体实现)。

三、监听socket函数返回文件描述符(listen函数)

四、当listen函数返回时,表示有请求,则使用accept获取请求,accept函数产生一个新的文件描述符,用于和该请求通讯。

五、读写该文件描述符或者recv,send该文件描述符,便可实现与某客户端的通讯

六、服务器端还能够继续监听socket文件描述符,接受其余端口的请求
  • 第十二章

并发编程是什么?

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

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

  • myod的改进

  • pwd的简单实现

  • ch06课上测试题目补作

  • mybash的简单实现

  • 第八周课下做业

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

无扣分项目。

课程收获与不足

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

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

  • 老师不断的在强调让咱们使用man -k和grep指令去检索系统调用以及查询宏定义,不得不说如今我感受本身的搜索能力获得了很大的提升。

  • 这个学期深刻理解计算机系统的学习更像是把以前两年所学的知识从新串联了一遍,从新复习了计算机导论、汇编、c语言的相关知识,在复习旧的知识同时,又掌握了许多新的知识和技巧,感受本身对知识的理解有了更深的认识。

本身须要改进的地方

争取进入状态更快,我进入状态慢多是自身的问题,因此,我以为我应该在假期的末尾就开始逐渐开始读书,这样能够早日进入状态。多读书读好书,利用本身的空闲时间来读一些好书来丰富本身的内在修养,而不是成天刷手机。

给学弟学妹们的学习建议

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

我以为个人最大问题就是进入学习应有的状态太慢了,我最开始的几周学习效率过低,每周的博客都要作好久好久,收获却不大。若是从新学习的话,我应该想办法让本身尽快进入这种学习模式,尽可能从假期进入到学习中去,提升学习效率。

分配好学习时间,尽可能把学习任务平铺开,天天学一部分,周末时间多的话能够多学一点,可是不要把全部的任务都留在最后一天,这样会给本身形成很大压力。

问卷调查

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

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

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

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

  • 学习效果本身满意吗?

刚开学的几周很不满意,以为本身效率过低,学了很长时间却收获很小。后来逐渐进入了学习状态,学习效率提升了,在加上有以前知识作基础,学习效果相对来讲较为满意。

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

我很但愿本身能保持这个习惯,也会努力去作到。

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

每周写博客,多理解、运行代码,期末总结,实验闭卷考试,上课讲解一些必要内容。

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

感受全部项目都有其存在的价值和意义,而且都是通过老师深思熟虑与反复斟酌筛选的,没有什么应该中止的。

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

多与同窗进行沟通,由此来知道本身作的有什么不足,来尽快改正,让同窗有更好的学习条件。

  • 本学期你与老师和同窗交互最多的一篇博客是哪篇?
    myod的实现
  • 本学期被阅读最多的博客是哪一篇?有何经验

实践题目实现od命令
这篇是本学期的第一篇实践题目博客,我写的比较详细,花了比较多的时间去写,以后还有一篇是改进版,也获得了加分,在此也给出连接。经验就是只要努力去学必定能够学会,而且获得回报。

期末总结博客连接

[期末总结博客连接](http://www.cnblogs.com/paypay/p/8124040.html

相关文章
相关标签/搜索