20145219 《信息安全系统设计基础》课程总结
20145219 《信息安全系统设计基础》课程总结
每周作业链接汇总
-
-
简要内容:
1、了解课程上课方式,做好心理预期
2、阅读老师给出的博客,并回答相关问题
3、快速翻阅一下课本,对每章内容提出一个问题
4、安装虚拟机,并解决安装过程中出现的问题
-
二维码:
-
-
-
简要内容:实验楼实验一
1、了解Linux操作系统
2、核心的Linux命令:find/locate/cheat/grep/which/whereis,熟练应用“搜索”进行举一反三的学习
3、Linux中用户管理命令/系统相关命令/文件目录相关命令/打包压缩相关命令/比较合并相关命令/网络相关命令等
-
二维码:
-
-
-
简要内容:实验楼vim编辑器、GDB简明教程、Linux系统编程;课本第一章《计算机系统漫游》、第七章《链接》
1、Linux系统下的开发环境
2、vi的基本操作
3、gcc编译器的基本原理、gcc编译器的常用选项
5、gdb调试技术
6、makefile基本原理及语法规范
7、静态库和动态库的生成与调用方法
8、C程序中模块的概念,模块分解的“高内聚,低耦合”的原则
9、理解信息的概念、用od 命令
od -tc -tx1 hello.c
查看源文件、 冯式结构、 CPU执行指令的操作(加载、存储、操作、跳转)、理解存储系统的核心思想:缓存、操作系统核心抽象(文件、虚存、进程、虚拟机)10、链接器的两个任务、目标文件的三种形式、目标文件格式、 ELF文件格式、readelf命令、全局符号、处理目标文件
-
二维码:
-
-
-
简要内容:课本第二章《信息的表示和处理》
1、三种数字、进制转换、
gcc -m32
生成32位的代码、字节顺序、逻辑运算和位运算、掩码、0扩展和符号扩展、整数运算溢出、IEEE浮点标准、浮点数运算的不精确性与舍入、 整数与浮点数转换规则2、做重点习题:2.4、2.6、2.8、2.11、2.13、2.14、2.18、2.19、2.21、2.23、2.24、2.25、2.27、2.29、2.33、2.34、2.39、2.40、2.42、2.43、2.44、2.45、2.47、2.50、2.52、2.54
-
二维码:
-
-
-
简要内容:课本第三章《程序的机器级表示》
1、DOS时代的平坦模式、8086的分段模式、 IA32的带保护模式的平坦模式、ISA、使用
gcc -S xxx.c -o xxx.s
获得汇编代码、用objdump -d xxx
反汇编、不同数据的汇编代码后缀2、查看二进制文件可以用od 命令查看,也可以用gdb的x命令;more或less命令结合管道查看,使用输出重定向来查看
3、Linux和Windows的汇编格式区别:ATT格式和Intel格式
4、寄存器、条件码寄存器
5、寻址方式、操作数的三种类型、有效地址的计算方式
6、汇编指令: MOV、push、pop、jmp、leal、CMP、SUB、SET、call、ret,目的操作数的类型,算术和逻辑运算,移位操作移位量,跳转语句
7、栈帧结构,关于栈帧的gdb命令:bt/frame/up/down
8、做重点习题:3.1、3.3、3.5、3.6、3.9、3.14、3.15、3.16、3.22、3.23、3.27、3.29、3.30、3.33、3.34
-
二维码:
-
-
-
简要内容:课本第四章《处理器体系结构》
1、ISA抽象、Y86处理器、流水线和实现方式
2、做重点习题:4.1 4.2 4.5 4.6 4.8 4.10 4.11 4.12 4.16 4.17 4.19 4.21 4.24
-
二维码:
-
-
-
简要内容:课本第六章《存储器层次结构》
1、三种常见存储技术、磁盘、总线、访问时间、读写事务、逻辑磁盘块
2、局部性原理、数据引用局部性、取指令局部性
3、存储层次结构、缓存思想
4、高速缓存结构、映射、命中、缓存管理
5、做重点习题:6.2 6.3 6.4 6.8 6.9 6.10 6.11 6.12 6.13
-
二维码:
-
-
-
简要内容:复习
1、复习Linux常用命令,特别是
man -k
,cheat
,grep -nr xxx /usr/include
2、复习vi, gcc, gdb,make的使用
3、复习教材1-7章、总结每周的考题
-
二维码:
-
-
-
简要内容:课本第10章《系统级I/O》
1、每个系统调用的参数、返回值,查帮助文档
2、掌握两个重要命令:
man -k key1 | grep key2| grep 2
根据关键字检索系统调用;grep -nr XXX /usr/include
查找宏定义,类型定义3、Unix I/O、打开和关闭文件、用RIO包健壮地读写、读取文件元数据、共享文件、I/0重定向、标准I/O和I/O函数
4、做重点习题:10.1、10.2、10.3、10.4、10.5
-
二维码:
-
-
-
简要内容:视频,课本附录A,代码理解和调试
1、三种风格的错误处理
2、代码:cp1.c、echostate.c、fileinfo.c、filesize.c、ls1.c、ls2.c、setecho.c、spwd.c、testioctl.c、who1.c、who2.c
-
二维码:
-
-
-
简要内容:课本第八章《异常控制流》,代码理解和调试
1、代码:argv(argv.h、freemakeargv.c、makeargv.c、argtest.c),env(environ.c、environvar.c),fifo(consumer.c、producer.c、testmf.c),pipe(listargs.c、pipe.c、pipedemo.c、pipedemo2.c、stdinredir1.c、stdinredir2.c、testtty.c、whotofile.c),signal(sigdemo1.c、sigdemo2.c、sigdemo3.c、sigactdeom.c、sigactdeom2.c),exec(exec1.c、exec2.c、exec3.c),forkdemo(forkdemo1.c、forkdemo2.c、forkdemo3.c、forkdemo4.c),forkgdb.c,psh(psh1.c、psh2.c),testbuf(testbuf1.c、testbuf2.c、testbuf3.c),testpid、testpp、testsystem,waitdemo(waitdemo1.c、waitdemo2.c)
2、异常及其种类、异常处理
3、进程和并发、进程创建和控制的系统调用及函数使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv
4、信号机制:kill,alarm,signal,sigaction
5、管道和I/O重定向:pipe, dup, dup2
-
二维码:
-
-
-
简要内容:视频、复习
1、复习9、10、11周代码
2、数组指针、指针数组、函数指针、指针函数的区别
3、信号:查看、生命周期、产生、处理
-
二维码:
-
-
-
简要内容:课本第十一章《网络编程》、第十二章《并发编程》,代码理解和调试
1、代码:hello_multi.c、hello_multi1.c、hello_single.c、incprint.c、twordcount1.c、twordcount2.c、twordcount3.c、twordcount4.c、condvar.c、count.c、countwithmutex.c、cp_t.c、createthread.c、semphore.c、share.c、threadexit.c
2、客户端-服务器编程模型、网络、套接字、Web服务器
3、基于进程的并发编程、基于 I/O 多路复用的并发编程、基于线程的并发编程、多线程程序中的共享变量、用信号量同步线程、使用线程提高并行性、其他并发问题
-
二维码:
-
-
-
简要内容:课本第九章《虚拟存储器》
虚拟存储器的概念和作用、地址翻译、存储器映射、动态存储器分配的方法、垃圾收集、C语言中与存储器有关的错误
-
二维码:
-
实验报告链接汇总
-
-
简要内容:
熟悉Linux开发环境,学会Linux开发环境的配置和使用,使用Linux的arm编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。
-
二维码:
-
-
-
简要内容:
学习、读懂02_pthread、03_tty中的代码,配置实验环境完成实验指导书中的实验2、3。
-
二维码:
-
-
-
简要内容:
根据实验指导书进行实时软件的安装(ADS、GIVEIO驱动、JTAG驱动),配置实验环境并对软件进行测试,运行测试程序。
-
二维码:
-
-
-
简要内容:
掌握实时系统应用和驱动程序的编写,在模块化方式下进行驱动开发调试。
-
二维码:
-
-
-
简要内容:
在arm开发板上实现一个简单web服务器的过程,在arm开发板上进行socket网络编程。
-
二维码:
-
代码托管
-
二维码
-
截图 git log --pretty=format:"%h - %an, %ar : %s" 的结果
-
代码量汇总
-
代码驱动的学习做到没有?
做到了。本学期刚开始的时候只是简单地上传了代码,没有分目录,描述也很简单。后来,看了老师发的《代码驱动的学习》博客后,我认识到了代码管理的重要性,恰逢此时,因为我之前不规范的上传代码导致我的项目工程出了问题,于是我新建了一个项目重新上传代码,按照博客上的要求,目录清晰、一个一个代码的添加并注释。
-
实践上有什么经验教训
开学初建立的工程由于上传后在本地、远程都更改了很多,所以在第5周就发现怎么上传都不能成功,最后一怒之下废弃了原项目,重新新建了一个项目,重新上传了之前的代码,之后一直按照要求一步一步的添加、上传再也没有出现过问题。
回答一下第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_系列函数)
-
第十一章
网络编程步骤?
答:客户端:
1、通过socket函数获取一个socket文件描述符。程序通过这个文件描述符与内核的tcp/ip架构通讯联系。 2、通过该描述符请求与服务器的连接(connect函数),此时需要事先知道服务器的ip和服务器上的应用程序的端口 3、当connect函数成功返回,则表示连接达成,则可通过该文件描述符或者recv,send该文件描述符,即可实现与某服务器端的通信
服务器端:
1、通过socket函数获取一个socket文件描述符。程序通过这个文件描述符与内核的tcp/ip架构通讯联系。 2、绑定端口(bind函数),端口人为设置,本机IP自动获取即可(端口和IP设置通过sockaddr_in结构体实现)。 3、监听socket函数返回文件描述符(listen函数) 4、当listen函数返回时,表示有请求,则使用accept获取请求,accept函数产生一个新的文件描述符,用于和该请求通信。 5、读写该文件描述符或者recv,send该文件描述符,即可实现与某客户端的通信 6、服务器端还可以继续监听socket文件描述符,接受其他端口的请求
-
第十二章
并发编程是什么?
答:并发编程是指在一台处理器上“同时”处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。
你有什么项目被加分,谈谈你的经验
-
优秀作业
-
总结
无。
-
项目
-
二维码:
-
-
教程
无。
-
竞赛
无。
-
扇贝背单词(对四六级有没有影响?)
我想应该是有帮助的吧,毕竟四级过了,影响总在不知不觉中产生并起作用,打卡已经成为我每天的习惯了。
你有什么项目被扣分,谈谈你的教训
无扣分项目。
待及格管理制度的优缺点(进入过的同学必写)
没有进入过,所以不太了解,不过可以看到老师为了不让部分同学落下进度做出的努力。
课程收获与不足
-
自己的收获(投入,效率,效果等)
在这学期的学习中,我清晰的感受到了效率、投入的重要性。刚开始,可能是由于刚过完假期,我一直不太能进入状态,效率很低,收获也寥寥无几,感觉老师的要求太多了,而自己却完全觉得是在浪费时间。后来,我逐渐进入了状态,学习效率大大提高,也更加能体会到老师的每一项要求的意义所在,于是,读书、理解、做练习题,读代码、理解、编译运行,这一个体系下来,觉得自己对于这门课的知识得到了掌握,而使用的时间也没有比之前更长。所以,不得不说,有付出才会有收获,效率高才能在有限的时间内收获更多。
-
自己需要改进的地方
争取进入状态更快,我进入状态慢可能是自身的问题,所以,我觉得我应该在假期的末尾就开始逐渐开始读书,这样可以早日进入状态。
-
如果有结对,写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
- 帮助:我和20145214张宁结对做了这学期的5个实验,我们一共去了实验室3次,实验一和实验五主要是我在进行操作,实验二和实验四主要是张宁在进行操作,实验三我们每人操作了一次,这样,我们每个人都可以做一次实验环境配置,难度也比较相当,大家的动手能力都在实验中得到了锻炼。在实验中有一些在预习时自己忽略的东西也会被队友指出,效率更高。
- 建议:我觉得有一些组别分工合理,互相帮助,共同进行实验,而另一些则存在不太好的行为,自己完全不做,只依靠队友,解决办法还没想出。
给学弟学妹们的学习建议
-
如果重新学习这门课,怎么做才可以学的更好
我觉得我的最大问题就是进入状态太慢,我最开始的几周学习效率太低了,每周的博客都要做很久很久,收获却不大。如果重新学习的话,我应该想办法让自己尽快进入这种学习模式,尽量从假期进入到学习中去,提高学习效率。
问卷调查
-
你平均每周投入到本课程多长时间?
25小时左右,平时课下有时间就看看书、画下来重点,周末把它们总结成一篇博客,并进行实践操作。
-
每周的学习效率有提高吗?
相比于刚开学有了很大提高。
-
学习效果自己满意吗?
刚开学的几周很不满意,觉得自己效率太低,学了很长时间却收获很小。后来逐渐进入了学习状态,学习效率提高了,在加上有之前知识做基础,学习效果相对来说较为满意。
-
课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书)
我很希望自己能保持这个习惯,也会努力去做到。
-
你觉得这门课老师应该继续做哪一件事情?
每周写博客,扇贝打卡,多理解、运行代码,期末、期中总结。
-
你觉得这门课老师应该停止做哪一件事情?
感觉所有项目都有其存在的价值和意义,没有什么应该停止的。
-
你觉得这门课老师应该开始做什么新的事情?
实验闭卷考试,我感觉实验更多的是在培养一种能力,应该化为自己的知识储备,不用查找就能运用,开卷更适用于考课本上的概念这类知识性的死记硬背的东西。