2017-2018-1 20155214 《信息安全系统设计基础》课程学习总结-程序员宅基地

2017-2018-1 20155214 《信息安全系统设计基础》课程学习总结

目录

  1. 每周作业汇总
  2. 课程学习感悟和思考
  3. 代码托管
  4. 课程收获与不足
  5. 给开学初的你和学弟学妹们的学习建议
  6. 问卷调查
  7. 关于本文

每周作业汇总

第1周学习总结

  • 简介
  1. 掌握静态库和动态库的生成与调用方法
  2. 了解链接的概念
  • 相关博客二维码

1071473-20171228195749178-406951877.png

第3周学习总结

  • 简介
  1. 理解二进制在计算机中的重要地位
  2. 掌握布尔运算在C语言中的应用
  3. 理解有符号整数、无符号整数、浮点数的表示
  4. 理解补码的重要性
  5. 进一步理解“信息=位+上下文”
  6. 熟悉makefile基本原理及语法规范
  • 相关博客二维码

1071473-20171228200559241-1568754812.png

第4周学习总结

  • 简介
  1. 用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名
  2. 查询及阅读源码技巧
  • 相关博客二维码

1071473-20171228201140897-323547864.png

第5周学习总结

  • 简介
  1. 理解逆向的概念
  2. 掌握X86汇编基础,能够阅读(反)汇编代码
  3. 了解ISA(指令集体系结构)
  4. 理解函数调用栈帧的概念,并能用GDB进行调试
  • 相关博客二维码

1071473-20171228201640866-993845753.png

第6周学习总结

  • 简介
  1. 了解异常及其种类
  2. 理解进程和并发的概念
  3. 掌握进程创建和控制的系统调用及函数使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv,
  4. 理解数组指针、指针数组、函数指针、指针函数的区别
  5. 理解信号机制:kill,alarm,signal,sigaction
  6. 掌握管道和I/O重定向:pipe, dup, dup2
  • 相关博客二维码

1071473-20171228202128975-233438121.png

第7周学习总结

  • 简介
    1.了解ISA抽象的作用
  1. 掌握ISA,并能举一反三学习其他体系结构
  2. 了解流水线和实现方式
  • 相关博客二维码

1071473-20171228202444819-649718355.png

第8周学习总结

  • 简介
  1. 掌握三种并发的方式:进程、线程、I/O多路复用
  2. 掌握线程控制及相关系统调用
  3. 掌握线程同步互斥及相关系统调用
  • 相关博客二维码

1071473-20171228202719803-79385826.png

第9周学习总结

  • 简介
  1. 了解常见的存储技术(RAM、ROM、磁盘、固态硬盘等)
  2. 理解局部性原理
  3. 理解缓存思想
  4. 理解局部性原理和缓存思想在存储层次结构中的应用
  5. 高速缓存的原理和应用
  • 相关博客二维码

1071473-20171228203427788-873160026.png

第11周学习总结

  • 简介
  1. 理解虚拟存储器的概念和作用
  2. 理解地址翻译的概念
  3. 理解存储器映射
  4. 掌握动态存储器分配的方法
  5. 理解垃圾收集的概念
  6. 了解C语言中与存储器有关的错误
  • 相关博客二维码

1071473-20171228203705303-25265406.png

第13周学习总结

  • 简介
  1. 本章主要学习网络编程,重点研究 客户端-服务器编程模型 。
  2. socket服务器和客户端搭建
  3. daytime服务器
  4. echo服务器
  5. wc服务器
  6. 服务器迭代
  7. 服务器并发
  8. 服务器文件简单加密
  • 相关博客二维码

1071473-20171228204116209-1337622061.png

第14周学习总结

  • 简介
  1. 我们描述许多提高代码性能的技术。理想的情况是编译器能够接受我们编写的任何代码并产生尽可能高效的、具有指定行为的机器级程序
  2. 现代编译器采用了复杂的分析和优化方式而且变得越来越好,然而即使是最好的编译器也受到了妨碍优化因素的阻碍。程序员必须编写容易优化的代码,帮助编译器。
  • 相关博客二维码

