20144303石宇森 《信息安全系统设计基础》课程总结

20144303石宇森 《信息安全系统设计基础》课程总结

每周作业链接汇总

了解课程内容,阅读老师的博客。之后对学习内容进行总结,提出自己不懂以及最想解决的问题。安装虚拟机,学会其简单的操作方法。

  • 二维码:

对实验楼中的内容进行实践学习。了解linux系统,学会基本概念和操作,如终端、用户管理、文件创建、删除等等。对linux的核心命令熟练运用掌握。如find、locate、cheat、grep、which、whereis等。

  • 二维码:

学习vim的一些基本操作,如光标移动、保存退出、删除、复制、替换等等,gcc编译代码的过程及原理,实践应用gcc编译的方法,运用gdb对代码进行调试,学习makefile的基本原理及语法规范

  • 二维码:

理解三种数字(无符号数、补码、浮点数)的概念,理解什么是整数溢出,学会在64位机器上生成32位代码,理解掌握大端法和小端法,掌握布尔运算在C语言中的应用,掌握逻辑运算和位运算,学会补码的计算

  • 二维码:

熟练掌握编译产生汇编代码的方法,学会运用反汇编命令,理解操作数三种类型的定义,理解栈的特点,掌握gdb使用的流程并实践运用

  • 二维码:

学习Y86指令集的内容,理解并掌握Y86异常、Y86指令集功能码,学习HCL表达式,理解HCL表达式和C语言中表达式的区别,安装Y86模拟器并掌握其使用的方法,完成并仔细分析课后例题中的重点题

  • 二维码:

了解RAM、ROM、磁盘、固态硬盘,理解局部性的定义和性质,掌握缓存命中、缓存不命中、冲突不命中的定义,按照老师的要求在git中建立一tree,将代码分类管理

  • 二维码:

复习linux的常用命令,如man、cheat、grap、find、cd、vim、gdb等,对自己半个学期来的收获进行总结,发现自己学习过程中仍然存在的问题和不足

  • 二维码:

掌握Unix I/O中文件打开、读写、关闭的原理,通过实践熟悉文件打开,读写文件、关闭文件的函数调用,掌握I/O重定向的方法,理解标准I/O库的概念,在学习过程中发现问题并将问题发到论坛中与同学们共同讨论

  • 二维码:

对上一周课本中的知识回顾复习,学习老师在QQ群里发的代码,掌握每个代码运行的方法和功能,并对代码中不懂的函数、参数进行分析,理解代码功能是怎样实现的。学习视频,掌握两个重要命令:man -k key1 | grep key2| grep 2 和 grep -nr XXX /usr/include

  • 二维码:

对老师发的代码进学习,掌握进程创建和控制的系统调用及函数使用,理解异常及异常种类的定义,掌握异常处理的方法,理解进程和并发的概念,理解数组指针、指针数组、函数指针、指针函数的区别,理解信号机制:kill,alarm,signal,sigaction

  • 二维码:

本周主要复习了前三周的学习内容,对之前老师发的代码以及实验中用到的代码进行了仔细地分析、学习,理解数组指针、指针数组、函数指针、指针函数的定义,掌握他们的区别方法,理解信号产生的方法和信号处理函数

  • 二维码:

掌握网络编程模型,学习套接字接口的相关函数,理解wev服务器,掌握三种并发的方式:进程、线程、I/O多路复用,掌握线程控制及相关系统调用,掌握线程同步互斥及相关系统调用,对老师发的代码进行了仔细地分析、学习

  • 二维码:

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

  • 二维码:

实验报告链接汇总

熟悉linux开发环境,使用linux的ARM编译,了解嵌入式开发的基本过程

  • 二维码:

了解多线程程序设计的基本原理,熟悉终端I/O函数的使用,学习使用多线程来实现串口的收发处理,使用linux的armv4l-unknown-linux-gcc编译

  • 二维码:

掌握uC/OSII的移植过程,掌握C语言、汇编语言的混合编译

  • 二维码:

学习在linux下驱动设计的原理,掌握使用模块方式进行驱动开发调试的过程

  • 二维码:

掌握在ARM开发板实现一个简单WEB服务器的过程,学习在ARM开发板上的SOCKET网络编程,学习在linux环境下signal函数的调用

  • 二维码:

