第一周做业:Linux下开发环境、vi基本操做、gcc编译器的使用,对每章提一个问题
html
第二周做业:补作课堂实践、学习静态库和动态库,模仿od实现myod
node
第三周做业:理解有符号整数、无符号整数、浮点数的表示,避免C语言中溢出,数据类型转换中的陷阱和可能会致使的漏洞
git
第四周做业:补充课上实践,掌握系统编程错误处理的方式;掌握Unix/Linux系统级I/O:open close read write seek stat;掌握I/O重定向的方法
算法
第五周做业:X86汇编基础、ISA(指令集体系结构)、使用GDB进行调试
编程
第六周做业:了解异常及其种类、理解进程和并发的概念、掌握进程建立和控制的系统调用及函数使用
windows
第七周做业:ISA抽象及其做用、流水线和实现方式
数组
第八周做业:进程、线程、I/O多路复用三种并发方式,线程同步互斥及相关系统调用
缓存
第九周做业:RAM、ROM、磁盘、固态硬盘等存储技术,局部性原理和缓存思想在存储层次结构中的应用
安全
第十周做业:补交第十周课上测试,Linux下IPC机制
服务器
第十一周做业:虚拟存储器、地址翻译、存储器映射、动态存储器分配方法
第十三周做业:从新学习教材第十二章:并发编程,完成该章课后习题
第十四周做业:从新学习教材第四章《处理器体系结构》,完成该章习题
实验一 开发环境的熟悉:配置交叉编译环境、连通目标机和宿主机、使用目标机运行程序
实验二 固件程序设计:MDK、LED、UART、国密算法、SM1
实验三 实时系统报告:基于socket实现mywc,使用多线程实现wc服务器并使用同步互斥机制保证计数正确
实验四 外设驱动程序设计:完成“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章的test试验
实验五 通信协议设计:Linux下OpenSSL的安装与测试、基于Socket实现TCP通讯、研究OpenSSL算法,测试对称算法中的AES,非对称算法中的RSA,Hash算法中的MD五、实现对实验二中的“wc服务器”经过混合密码系统进行防御
截图 git log --pretty=format:"%h - %an, %ar : %s" 的结果
代码量汇总提交statistics.sh的支持截图
第一周我除了配置了本学习学习须要的实验环境以外,还针对每章的内容提出了十二个问题,不敢说彻底抓住了学习重点,可是确定是没有跑题的,不过多是由于参考教材目录提出的问题,因此有些问题问的稍有一些大。
操做系统的五大管理功能: (1)做业管理:包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实等; (2)文件管理:又称为信息管理; (3)存储管理:实质是对存储“空间”的管理,主要指对主存的管理; (4)设备管理:实质是对硬件设备的管理,其中包括对输入输出设备的分配、启动、完成和回收; (5)进程管理:实质上是对处理机执行“时间”的管理,即如何将CPU真正合理地分配给每一个任务。
无符号数(Unsigned number)是相对于有符号数而言的,指的是整个机器字长的所有二进制位均表示数值位,至关于数的绝对值 机器数就是在计算机里面存储的数, 真值是带符号的数 原码表示法就是带符号的绝对值表示 正数的补码为它自己,负数的补码等于原码的数值位取反加1。原码变补码和补码变原码的方法是同样的。
Y86是一个指令体系结构(ISA)经过Y86指令,可以更好的了解CPU处理指令的流程以及它的工做原理。
第七章:动态库与静态库的不一样?
本质上来讲,库是一种可执行代码的二进制形式,能够被操做系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll) 【静态库】是在连接阶段,会将汇编生成的目标文件.o与引用到的库一块儿连接打包到可执行文件中。所以对应的连接方式称为静态连接,注意如下三点: 1.静态库对函数库的连接是放在编译时期完成的。 2.程序在运行时与函数库再无瓜葛,移植方便。 3.浪费空间和资源,由于全部相关的目标文件与牵涉到的函数库被连接合成一个可执行文件。 静态库存在的问题: 1.空间浪费 2.对程序的更新、部署和发布页会带来麻烦。若是静态库libxx.lib更新了,全部使用它的应用程序都须要从新编译、 【动态库】在程序编译时并不会被链接到目标代码中,而是在程序运行是才被载入。不一样的应用程序若是调用相同的库,那么在内存里只须要有一份该共享库的实例,规避了空间 浪费问题。动态库在程序运行时才被载入,也解决了静态库对程序的更新、部署和发布页会带来麻烦。用户只须要更新动态库便可,增量更新。以上解答参考了静态库和动态库的区别这篇博客
执⾏信号的处理动做称为信号递达,信号从产⽣到递达之间的状态,称为信号未决。进程能够选择阻塞某个信号。被阻塞的信号产⽣时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动做。 Linux下常规信号在递达以前产生屡次只计⼀次,而实时信号在递达以前产⽣屡次能够依次放在⼀个队列里。
windows 提供了三种机制来对内存进行操做 1)虚拟内存,最适合用来管理大型对象数组 或大型结构数组 2)内存映射文件,最适合用来管理大型数据流(一般是文件),以及在同一机器上运行的多进程之间共享数据。 3)堆,适合用来管理大量的小型对象。
内核使用三种数据结构表示打开的文件,分别是文件描述符表、文件表和 V 节点表。 (1) 每一个进程在进程表中都有一个记录项,记录项中包含有一张打开文件描述符表,每一个描述符占用一项。与每一个文件描述符相关联的是: (a) 文件描述符标志。 (b) 指向一个文件表项的指针。 (2) 内核为全部打开文件维持一张文件表。每一个文件表项包含: (a) 文件状态标志(读、写、添写、同步和非阻塞等)。 (b) 当前文件偏移量。 (c) 指向该文件 V 节点表项的指针。 (3) 每一个打开文件(或设备)都有一个 v 节点(v-node)结构。v 节点包含了文件类型和对此文件进行各类操做的函数的指针。v 节点还包含了从磁盘读取的 i 节点(i-node)的信息,i 节点信息包含了文件的全部者、文件长度、文件所在的设备、指向文件的实际数据块在磁盘上的所在位置的指针等。
应用层经过传输层进行数据通讯时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP链接或多个应用程序进程可能须要 经过同一个TCP协议端口传输数据。为了区别不一样的应用程序进程和链接,许多计算机操做系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不一样应用程序进程间的网络通讯和链接。
先简单说说线程与进程的概念: (1)进程是指一个内存中运行的应用程序,好比在Windows系统中,一个运行的exe就是一个进程。 (2)线程是指进程中的一个执行流程。 多线程并发只是表面和感受上的并发,并非实质上的并发。一个线程要运行,它必须占有CPU,而咱们目前用的计算机大多都是单CPU的,因此一次最多只能有一个线程获取CPU并运行。 多线程的实质是“最大限度地利用CPU资源”,当某一个线程的处理不须要占用CPU而只须要和I/O等资源打交道时,让其余线程有机会得到CPU资源。
暂时没有
在课上对每章的重点内容进行讲解,方便有侧重点的自学
20155318 《信息安全系统设计基础》课程总结