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

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

每周做业连接汇总

  • 第0周做业:针对课本十二章的内容提出本身的问题,并在以后的学习中慢慢思考与解答;成功安装虚拟机。
    html

  • 第1周做业:了解Linux操做系统,掌握核心的Linux命令,如find/locate/cheat/grep/which/whereis等,使用Linux中用户管理命令/系统相关命令/文件目录相关命令/打包压缩相关命令/比较合并相关命令/网络相关命令等。
    git

  • 第2周做业:熟悉vi的基本操做,熟悉gcc编译器的基本原理,学习使用gcc编译器的经常使用选项,学习使用gdb调试技术,熟悉makefile基本原理及语法规范,掌握静态库和动态库的生成与调用方法。
    web

  • 第3周做业:学习教材第二章《信息的表示和处理》,理解二进制在计算机中的重要地位,掌握布尔运算在C语言中的应用,理解有符号整数、无符号整数、浮点数的表示,理解补码的重要性,及课后习题详解。
    数据库

  • 第5周做业:掌握X86汇编基础。
    编程

  • 第6周做业:1.了解ISA抽象的做用,掌握ISA。
    vim

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

  • 期中总结:复习Linux经常使用命令,复习教材1-7章。
    浏览器

  • 第9周做业:掌握系统编程和系统调用的概念,掌握系统编程错误处理的方式,掌握Unix/Linux系统级I/O,掌握RIO及I/O重定向的方法。
    缓存

  • 第10周做业:掌握系统编程和系统调用的概念,掌握Unix/Linux系统级I/O。
    安全

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

  • 第12周做业:第9、10、十一周代码检查。

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

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

实验报告连接汇总

代码托管连接和二维码

  • 代码托管链接:https://git.oschina.net/senlinmilelu/IS20145218

  • git log --pretty=format:"%h - %an, %ar : %s"

  • 代码量汇总

  • 代码驱动的学习作到没有?
    • 作到了。
  • 加点代码,改点代码是理解的最好方式,谈谈你的心得
    • 咱们看到代码的时候总会下意识的以为太难懂了,看上去就很难理解,因此历来都是会去躲避学习代码,能不看就不看,能少看就少看,更别提加减代码了。但其实咱们静下心去一行行得读下去,就会发现其实并无很难理解,反而由于能多懂一点而感到开心。
  • 实践上有什么经验教训
    • 实践是锻炼咱们对各类命令的熟练程度,也能让咱们更加了解计算机语言,多动手老是没错的,不要每次为了考试就死记硬背一些命令,用熟了天然手到擒来。

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

回答一下第0周做业中本身提出的总题

  • 第一章问题:什么是并发?
    • 一个同时具备多个活动的系统。并行:用并发使一个系统运行地更快,并行能够在计算机系统多个抽象层次上运用。按照系统层次结构由高到低的顺序强调三个层次:线程级并发、指令级并行、单指令多数据并行。
  • 第二章问题:有符号数和无符号数之间在计算机中是怎么转化的?
    • C语言容许在各类不一样的数字数据类型之间作强制类型转换。将负数转换成无符号数可能会获得0。若是转换的无符号数太大以致于超出了补码可以表示的范围,可能会获得TMax。
    • C语言容许有符号数与无符号数之间的转换,转换的原则是底层的位表示保持不变。-
  • 第三章问题:一元操做和二元操做具体是什么?
    • 一元操做:只有一个操做数,既是源又是目的,能够是一个寄存器或者存储器。
    • 二元操做:第二个操做数既是源又是目的,两个操做数不能同时是存储器。
  • 第四章问题:如何使用Y86指令集进行操做?
    • Y86指令
movl:irmovl、rrmovl、mrmovl、rmmovl,分别显式地指明源和目的地的格式。第一个字母代表源的类型,i(当即数)、r(寄存器)或m(存储器 ),第二个字母表明目的,能够是r或者m。

注意:

1.两个存储器传送指令中的存储器引用方式是简单地基址和偏移量形式,即:
Imm(Eb) M[Imm+R[Eb]](基址+偏移量)寻址

2.不容许从一个存储器地址直接传送到另外一个存储器地址,也不容许将当即数传送到存储器。