代码托管链接和二维码

  • git log --pretty=format:"%h %an, %ar : %s" 命令截图

  • 代码汇总量:

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

刚开始学习时,并没有意识到代码驱动学习的重要性,每次在git.oschina.net中上传代码的时候,都怀着一种不良的情绪,觉得这样做就是对时间极大的浪费,完全没有必要把老师给的代码下载下来再传上去啊。装完linux后,本应该完成linux下git的安装,但是因为对git学习的这种不良情绪的存在,就没有按老师的要求完成学习任务。

后来进入了老师的待及格队伍,在老师的严格监管下迫于压力才认真完成了git的安装,当时写了http://www.cnblogs.com/20144303sys/p/5953437.html 这篇博客。当时安装git的过程并不顺利,遇到了各种各样的问题,这就又让我对这个git的好感度下降了不少。

直到有一次,我的虚拟机突然爆炸,在登录界面一直登陆不进去,无奈之下选择了重新安装。但是重新安装虚拟机之后,之前敲过的代码、学习注释之类的不是都没有了吗?这时候,git的价值就体现出来了。这也让我想起了娄老师课上曾经告诉我们,现在要求做的事情,可能有一天真正用到的时候,就知道他的好处了。

之后每周我都是认认真真的将代码一个一个标上注释,以每周为一类上传。其实,git的用处不仅仅是能挽救我们的数据,我们用它来查改代码,增添代码都十分的简单。在完成第一次的git配置之后,每次上传代码,只需要简单的输三个命令就可以完成。这也让我明白,无论做什么事情,前期基础中付出越多的努力,以后做起来就会越简单

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

确实,要理解一个代码,硬生生的看是不够的,效率也比较低。通过对代码的增删和修改能让我们更快的理解代码。举一个简单的例子,比如说filesize这段代码。在第一次编译运行时,输出The size of /etc/networks is 54 。刚开始看到的时候一头雾水,后来把 /etc/networks修改成其他的文件路径,查看这些文件的大小之后,发现输出结果就是定义路径文件的大小。因此,不需要查代码中参数的意义,就可以将其理解消化。

或者有的时候我们对有些函数的功能不是很理解,可以把这段函数的代码删掉,再次运行,对比前后输出结果的不同,就能明白。

因此,加点代码,改点代码不仅能加深我们对代码的理解,也能提高学习的效率。

  • 实践上有什么经验教训?

在动手实践的过程中不要偷懒。觉得git没有意义,是浪费时间,不按老师要求完成。认为代码太过复杂,懒得去查各个参数和使用的函数。这些都是在学习过程中曾经出现的问题,也是实践的大忌。可能起初比较轻松的是那些省略掉实践过程的人。但那些真的按老师要求,一步步动手实践的同学越往后越轻松。所以,不能忽视每一次实践的机会,老师要求自己动手的东西一定要亲自实践。

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

感觉并没有抓住重点.....

1.系统硬件是如何组成的?

电脑组成硬件:主板、CPU、内存、显卡、电源、散热器、显示器。

主板:电脑核心部件,用于搭载电脑其余硬件设备的一个平台。

CPU:电脑核心部件,用于处理数据。

内存:电脑核心部件,用于给CPU提供数据存放的地方。

显卡:分为集成显卡和独立显卡,集成显卡是必须部件,独立显卡是可选部件,用于将数字信号转换为图形信号。

电源:根本部件,用于提供电脑各个硬件工作电压。

散热器:辅助类不可缺少部件,用于散去CPU工作产生的热量。

显示器:必备部件,用于将显卡的图形信号转换为图像。

2.信息如何处理表示?

三种最重要的数字表示:无符号,补码,浮点数

3.程序语言是如何转换成计算机语言的?

由C编译器生成IA32和X86-64汇编语言

4.处理器是如何设计的?

从设计单时钟周期、非流水线化的数据通路开始,然后引入流水线化的思想,将处理一条指令所需要的不同步骤实现为独立阶段。

5.如何消除循环的低效率?

提高局部性

6.存储器的结构?

寄存器、高速缓存、主存、本地二级存储、远程二级存储

7.什么是静态链接?

以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的可以加载和运行的可执行目标文件作为输出

8.进程的基本概念是什么?