1071473-20171228204733241-533920525.png

实验报告链接汇总

实验一 开发环境的熟悉

  • 简介
  1. 建立实验目录"mkdir linux_组员1学号_组员2学号"。
  2. 在实验目录中编写“hello word”程序,另外补充几行打印所有组员的学号姓名。
  3. 分别用gcc和交叉编译器arm-none-linux-gnuenbi-gcc编译hello.c,用gcc编译的可执行文件命名linuxhello:gcc hello.c -o linuxhello; 用arm-none-linux-gnuenbi-gcc编译的命名为armhello: /usr/local/toolchain/toolchain4.3.2/bin/arm-none-linux-gnuenbi-gcc hello.c -o armhello。
  4. 分别运行linuxhello,armhello。
  • 相关博客二维码

1071473-20171228205634756-1590360173.png

实验二 固件程序设计

  • 简介
  1. 注意不经老师允许不准烧写自己修改的代码
  2. 两人(个别三人)一组
  3. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM)
  4. 提交破解程序中产生LIC的截图
  5. 提交破解成功的截图
  • 相关博客二维码

1071473-20171228210010209-1798640016.png

实验三 实时系统

  • 简介
  1. 学习使用Linux命令wc(1)
  2. 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端
  3. 客户端传一个文本文件给服务器
  4. 服务器返加文本文件中的单词数
  5. 使用多线程实现wc服务器并使用同步互斥机制保证计数正确
  6. 上方提交代码
  7. 下方提交测试
  8. 对比单线程版本的性能,并分析原因
  9. 交叉编译多线程版本服务器并部署到实验箱中
  10. PC机作客户端测试wc服务器
  • 相关博客二维码

1071473-20171228210346709-795816745.png

实验四 外设驱动程序设计

  • 简介
  1. 学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章
  2. 提交康奈尔笔记的照片(可以多张)
  3. 在Ubuntu完成资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章的test试验
  4. 提交编译,加载模块,卸载模块,测试运行的截图(要多张,全屏,体现学号信息)
  • 相关博客二维码

1071473-20171228210836334-495282683.png

实验五 通讯协议设计

  • 简介
  1. 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的作业
  2. 在Ubuntu中实现对实验二中的“wc服务器”通过混合密码系统进行防护
  3. 运行实验箱中,ARM调用Z32算法的实验,提交实验截图.用Z32的国密算法重新改写“wc服务器”的混合密码系统防护
  • 相关博客二维码

1071473-20171228211141475-1482406354.png

其他(感悟、思考)

这学期倏忽间就过去了,《信息安全系统设计基础》这门课让我学到了很多。CSAPP是一本很好的教材,值得反复阅读。即使是浅尝辄止,也已经让我受益匪浅。

在学习这条道路上,惰性总会让我们偏安一隅。学习新技术,用逻辑语言将所学所得表述出来是一件不简单的事。这也是博客的难点之一。但一旦跨出了限制自身的区域。知识又是无穷无尽,寻找到自己的源动力应该是学习的根本。

vim学习,git版本控制,gdb调试,查看man文档,这些都是基础技能。当我们扎稳篱笆,其他知识的学习就像是填白。

代码托管

  • besti155214

https://gitee.com/besti155214/BESTI.IS.ISSDB.20155214

  • 码云链接二维码

1071473-20171228213610116-1212647618.png

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