OPl(整数操做指令):addl、subl、andl和xorl。只对寄存器数据进行操做,同时还设置条件码。
jXX(跳转指令):jmp、jle、jl、je、jne、jge、jg,根据分支指令的类型和条件码的设置来选择分支。
cmovXX(条件传送指令):cmovle、cmovl、cmove、cmovne、cmovge和comvg,与寄存器-寄存器传送指令rrmovl同样,但只有当条件码知足所须要的约束时才会更新目的寄存器的值。
call和ret:call指令将返回地址入栈,而后跳转到目的地址。ret指令从这样的过程调用中返回。
pushl和popl:入栈和出栈。
halt:中止指令的执行。
  • 第五章问题:优化程序性能须要哪些基本要求?
    • 让最多见的状况运行的快。
    • 在每一个循环内部缓存不命中数量最小。
    • 对局部变量的反复引用是好的,由于编译器可以将他们缓存在寄存器文件中。
    • 步长为1的引用模式是好的,由于存储器层次结构中全部层次上的缓存都是将数据存储为连续的块(空间局部性)。
  • 第六章问题:随机访问存储器区别是什么?
    • 随机访问存储器(RAM)
      1.静态RAM(SRAM):用来做为高速缓存存储器,每一个位存储在一个双稳态的存储器单元里。双稳态:电路能够无限期的保持在两个不一样的电压配置或者状态之一。只要供电,就会保持不变。即便有干扰,例如电子噪音来扰乱电压,当干扰消除后,电路就会恢复到稳定值。
      2.动态RAM(DRAM):用来做为主存以及图形系统的帧缓冲区。将每一个位存储为对一个电容的充电,当电容的电压被扰乱以后,他就永远都不会再恢复了。暴露在光线下会致使电容电压改变。
  • 第七章问题:静态链接器主要任务是什么?
    • 符号解析、重定位。
  • 第八章问题:怎么进行进程控制?
    • 获取进程ID
每一个进程有一个惟一的非零正数进程ID(PID)。
pid_t getpid(void);     /*返回调用进程的PID*/
pid_t getppid(void);             /*返回它的父进程的PID*/
- 建立和终止进程
进程老是处于如下三种状态之一:
•运行。在CPU上执行,或者等待被执行且最终会被内核调度。
•中止。进程的执行被挂起,且不会被调度。(与信号有关)

•终止。进程永远中止。进程终止的缘由:1)收到一个信号,默认行为是终止程序2)从主程序返回3)
 调用exit函数。

•exit函数以status退出状态来终止进程。void exit(int ststus)
•父进程经过调用fork函数建立一个新的运行子进程。
pid_t fork(void); /*子进程返回0,父进程返回子进程的pid,出错则返回-1。*/
  • 第九章问题:虚拟存储器有哪些做用?
    • 虚拟存储器的三个重要功能:
    • 将主存看作是一个存储在磁盘上的地址空间的高速缓存,在主存中只保护活动区域。
    • 为每一个进程提供了一致的地址空间,从而简化了存储器管理。
    • 保护了每一个进程的地址空间不被其余进程破坏
  • 第十章问题:有哪些I/O函数咱们可使用?
    • 应用程序能够经过open、close、lseek、read、write和stat这样的函数来访问Unix I/O。
  • 第十一章问题:如何搭建web服务器?
    (1)当一个客户端须要服务时,它向服务器发送一个请求,发起一个事务。例如,当Web览器须要一个文件时,它就发送一个请求给Web服务器
    (2)服务器收到请求后,解释它,并以适当的方式操做它的资源。例如,当Web服务器收到浏览器发出的请求后,它就读一个磁盘文件
    (3)服务器给客户端发送一响应,并等待下一个请求。例如,Web服务器将文件发送回客户端;
    (4)客户端收到响应并处理它。例如,当Web浏览器收到来自服务器的一页后,它就在屏幕上显示此页。
  • 第十二章问题:如何使用线程提升并行性?
    • 到目前为止,在对并发的研究中,咱们都假设并发线程是在单处许多现代机器具备多核处理器。并发程序一般在这样的机器上运理器系统上执行的。然而,在多个核上并行地调度这些并发线程,而不是在单个核顺序地调度,在像繁忙的Web服务器、数据库服务器和大型科学计算代码这样的应用中利用这种并行性是相当重要的。