进程是对一个正在执行的程序的一种抽象

9.虚拟存储器的功能有哪些?

虚拟存储器是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个人的一致的的私有的地址空间

10.什么是I\O?

I/O指输入输出,输入操作是从I/O设备拷贝数据到主存,而输出操作是从主存拷贝数据到i/o设备

11.如何进行网络编程?

利用socket、listen、connect、rent、rev等函数进行编程

12.并发和并行的区别是什么?

并发和并行从宏观上来讲都是同时处理多路请求的概念。但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。

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

我的加分共10分,其中3分来自于优秀博客加分,5分是问题总结加分,2分是匿名调查加分。

优秀博客:

二维码:

二维码:

二维码:

问题汇总:

二维码:

课程收获与不足

  • 自己的收获

一个学期的学习就快要完了,回过头总结这个学期这门课收获到了什么,我想主要是三个方面的进步。

第一个方面是课程知识学习。通过这一个学期的学习,掌握了《深入理解计算机系统》这本书中的知识。

第二个方面是学习工具使用方法的学习。在这一个学期的学习过程中,老师教会我们使用了多种学习工具,比如linux下的git、markdown、实验楼等等。这些学习工具不仅提高了我们学习的效率,也让我们学习的过程更加生动有趣,不仅仅停留在课本上。同时,这些学习工具在今后任何一门课程或是日常的工作和生活中,都能给我们带来极大的便利。当我们有一天用markdown完成排版任务,用git恢复丢失的数据,或是通过博客园回顾知识时,会想到是娄老师给予了我们这些宝贵的财富。

第三个方面是学习能力和心态的进步。从上学期的java学习到现在,在娄老师的教学方法下已经快一年多了。个人认为在学习能力方面有了较大的提升,懂得了如何使用学习工具,明白了怎样提高学习效率。比如说前段时间我的linux系统一直进不去,输入登录密码后又会重新弹出来登录界面。出现问题后,我就在博客园中搜索到了解决的办法,综合网上的各种资料,独立的挽救了我的虚拟机。我觉得这就是学习能力提升的一个表现吧。

  • 自己需要改进的地方

需要改进的地方,我觉得还是在学习中的惰性吧。每次老师在周一的时候就会下发本周的学习任务,但是我总是拖到周四、周五才开始学习。

还有就是在学习的时候不够耐心。就像是在代码学习的过程中,假如这个代码中有很多不懂得参数和函数,往往看着看着就会放掉其中一些细节的地方。

待及格管理制度的优缺点

  • 待及格期间多发的博客列表

git安装以及遇到的问题

第六周学习总结(上)

第六周学习总结(下)

  • 优缺点

优点:

让处在待及格队伍中的同学意识到差距和危机的存在,及时的告诫同学们不能再应付差事。让暂时成绩稍差的同学明白应该从什么地方开始做起,有了一个明确的目标和动力。也确保了这些同学每周都在认真完成学习任务。

  • 建议

希望老师能建立一个学习帮助机制。让一个成绩较好的同学帮助一个待及格队伍中的同学,解决他们在学习中遇到的问题,帮助他们提高成绩。很多时候待及格队伍中的同学有问题但找不到人能帮助解决问题。这可能会打消大家学习的积极性。

给学弟学妹们的学习建议

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

学习过程着眼重点,抓住细节。每周老师都会给这周学习的任务和考试重点,要提高学习效率自然要抓住每周的重点学习。同时,在学习过程中,也要注意每一处的细节。其实老师要求我们做的每一件事情都是他觉得精华的的东西。老师要求要完成的每一件事情都要认真完成,不能觉得做这件事没有意义就不愿意去做,不能只拘泥于眼前,要看到长远的影响。

问卷调查

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

20个小时

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

从进入待及格队伍之后,学习效率就有提高

  • 学习效果自己满意吗?

还算比较满意,但仍有很多事情没有做好

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

每周的随堂测试,待及格管理机制,自选实践项目

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

没有

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

改善一下待及格管理,建立一个学习帮助机制

本文链接和二维码

链接:http://www.cnblogs.com/20144303sys/p/6219906.html

二维码:

posted @ 2016-12-25 17:02  20144303石宇森  阅读(243)  评论(5编辑  收藏  举报