第1周作业中提出的问题比较偏向框架概念,抓住了学习重点。

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

  • 问题1:Unix和Linux之间的区别?

    解决方案:通过搜索引擎初步了解,Unix侧重商业版,由封闭团队开发,注重对现有BSD做修改以适合80386系统。Linux作为免费软件,开放开发,使用类Unix内核的Minix作为模板研发,提供完整的Unix接口。

  • 问题2:命令行和shell,虚拟终端Terminal的联系?

    解决方案:shell解读并执行处理命令行,实行人机交互,执行脚本等。Terminal作为虚拟终端为shell提供命令行用户界面。

  • 问题3:如何理解“每个I/O设备,包括磁盘、键盘、显示器,甚至是网络都可以视作文件(字节序列)?

    解决方案:将Linux中的事物阐释为字节流,文件是对I/O的抽象,那么所有的输入输出都可以通过相同的Linux工具进行读写。主要分为普通文件特殊文件目录文件

  • 问题4:并发和超线程的区别?

    解决方案:当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。采用超线程即是可在同一时间里,应用程序可以使用芯片的不同部分,可以使芯片在任一时刻同时进行不冲突的多线程处理,使芯片性能得到提升。

  • 问题5:重定位和重定向的区别?

    解决方案:通过链接器将符号引用指向新生成的对应存储器,称为重定位数据节。重定向通过管道将父进程的标准输入与子进程的标准输出相连接。

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

优秀作业(给出链接和二维码)

第4周学习总结

  • 相关博客二维码

1071473-20171228201140897-323547864.png

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

本项无。

课程收获与不足

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

操作系统的框架有了深入理解,对C语言实现流程更加清楚了。

自己需要改进的地方

个人在文档编辑,PPT制作方面亟需提升,还需要对代码的牢固性进行完善。

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

结对同学在进行试验箱操作时,对我的动手能力有很大帮助。

给开学初的你和学弟学妹们的学习建议

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

深入学习确实是一件很累的事情,特别是在挖掘自己的思维亮点这件事上,不必强求,但也不要因为惰性而限制自己的能力。

课程学习中学到的很多工具对当前,或是日后的学习工作都很有帮助,一定要好好掌握。

问卷调查

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

    教材学习4个小时,代码实现6个小时,博客撰写4个小时。

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

    在熟悉学习流程的基础下,学习效率略有提高,但相比上学期,有创造性的想法减少了。

  • 学习效果自己满意吗?课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书送给你作纪念)

    主动写专业博客的话会有压力。或许日志和学习博客穿插会比较好些。任课老师对博客的看法也会有影响。

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

    课后练习对于能力提升来说确实不错,而且还会减少课上练习由于各种原因无法完成的压力。

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

    结对学习对我而言并没有起到良性作用,或许会在帮助解决他人问题上重复强化解决某一具体问题的经验,但并不会产生思维亮点,感觉就像重复工作。

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

    我觉的可以设立一些3人小组设计的大作业,弥补个人的能力不足,产生更多的思维碰撞。

参考资料

  • 关于本文

2017-2018-1 20155214 《信息安全系统设计基础》课程学习总结

  • 二维码
    1071473-20171228230950256-904053400.png

转载于:https://www.cnblogs.com/besti155214/p/8137884.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/NavyJhon2015/article/details/101715144

智能推荐

python简易爬虫v1.0-程序员宅基地

文章浏览阅读1.8k次,点赞4次,收藏6次。python简易爬虫v1.0作者:William Ma (the_CoderWM)进阶python的首秀,大部分童鞋肯定是做个简单的爬虫吧,众所周知,爬虫需要各种各样的第三方库,例如scrapy, bs4, requests, urllib3等等。此处,我们先从最简单的爬虫开始。首先,我们需要安装两个第三方库:requests和bs4。在cmd中输入以下代码:pip install requestspip install bs4等安装成功后,就可以进入pycharm来写爬虫了。爬

安装flask后vim出现:error detected while processing /home/zww/.vim/ftplugin/python/pyflakes.vim:line 28_freetorn.vim-程序员宅基地

文章浏览阅读2.6k次。解决方法:解决方法可以去github重新下载一个pyflakes.vim。执行如下命令git clone --recursive git://github.com/kevinw/pyflakes-vim.git然后进入git克降目录,./pyflakes-vim/ftplugin,通过如下命令将python目录下的所有文件复制到~/.vim/ftplugin目录下即可。cp -R ...._freetorn.vim

HIT CSAPP大作业:程序人生—Hello‘s P2P-程序员宅基地