课程收获与不足

  • 本身的收获(投入,效率,效果等)
    • 这一个学期以来对这门课程的投入时间不少,都是天天积累起来的。每周的任务量大体差很少,有几周任务比较重就须要花费更多时间,天天读一节或者天天作一点实践,累积一周就是一章的内容,累积一学期就是一整本书的内容,聚沙成塔不可谓不深入。
    • 而咱们花费时间和精力,效率却忽高忽低,有的时候明明深入钻研,付出大量时间,却收效甚微,由于咱们只聚焦在课本上,与之相关的、能够帮助理解的知识却一律不知,好比汇编学得很差的同窗,就会发现第三章的内容学起来比较困难;操做系统学的很差的同窗,会发现十二章内容很难理解。这就是咱们即便花了时间去读书,写了博客,作了实践,也效率低下,没法融会贯通的缘由。
    • 一个学期学一本书,不能说是彻底理解,但起码作到了解、记忆书中内容,经过实践习得一些基本操做,好比vim,gdb等的基本用法,起码作到这些才能保证咱们这一个学期的所花在这门课上的时间没有白费,才叫学有所成。
  • 本身须要改进的地方
    • 就如同前面说到的,有时候花了大量时间,效率却很低,只在乎每周任务是否已经完成,而不去作深的思考,电脑到底为何这样作,某条机器语言到底表明什么,这些都是咱们长久以来忽略的,而过多的把目光投在写博客上。
  • 若是有结对,写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
    • 在本学期的五次实验中,有结对进行。结对实验能够取长补短,本身欠缺的知识说不定正好是对方擅长的,并且团队合做能够更好地促进两人彼此学习,实现1+1>2的效果。但愿老师之后能够多给些能够组队进行得项目。

给学弟学妹们的学习建议

  • 若是从新学习这门课,怎么作才能够学的更好
    • 首先要注重学习的效率,每一周的任务并非随便在书上找点内容写完博客就能够了,每周的考试会提醒咱们其实在上一周本身并无学到什么,因此必定要注重实践,代码必要的话本身敲一敲,必定要本身运行,不要到了学期末连怎么使用虚拟机都不知道。
    • 其次是每一章学习任务都或多或少跟咱们之前学过的或者如今正在学的知识有关,咱们的知识就像一整条链条,环环紧扣,有时加入新的分支,可是若是有一环是彻底断开的,那就至关于咱们其实什么都没有学到,每周只是在应付而已,因此建议学弟学妹们不要只是应付博客,更要为了本身能掌握的知识去学习,去努力。

问卷调查

  • 你平均每周投入到本课程多长时间?
    • 天天大概都会有几个小时来学习,每周将近20个小时。
  • 每周的学习效率有提升吗?
    • 在慢慢找寻学习这门课的方法,效率是慢慢提升的。
  • 学习效果本身满意吗?
    • 一开始的时候确实没找到正确方法,不知道每周本身在干什么,后来渐渐明白了本身的任务及目标。整体来讲,本学期的学习效果仍是比较满意的。
  • 课程结束后会继续一周至少一篇博客吗?(若是能作到,毕业时我把你的博客给你集结成一本书)
  • 你以为这门课老师应该继续作哪一件事情?
    • 首先每周的总结也就是博客是必须的,并且内容上要多体现一些实践的东西,而不是单纯的抄一抄课本上的内容。
    • 其次每周考试的内容,也能够多一些理解性的内容,能够检验同窗们过去的一周是否是真的理解了,仍是只抄了书。
    • 最后,查代码或者检查操做的时候应该扩大一些范围,考试分数高的实践不必定强。
  • 你以为这门课老师应该中止作哪一件事情?
    • 目前教学方法能够继续下去,颇有效果。
  • 你以为这门课老师应该开始作什么新的事情?
    • 能够穿插一些小项目在课程学习中,而不是做为加分项出现。

给出本文连接和二维码

]第十五周](http://www.cnblogs.com/senlinmilelu/p/6212453.html)

相关文章
相关标签/搜索