• 20145306《信息安全系统设计基础》课程总结


    2014506《信息安全系统设计基础》课程总结

    第0周总结

    简要内容:使用虚拟机VirtualBox成功安装Linux系统,预习了Linux基础入门,阅读娄老师推荐的博客感想。

    二维码:

    第1周总结

    简要内容:介绍了Linux操作系统,ubuntu下常用代码,核心的Linux命令,使用Linux中用户管理命令/系统相关命令/文件目录相关命令/打包压缩相关命令/比较合并相关命令/网络相关命令等。

    二维码:

    第2周总结

    简要内容:

    介绍了了Linux系统下的开发环境、vi的基本操作、gcc编译器的基本原理;介绍了gcc编译器的常用选项、如何使用gdb调试技术;介绍了静态库和动态库的生成与调用方法。

    二维码:

    第3周总结

    简要内容:介绍了二进制在计算机中的重要地位、布尔运算在C语言中的应用;介绍了有符号整数、无符号整数、浮点数的表示;介绍了补码的重要性、C语言中溢出、数据类型转换中的陷阱和可能会导致的漏洞;介绍了“信息=位+上下文”。

    二维码:

    第4周博客

    简要内容:使用makefile编译程序。

    二维码:

    第5周总结

    简要内容:关于栈和栈帧。

    二维码:

    第6周总结

    简要内容:了解ISA抽象。

    二维码:

    git代码组织

    简要内容:将课程源码分章节存放在src文件夹中,include: 存放头文件bin:存放编译后的目标文件、可执行文件等;lib:存放项目所需的静态库、动态(共享)库res: 存放项目所需的图标、声音、图片等资源docs: 存放项目相关的参考资料、帮助文档如学习博客。bin和lib等编译生成的目录通过git ignore不提交到git。

    二维码:

    第7周总结

    内容总结:介绍了常见的存储技术(RAM、ROM、磁盘、固态硬盘等),理解局部性原理和缓存思想,和高速缓存的原理,测试代码的局部性。

    二维码:

    (1)

    (2)

    期中总结

    内容总结:对以前的每周随堂考试的错题进行总结,对前七周知识点的总结。

    二维码:

    第9周总结

    简要内容:介绍了系统编程和系统调用的概念,学习Unix I/O。

    二维码:

    第四次实验 驱动程序设计

    内容总结:掌握实时系统应用和驱动程序的编写,在模块化方式下进行驱动开发调试。

    二维码:

    第二次试验 固件开发

    内容总结:读懂02_pthread、03_tty中的代码,配置实验环境完成实验指导书中的实验。

    二维码:

    第10周总结

    简要内容:编写一个who命令,编写一个cp命令。

    二维码:

    第11周总结

    简要内容::介绍了异常及其种类、进程的概念,进程创建和控制的系统调用及函数使用。

    二维码:

    第12周总结

    复习前三周的知识,理解指针数组,数组指针,指针函数,函数指针概念。

    二维码:

     

     第1次实验 开发环境的熟悉

    简要内容:介绍了Linux开发环境和使用,使用Linux的arm编译,使用基于NFS方式的下载调试,以及嵌入式开发的基本过程,编译在arm开发板上运行打印学号的程序。

    二维码:

    第3次实验  实时系统的移植

    内容简介:根据实验指导书进行实时软件的安装(ADS、GIVEIO驱动、JTAG驱动),配置实验环境并对软件进行测试,运行测试程序。

    二维码:。

    第5次实验  网络通信

    内容简介:在arm开发板上实现一个简单web服务器的过程。

    二维码:

    第13周总结

    简要内容:总结了教材第十一章《网络编程》,介绍了三种并发的方式:进程、线程、I/O多路复用。

    二维码:

    第14周总结

    简要内容:虚拟存储器的概念和作用、地址翻译。

    二维码:

    gdb汇编堆栈调试

    内容简介:gdb调试汇编堆栈分析。

    二维码:

     

    第十四周问题总结

    内容简介:对同学们博客遇到的问题总结。

    二维码:

     代码托管链接,二维码

    https://github.com/besti145306/mnmnm

    代码驱动的学习做到没有

       在前面几周的学习中遇到的代码,会读懂代码的大致的含义,再去运行。许多代码并不是可以编译运行就可以得到预期结果,需要对代码理解透彻。到了后面几周就没有读懂,编译运行代码。代码驱动学习这种方法我觉得是很有用的,在解决问题中学习知识。这种学习方式也帮助了我更好地去学习其他东西。

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

       在上学期末的计算机实习时,在编程完成题目要求的过程中,深切的体会到了修改别人的代码很难,也是学习理解编程语言的很好的方法,如果可以随意的修改代码改变其实现的功能,那么对这段代码的理解就很透彻了。

    实践上有什么经验教训

      在课程学习后半部分,没有对代码进行研读,分析,导致学习课本很多地方不能理解。 应该多动手,多思考,遇到问题要积极主动的去寻求解决方法,要善于利用网上的学习资源,学习前人的经验。在解决问题的过程中给自己继续下去的动力。

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

    1.计算机的组件怎么工作?

      计算机系统由硬件和软件组成。硬件包括中央处理机、存储器和外部设备等;软件是计算机的运行程序和相应的文档。计算机通过操作系统OS来控制硬件。CPU是一台计算机的运算核心和控制核心,存储器存储程序和程序所需的数据,输入输出设备我们一般统称I/O,用于连接计算机与外部设备。而这些组件需要总线和主板来连接。

    2.计算机中存储的信息如何处理?

      计算机系统中的所有信息都是以二进制形式存储的。计算机系统规定了三种重要的编码方式:无符号编码、补码编码、浮点数编码。

    3.计算机内c程序怎么编译。

      首先是预编译阶段,然后把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。然后再把大量的 Object File合成执行文件,这个动作叫作链接(link)。

    4.处理器怎么工作的?

       处理器由控制单元、存储单元、运算单元构成。CPU执行3种基本的操作:读出数据、处理数据和往内存写数据。CPU的工作就是处理存储在存储器中的信息。信息是按字节存储,这些信息可以是数据也可以是指令。指令告诉CPU对数据执行哪些操作,比如完成加法、减法或移位运算。

    5.怎么优化程序?

      程序编写应该容易理解,有利于程序额的优化和维护,其次要除去程序中的步骤,修改繁琐冗余的代码,和科学的对变量进行命名。

    6.存储器的层次结构。

           寄存器 ,高速缓存 ,主存储器,磁盘。上一级存储器作为下一级存储器的高速缓存。高速缓存是一个小而快速的存储设备,作为存储在更大、更慢的设备中的数据对象的缓冲区域。每一层存储器被划分成连续的数据对象片,称为块,每个块都有唯一的对象和名字。数据总是以块大小为传送单元在第k层和第k+1层之间来回拷贝。

    7.一个程序要在计算机上运行的步骤。

        首先读取存储在硬盘程序和数据,加载在内存里面,即可执行命令,cpu从内存中读取执行指令。

    8.怎么处理异常?

        异常分为四类:中断、陷阱、故障和终止。当处理器检测到有事件发生时,它就会通过一张叫做“异常表”的跳转表,进行一个间接过程调用,到一个专门设计用来处理这类事件的操作系统自程序(异常处理程序)。异常处理程序会做出以下三种反应:异常处理程序将控制返回给当前指令 ;返回给如果没有发生异常将会执行的下一条指令;处理程序终止中断的程序。

    9.怎么有效管理存储器?

      对存储器进行有效的管理,直接影响着存储器的利用率和系统性能。

    10.程序之间依靠什么进行交互和通信?

      在进程之间进行通信的最简单方法是通过文件,其中一个进程写文件,而另一个进程读文件。管道是Linux中最常见的IPC机制,管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。它实际上是在进程间开辟一个固定大小的缓冲区,需要发布信息的进程运行写操作,需要接收信息的进程运行读操作。管道是单向的字节流,它把一个进程的标准输出和另一个进程的标准输入连接在一起。发送进程和接受进程是通过管道进行通信的,因此又称为管道通信,就是数据沿着管道从左边流到了右边。

    11.网络编程要用到的函数。

    • socket函数
    • connect函数
    • open_clientfd函数
    • bind函数
    • listen函数
    • open_listenfd函数
    • accept函数

    12.什么是并发编程。

       并发编程是指在一台处理器上“同时”处理多个任务。并发编程的目标是充分的利用处理器,从而达到最高的处理性能。

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

      加分的项目不多,优秀作业加分和扇贝打卡加分。优秀作业加分的原因是在学习的过程中加入了实践。扇贝打卡是很好的积累单词提高英语水平的方法,每天收获一点,长时间的坚持也会得到很大的成功。很遗憾这个学期的打卡次数不多,没有坚持下来,加的分也不多。

    待及格管理制度的优缺点

       优点:对于待及格同学起到了一种督促的作用,督促我们在课程的前期多努力,避免了在期末的负担。对于及格的同学也起到了一些惊醒作用。

    课程收获与不足

      收获不仅仅是课程内容上的知识。我明白了实践学习的重要性,只是看以写书本上的内容,和摘抄写一下课程总结学不到很多东西,导致我在学习上遇到了许多困难,这也让我端正了自己的学习态度。 

      在课程学习上投入的时间不多,好几周的学习过程中都没有结合实践和代码的分析运行,对以前学习过知识的总结也不到位。

    给学弟学妹们的学习建议

       先看娄老师的每周内容的重点,在读书时要抓住学习重点。结合答案看树上的课后练习题。

       多进行实践的环节,读懂分析书上的代码。然后编译运行、看是否与自己的预期一致,修改调试代码(修改增加代码可以跟深入的理解学习代码)。

       还有就是在课程学习上多投入时间,一分耕耘一分收获。要善于利用网上的学习资源来解决问题(对于很多问题网上都有详细的教程)。将自己遇到的问题和解决问题的过程现在每周的学习总结博客中,不时地复习一下。

     

    问卷调查

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

     10个小时左右。

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

    没有太大的提高。

    学习效果自己满意吗?

    不太满意。

    课程结束后会继续一周至少一篇博客吗?(如果能做到,毕业时我把你的博客给你集结成一本书)

    会努力的。我觉的我自己缺少一种坚持不懈的精神,我希望可以借此来锻炼自己。来使我养成一种习惯。

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

    继续每周的随堂考试,和待及格同学的代码验收检查,患有就是每周写学习总结。

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

    没有。

  • 相关阅读:
    shell脚本的常用参数
    Qt中使用Protobuf简单案例(Windows + msvc)
    使用PicGo和Typora写Markdown
    CentOS7安装protobuf(C++)和简单使用
    protobuf编译、安装和简单使用C++ (Windows+VS平台)
    protocol buffers 文档(一)-语法指导
    Base64编码和其在图片的传输的应用
    Qt程序打包发布
    Qt中的Label和PushButton背景图自动缩放设置
    TCP的粘包和拆包问题及解决
  • 原文地址:https://www.cnblogs.com/besti145306/p/6218120.html
Copyright © 2020-2023  润新知