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.什么是IO?
I/O指输入输出,输入操作是从I/O设备拷贝数据到主存,而输出操作是从主存拷贝数据到i/o设备
11.如何进行网络编程?
利用socket、listen、connect、rent、rev等函数进行编程
12.并发和并行的区别是什么?
并发和并行从宏观上来讲都是同时处理多路请求的概念。但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。
你有什么项目被加分,谈谈你的经验
我的加分共10分,其中3分来自于优秀博客加分,5分是问题总结加分,2分是匿名调查加分。
优秀博客:
二维码:
二维码:
二维码:
问题汇总:
二维码:
课程收获与不足
- 自己的收获
一个学期的学习就快要完了,回过头总结这个学期这门课收获到了什么,我想主要是三个方面的进步。
第一个方面是课程知识学习。通过这一个学期的学习,掌握了《深入理解计算机系统》这本书中的知识。
第二个方面是学习工具使用方法的学习。在这一个学期的学习过程中,老师教会我们使用了多种学习工具,比如linux下的git、markdown、实验楼等等。这些学习工具不仅提高了我们学习的效率,也让我们学习的过程更加生动有趣,不仅仅停留在课本上。同时,这些学习工具在今后任何一门课程或是日常的工作和生活中,都能给我们带来极大的便利。当我们有一天用markdown完成排版任务,用git恢复丢失的数据,或是通过博客园回顾知识时,会想到是娄老师给予了我们这些宝贵的财富。
第三个方面是学习能力和心态的进步。从上学期的java学习到现在,在娄老师的教学方法下已经快一年多了。个人认为在学习能力方面有了较大的提升,懂得了如何使用学习工具,明白了怎样提高学习效率。比如说前段时间我的linux系统一直进不去,输入登录密码后又会重新弹出来登录界面。出现问题后,我就在博客园中搜索到了解决的办法,综合网上的各种资料,独立的挽救了我的虚拟机。我觉得这就是学习能力提升的一个表现吧。
- 自己需要改进的地方
需要改进的地方,我觉得还是在学习中的惰性吧。每次老师在周一的时候就会下发本周的学习任务,但是我总是拖到周四、周五才开始学习。
还有就是在学习的时候不够耐心。就像是在代码学习的过程中,假如这个代码中有很多不懂得参数和函数,往往看着看着就会放掉其中一些细节的地方。
待及格管理制度的优缺点
- 待及格期间多发的博客列表
- 优缺点
优点:
让处在待及格队伍中的同学意识到差距和危机的存在,及时的告诫同学们不能再应付差事。让暂时成绩稍差的同学明白应该从什么地方开始做起,有了一个明确的目标和动力。也确保了这些同学每周都在认真完成学习任务。
- 建议
希望老师能建立一个学习帮助机制。让一个成绩较好的同学帮助一个待及格队伍中的同学,解决他们在学习中遇到的问题,帮助他们提高成绩。很多时候待及格队伍中的同学有问题但找不到人能帮助解决问题。这可能会打消大家学习的积极性。
给学弟学妹们的学习建议
- 如果重新学习这门课,怎么做才可以学的更好
学习过程着眼重点,抓住细节。每周老师都会给这周学习的任务和考试重点,要提高学习效率自然要抓住每周的重点学习。同时,在学习过程中,也要注意每一处的细节。其实老师要求我们做的每一件事情都是他觉得精华的的东西。老师要求要完成的每一件事情都要认真完成,不能觉得做这件事没有意义就不愿意去做,不能只拘泥于眼前,要看到长远的影响。
问卷调查
- 你平均每周投入到本课程多长时间?
20个小时
- 每周的学习效率有提高吗?
从进入待及格队伍之后,学习效率就有提高
- 学习效果自己满意吗?
还算比较满意,但仍有很多事情没有做好
- 你觉得这门课老师应该继续做哪一件事情?
每周的随堂测试,待及格管理机制,自选实践项目
- 你觉得这门课老师应该停止做哪一件事情?
没有
- 你觉得这门课老师应该开始做什么新的事情?
改善一下待及格管理,建立一个学习帮助机制
本文链接和二维码
链接:http://www.cnblogs.com/20144303sys/p/6219906.html
二维码: