20145325张梓靖 《信息安全系统设计基础》课程总结
20145325张梓靖 《信息安全系统设计基础》课程总结
-
每周作业链接汇总
-
第0周作业:为《信息安全系统设计基础》课程学习做好准备,了解本学期该课程的学习任务与方法
-
第1周作业:学习Linux各类命令,重点掌握其核心常用的命令(例,find/cheat/grep/man等),了解Linux操作系统,初步尝试Linux下的C语言的编码、编译、调试、运行
-
第2周作业:学习教程第一章、第七章;进一步学习Linux系统下的C语言的编码(vim)、编译(gcc)、调试(gdb/cgdb)、运行,掌握动态库、静态库的生成与使用,学习makefile编译的语法并理解其优越性
-
第3周作业:学习教程第二章;掌握各种基础的计算机信息表示知识,理解有符号整数与无符号整数的区别与转换,掌握浮点数的表示
-
第5周作业:学习教程第三章;掌握X86汇编基础(注意ATT与Intel汇编代码格式的不同),了解ISA,理解栈帧的使用与作用,学会用GDB进行栈帧的调试,观察栈帧的变化
-
第6周作业:学习教程第四章;掌握ISA,了解CPU硬件(ALU、寄存器、时钟信号)、逻辑门,理解处理一条指令的序列以及SEQ的时序,了解流水线的特性;学会使用Y86模拟器,在YIS环境下对汇编文件进行汇编
-
第7周作业:学习教程第六章;理解并掌握局部性原理,了解各类存储技术,理解高速缓存的运作;对git内容格式进行调整
-
期中总结:对上半学期学习内容的重点进行总结,并总结上半学期对该课程的学习收获与不足
-
第9周作业:学习教程第十章;使用
man -k
、grep -nr XXX /usr/include
学习有关I/O的系统调用,掌握RIO、I/O重定向以及3种风格的错误处理 -
第10周作业:结合代码,深入学习系统级 I/O,重点掌握open close/read/write/seek/stat的使用方法与作用
-
第11周作业:学习教程第八章;理解进程与并发,了解异常处理与其类别,明白上下文切换、信号以及非本地跳转的概念;结合代码,深入学习进程创建和控制的系统调用及函数使用(fork/exec/wait/waitpid/exit/getpid/getppid/sleep/pause/setenv/unsetenv)
-
第12周作业:理解数组指针、指针数组、函数指针、指针函数的区别;结合代码,深入学习信号机制函数调用(kill/alarm/signal/sigaction),并掌握管道和I/O重定向函数(pipe/dup/dup2)
-
第13周作业:学习教程第十一章;了解网络编程的基础知识,掌握三种并发方式:基于进程的并发编程、基于I/O多路复用的并发编程、基于I/O多路复用的并发事件驱动服务器;理解线程的概念,学习相关的系统调用;理解信号量,并可以将其运作到线程中,实现同步互斥
-
第14周作业:学习教程第九章;理解虚拟存储器的概念与作用,清楚Linux缺页异常处理,了解存储器映射,掌握动态存储器分配的方法;结合代码,深入理解线程与进程的区别,以及线程相关的系统调用的使用
-
-
实验报告链接汇总
-
实验一 开发环境的熟悉:使用 Redhat Linux 9.0 操作系统环境,安装 ARM-Linux 的开发库及编译器。创建一个新目录,并在其中编写 hello.c 和 Makefile 文件。学习在 Linux 下的编程和编译过程,以及 ARM 开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上
-
实验二 固件设计:了解多线程程序设计的基本原理。学习 pthread 库函数的使用
-
实验三 实时系统的移植:使用ADS、GIVEIO驱动、JTAG驱动进行实时系统的移植
-
实验四 外设驱动程序设计:学习在 LINUX 下进行驱动设计的原理。掌握使用模块方式进行驱动开发调试的过程
-
实验五 简单嵌入式WEB服务器实验:掌握在 ARM 开发板实现一个简单 WEB 服务器的过程。学习在 ARM 开发板上的 SOCKET 网络编程。学习 Linux 下的 signal()函数的使用
-
-
代码托管链接和二维码
-
截图 git log --pretty=format:"%h - %an, %ar : %s" 的结果:
-
代码量汇总:
-
代码驱动的学习做到没有?:基本上做到了
-
加点代码,改点代码是理解的最好方式,谈谈你的心得:
- 要能够更好的理解各种系统调用以及函数的作用与区别,最好的方法就是先对其进行理论上、含义上的理解,然后再通过代码进一步实践判断之前自己对其的理解是否正确,如果要检验是否自己已经真正的理解且能灵活运用的话,就需要自己加点代码,看最后实践出来的效果是不是同之前自己加代码时预料的结果一样,如果一样,那么才能说明自己对其确实是已经基本上算是掌握了。加点代码,这确实很好的检验是否理解的方式
-
实践上有什么经验教训:
- 在实验之前,一定要将与实验相关的函数等等提前学习且认真思考后再进行实验,只有当带着自己的理解进行实践时,才可以快速的领悟。当然,最好是先自己将代码看一遍,自己先理解代码的意思与用途,然后估摸一下实践的结果,这样,在完成实践后,能够明显判断知道自己理解的对错,以及当猜测的与结果不一致时,可快速知晓自己理解的偏差在哪儿
-
第0周作业中提出的问题
- 第一章 并发与并行的区别:并发,多个进程看起来是同时发生的(对于一个CPU),实际上是有先后顺序调度的,只是调度的频繁,宏观上给人的感觉是同时进行;并行,确实是不同的进程同时被执行(多个CPOU同时作用不同的进程)
- 第二章 B2Uw与B2Tw表示什么:B2Uw,w位2进制转换为无符号数;B2Tw,w位2进制转换为有符号数
- 第三章 如何访问条件码:条件码通常不会直接读取,常用使用方法有三:
- 可根据条件码的某个组合,将一个字节设置为0或1
- 可条件跳转到程序的某个其他部分
- 可有条件地传送数据
- 第四章 YIS与Y86的关系是什么:YIS的目的是模拟Y86机器代码程序的执行,而不去试图模拟任何具体处理器实现的行为
- 第五章 延迟界限有什么含义:当一系列操作必须按照严格顺序执行时,因为在下一条指令开始之前,这条指令必须结束,这就是所说的延迟界限
- 第六章 DRAM与SRAM存储器的特性有什么区别:DRAM,非持续的,敏感的,应用于主存和帧缓冲区;SRAM,持续的,非敏感的,应用于高速缓存存储器
- 第七章 连接器如何处理多重定义的符号:
- 规则1:不允许有多个强符号
- 规则2:如果有一个强符号和多个弱符号,那么选择强符号
- 规则3:如果有多个弱符号,那么从这些弱符号中任意选择一个
- 第八章 故障时如何处理的:
- 当前指令导致一个故障
- 控制传递给处理程序
- 故障处理程序运行
- 处理程序要么重新执行指令,要么终止
- 第九章 虚拟页面的集合:1)未分配的 2)缓存的 3)为缓存的
- 第十章 标准I/O库提供什么:提供fopen、 fclose、 fread、 fwrite、 fgets、 fputs、 scanf、 printf
- 第十一章 协议软件需要的基本能力:1)命名机制 2)传送机制
- 第十二章 Posix线程是什么:是在C程序中处理线程的一个标准接口
-
评价第0周作业中提出的问题
- 大部分还是抓住了每章学习的重点,但都是一些浅显的问题,这也与还没有开始真正的学习每一部分的知识有关,所以对于某些细节过程没有经过思考,所提出的问题也就先得浅显及没有不要。但不管怎么说,提出疑问总是会激起解决问题的欲望的
-
项目加分项
-
优秀作业
-
第2周作业:学习教程第一章、第七章;进一步学习Linux系统下的C语言的编码(vim)、编译(gcc)、调试(gdb/cgdb)、运行,掌握动态库、静态库的生成与使用,学习makefile编译的语法并理解其优越性
*- 第3周作业:学习教程第二章;掌握各种基础的计算机信息表示知识,理解有符号整数与无符号整数的区别与转换,掌握浮点数的表示
- 第3周作业:学习教程第二章;掌握各种基础的计算机信息表示知识,理解有符号整数与无符号整数的区别与转换,掌握浮点数的表示
-
第6周作业:学习教程第四章;掌握ISA,了解CPU硬件(ALU、寄存器、时钟信号)、逻辑门,理解处理一条指令的序列以及SEQ的时序,了解流水线的特性;学会使用Y86模拟器,在YIS环境下对汇编文件进行汇编
* -
期中总结:对上半学期学习内容的重点进行总结,并总结上半学期对该课程的学习收获与不足
*
-
-
教程
-
-
没有项目被扣分
-
课程收获与不足
- 自己的收获
- 经过这门课程的学习,使我基本明白计算机的内部原理,不管是CPU、存储器、虚拟内存、I/O设备,还是各类的系统调用,组成了我对于计算机的基本认识:知道了在计算机中是如何存储大量数据的,是如何协调各部分的运行效率以达尽可能的高效处理的,CPU是如何一步一步执行命令的。每周投入到该课程的时间是不定的,但学习的量是一定得保证的,我不能说自己学习的效率很高,但我能肯定的说,只要是当周学习的,都是我明白且理解的,至于运用上,不能说每周都有所实践,但如若是遇上无法理解的地方,那么实践是必须的。真心希望自己能做到学一门精一门,但在精之前,还是得先保证自己学一门知一门
- 自己需要改进的地方
- 学一门知一门,是基础。怎么才能做到完全的知也是需要花大工夫的,需要更多的投入精力、更多的坚持、更多的学习。在这方面,我不得不承认自己目前缺少持续的行动。尽管自己知道只有坚持才能得到更大的收获,就像所说的日久见人心,不久,怎么能把知识看透、学透,怎么可能做到全知,怎么有肯能达到精。所以,坚持吧,试着坚持做一事,试着去耐心等待,试着等待到体会成就的一天,那时候,坚持也就是一种习惯成自然的事了吧。
- 自己的收获
-
给开学初的你和学弟学妹们的学习建议
- 如果重新学习这门课,怎么做才可以学的更好
- 深入理解计算系统,里面有很多其他学科的知识,比如有汇编的内容,有Java Web的知识。所以说,知识是融会贯通的,想要更好的、轻松的学习这门课,就得对任何课都认真学习。当然,如果说肯提前下功夫,提前学习的话,那么就会越学越轻松,越学越有意思。最重要的是,一定要学一点知识就理解一点,不要略过,因为前面的知识是后面学习的铺垫,略过的话,只会让学习起来越发困难与厌倦
- 如果重新学习这门课,怎么做才可以学的更好
-
问卷调查
- 你平均每周投入到本课程多长时间?
- 20个小时左右
- 每周的学习效率有提高吗?
- 有,前期大量时间都花费在教材的阅读上面,后来则是先在网上学习本周相关内容的知识点,然后再结合老师给的代码进行更深入的理解,最后再翻阅教材,对细节进行查看与学习
- 学习效果自己满意吗?
- 对于学习的效果比较满意,虽然总是会对学过的内容有所遗忘,但是毕竟当时学得很辛苦,很深刻,所以只要稍稍的翻阅查看一下,就会又回忆起该学习内容的重点
- 课程结束后会继续一周至少一篇博客吗?
- 当然,我会继续坚持。将自己的想法写下来是很有趣的自我对话,也是未来的自己回忆以前的自己的一种途径。多写写总是好的
- 你觉得这门课老师应该继续做哪一件事情?
- 继续坚持锻炼学生的自主学习能力,学会看书,书上看不懂就上网查,网上查不到就问同学,同学也解决不了的就问老师,总是有办法的(图书馆查阅也是好的,但我觉得,如果仅仅只为解决一个疑问,而不是学习一门新的技能,那图书馆查阅还是很低效率的)
- 你觉得这门课老师应该停止做哪一件事情?
- 暂时没有想到需要停止做的事
- 你觉得这门课老师应该开始做什么新的事情?
- 暂时没有想到还需要做的,我觉得现在挺好的
- 你平均每周投入到本课程多长时间?
-
本文链接和二维码