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 -kgrep -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" 的结果:
      html

    • 代码量汇总:
      git

    • 代码驱动的学习作到没有?:基本上作到了
    • 加点代码,改点代码是理解的最好方式,谈谈你的心得:
      • 要可以更好的理解各类系统调用以及函数的做用与区别,最好的方法就是先对其进行理论上、含义上的理解,而后再经过代码进一步实践判断以前本身对其的理解是否正确,若是要检验是否本身已经真正的理解且能灵活运用的话,就须要本身加点代码,看最后实践出来的效果是否是同以前本身加代码时预料的结果同样,若是同样,那么才能说明本身对其确实是已经基本上算是掌握了。加点代码,这确实很好的检验是否理解的方式
    • 实践上有什么经验教训:
      • 在实验以前,必定要将与实验相关的函数等等提早学习且认真思考后再进行实验,只有当带着本身的理解进行实践时,才能够快速的领悟。固然,最好是先本身将代码看一遍,本身先理解代码的意思与用途,而后估摸一下实践的结果,这样,在完成实践后,可以明显判断知道本身理解的对错,以及当猜想的与结果不一致时,可快速知晓本身理解的误差在哪儿
  • 第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周做业:学习教程第二章;掌握各类基础的计算机信息表示知识,理解有符号整数与无符号整数的区别与转换,掌握浮点数的表示
      • 第6周做业:学习教程第四章;掌握ISA,了解CPU硬件(ALU、寄存器、时钟信号)、逻辑门,理解处理一条指令的序列以及SEQ的时序,了解流水线的特性;学会使用Y86模拟器,在YIS环境下对汇编文件进行汇编
        * vim

      • 期中总结:对上半学期学习内容的重点进行总结,并总结上半学期对该课程的学习收获与不足
        * 数组

        • 第10周做业:结合代码,深刻学习系统级 I/O,重点掌握open close/read/write/seek/stat的使用方法与做用
        • 第11周做业:学习教程第八章;理解进程与并发,了解异常处理与其类别,明白上下文切换、信号以及非本地跳转的概念;结合代码,深刻学习进程建立和控制的系统调用及函数使用(fork/exec/wait/waitpid/exit/getpid/getppid/sleep/pause/setenv/unsetenv)
    • 教程
  • 没有项目被扣分缓存

  • 课程收获与不足
    • 本身的收获
      • 通过这门课程的学习,使我基本明白计算机的内部原理,不论是CPU、存储器、虚拟内存、I/O设备,仍是各种的系统调用,组成了我对于计算机的基本认识:知道了在计算机中是如何存储大量数据的,是如何协调各部分的运行效率以达尽量的高效处理的,CPU是如何一步一步执行命令的。每周投入到该课程的时间是不定的,但学习的量是必定得保证的,我不能说本身学习的效率很高,但我能确定的说,只要是当周学习的,都是我明白且理解的,至于运用上,不能说每周都有所实践,但如如果赶上没法理解的地方,那么实践是必须的。真心但愿本身能作到学一门精一门,但在精以前,仍是得先保证本身学一门知一门
    • 本身须要改进的地方
      • 学一门知一门,是基础。怎么才能作到彻底的知也是须要花大工夫的,须要更多的投入精力、更多的坚持、更多的学习。在这方面,我不得不认可本身目前缺乏持续的行动。尽管本身知道只有坚持才能获得更大的收获,就像所说的日久见人心,不久,怎么能把知识看透、学透,怎么可能作到全知,怎么有肯能达到精。因此,坚持吧,试着坚持作一事,试着去耐心等待,试着等待到体会成就的一天,那时候,坚持也就是一种习惯成天然的事了吧。
  • 给开学初的你和学弟学妹们的学习建议
    • 若是从新学习这门课,怎么作才能够学的更好
      • 深刻理解计算系统,里面有不少其余学科的知识,好比有汇编的内容,有Java Web的知识。因此说,知识是融会贯通的,想要更好的、轻松的学习这门课,就得对任何课都认真学习。固然,若是说肯提早下功夫,提早学习的话,那么就会越学越轻松,越学越有意思。最重要的是,必定要学一点知识就理解一点,不要略过,由于前面的知识是后面学习的铺垫,略过的话,只会让学习起来愈加困难与厌倦
  • 问卷调查
    • 你平均每周投入到本课程多长时间?
      • 20个小时左右
    • 每周的学习效率有提升吗?
      • 有,前期大量时间都花费在教材的阅读上面,后来则是先在网上学习本周相关内容的知识点,而后再结合老师给的代码进行更深刻的理解,最后再翻阅教材,对细节进行查看与学习
    • 学习效果本身满意吗?
      • 对于学习的效果比较满意,虽然老是会对学过的内容有所遗忘,可是毕竟当时学得很辛苦,很深入,因此只要稍稍的翻阅查看一下,就会又回忆起该学习内容的重点
    • 课程结束后会继续一周至少一篇博客吗?
      • 固然,我会继续坚持。将本身的想法写下来是颇有趣的自我对话,也是将来的本身回忆之前的本身的一种途径。多写写老是好的
    • 你以为这门课老师应该继续作哪一件事情?
      • 继续坚持锻炼学生的自主学习能力,学会看书,书上看不懂就上网查,网上查不到就问同窗,同窗也解决不了的就问老师,老是有办法的(图书馆查阅也是好的,但我以为,若是仅仅只为解决一个疑问,而不是学习一门新的技能,那图书馆查阅仍是很低效率的)
    • 你以为这门课老师应该中止作哪一件事情?
      • 暂时没有想到须要中止作的事
    • 你以为这门课老师应该开始作什么新的事情?
      • 暂时没有想到还须要作的,我以为如今挺好的
  • 本文连接和二维码
相关文章
相关标签/搜索