zoukankan      html  css  js  c++  java
  • 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网络编程。

      • 二维码:

    代码托管

    • 链接:20145219宋歌代码托管项目

    • 二维码

    • 截图 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小时左右,平时课下有时间就看看书、画下来重点,周末把它们总结成一篇博客,并进行实践操作。

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

      相比于刚开学有了很大提高。

    • 学习效果自己满意吗?

      刚开学的几周很不满意,觉得自己效率太低,学了很长时间却收获很小。后来逐渐进入了学习状态,学习效率提高了,在加上有之前知识做基础,学习效果相对来说较为满意。

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

      我很希望自己能保持这个习惯,也会努力去做到。

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

      每周写博客,扇贝打卡,多理解、运行代码,期末、期中总结。

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

      感觉所有项目都有其存在的价值和意义,没有什么应该停止的。

    • 你觉得这门课老师应该开始做什么新的事情?

      实验闭卷考试,我感觉实验更多的是在培养一种能力,应该化为自己的知识储备,不用查找就能运用,开卷更适用于考课本上的概念这类知识性的死记硬背的东西。

    期末总结博客链接

  • 相关阅读:
    enter事件处方方法
    vue 关于父组件无法触发子组件的事件的解决方法
    iview表格高度自适应只需要三步即可
    子组件触发父组件的方法
    组件之间的方法
    年与日时分秒各种格式 补0位的方法
    //定义一个函数,删除首个数组元素
    input标签内容改变的触发事件
    jQuery表单校验jquery.validate.js的使用
    jQuery BlockUI 实现锁屏
  • 原文地址:https://www.cnblogs.com/20145219songge/p/6216179.html
Copyright © 2011-2022 走看看