文章浏览阅读210次,点赞7次,收藏3次。本文简述了hello.c源程序的预处理、编译、汇编、链接和运行的主要过程,以及hello程序的进程管理、存储管理与I/O管理,通过hello.c这一程序周期的描述,对程序的编译、加载、运行有了初步的了解。_hit csapp

18个顶级人工智能平台-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏27次。来源:机器人小妹  很多时候企业拥有重复,乏味且困难的工作流程,这些流程往往会减慢生产速度并增加运营成本。为了降低生产成本,企业别无选择,只能自动化某些功能以降低生产成本。  通过数字化..._人工智能平台

electron热加载_electron-reloader-程序员宅基地

文章浏览阅读2.2k次。热加载能够在每次保存修改的代码后自动刷新 electron 应用界面,而不必每次去手动操作重新运行,这极大的提升了开发效率。安装 electron 热加载插件热加载虽然很方便,但是不是每个 electron 项目必须的,所以想要舒服的开发 electron 就只能给 electron 项目单独的安装热加载插件[electron-reloader]:// 在项目的根目录下安装 electron-reloader,国内建议使用 cnpm 代替 npmnpm install electron-relo._electron-reloader

android 11.0 去掉recovery模式UI页面的选项_android recovery 删除 部分菜单-程序员宅基地

文章浏览阅读942次。在11.0 进行定制化开发,会根据需要去掉recovery模式的一些选项 就是在device.cpp去掉一些选项就可以了。_android recovery 删除 部分菜单

随便推点

echart省会流向图(物流运输、地图)_java+echart地图+物流跟踪-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏6次。继续上次的echart博客,由于省会流向图是从echart画廊中直接取来的。所以直接上代码<!DOCTYPE html><html><head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /&_java+echart地图+物流跟踪

Ceph源码解析:读写流程_ceph 发送数据到其他副本的源码-程序员宅基地

文章浏览阅读1.4k次。一、OSD模块简介1.1 消息封装:在OSD上发送和接收信息。cluster_messenger -与其它OSDs和monitors沟通client_messenger -与客户端沟通1.2 消息调度:Dispatcher类,主要负责消息分类1.3 工作队列:1.3.1 OpWQ: 处理ops(从客户端)和sub ops(从其他的OSD)。运行在op_tp线程池。1...._ceph 发送数据到其他副本的源码

进程调度(一)——FIFO算法_进程调度fifo算法代码-程序员宅基地

文章浏览阅读7.9k次,点赞3次,收藏22次。一 定义这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO 算法并不能保证这些页面不被淘汰。这里,我_进程调度fifo算法代码

mysql rownum写法_mysql应用之类似oracle rownum写法-程序员宅基地

文章浏览阅读133次。rownum是oracle才有的写法,rownum在oracle中可以用于取第一条数据,或者批量写数据时限定批量写的数量等mysql取第一条数据写法SELECT * FROM t order by id LIMIT 1;oracle取第一条数据写法SELECT * FROM t where rownum =1 order by id;ok,上面是mysql和oracle取第一条数据的写法对比,不过..._mysql 替换@rownum的写法

eclipse安装教程_ecjelm-程序员宅基地

文章浏览阅读790次,点赞3次,收藏4次。官网下载下载链接:http://www.eclipse.org/downloads/点击Download下载完成后双击运行我选择第2个,看自己需要(我选择企业级应用,如果只是单纯学习java选第一个就行)进入下一步后选择jre和安装路径修改jvm/jre的时候也可以选择本地的(点后面的文件夹进去),但是我们没有11版本的,所以还是用他的吧选择接受安装中安装过程中如果有其他界面弹出就点accept就行..._ecjelm

Linux常用网络命令_ifconfig 删除vlan-程序员宅基地

文章浏览阅读245次。原文链接:https://linux.cn/article-7801-1.htmlifconfigping &lt;IP地址&gt;:发送ICMP echo消息到某个主机traceroute &lt;IP地址&gt;:用于跟踪IP包的路由路由:netstat -r: 打印路由表route add :添加静态路由路径routed:控制动态路由的BSD守护程序。运行RIP路由协议gat..._ifconfig 删除vlan