制作网站站用的软件下载,免费招聘模板下载,个人网页设计作品html,正规的制作网页的公司期中总结#xff1a; 第一章 计算机系统漫游 1.1 Linux基础 1.Linux命令 command [options] [arguments] //中括号代表是可选的#xff0c;即有些命令不需要选项也不需要参数 选项#xff08;options#xff09;或参数#xff08;arguments#xff09; 选项是调整命令执…期中总结 第一章 计算机系统漫游 1.1 Linux基础 1.Linux命令 command [options] [arguments] //中括号代表是可选的即有些命令不需要选项也不需要参数 选项options或参数arguments 选项是调整命令执行行为的开关选项不同决定了命令的显示结果不同。 参数是指命令的作用对象。 2. man命令 man是manul的缩写 帮助文档 3.cheat 命令 cheat命令是在GNU通用公共许可证下为Linux命令行用户发行的交互式备忘单应用程序。 它提供显示Linux命令使用案例包括该命令所有的选项和简短但尚可理解的功能。 4.其他核心命令 find查找一个文件在系统中的什么位置locate是神速版本的find grep 可以对文件全文检索支持正则表达式 whereis,which告诉你使用的命令工具装在什么地方。 1.2 Linux下C语言编程基础 1.VIM是文本编辑器 2.大写“K”可以用来查找函数的帮助信息: 查看 man page,命令模式下将光标放在函数名上按K可以直接察看 man page。 3.几个设置 :set nu 显示行号 :set ai 自动缩行 :set ts4 设置一个 TAB 键等于几个空格 4.移动光标 [[ 转到上一个位于第一列的{ ]] 转到下一个位于第一列的{ { 转到上一个空行 } 转到下一个空行 gd 转到当前光标所指的局部变量的定义 5.GCC: 1预处理gcc –E hello.c –o hello.i;gcc –E调用cpp 2编 译gcc –S hello.i –o hello.s;gcc –S调用ccl 3汇 编gcc –c hello.s –o hello.o;gcc -c 调用as 4链 接gcc hello.o –o hello ;gcc -o 调用ld 1.3 Vim模式 普通模式 插入模式 可视模式 选择模式 命令行模式 Ex模式 vim启动进入普通模式处于插入模式或命令行模式时只需要按Esc或者Ctrl[(这在vim课程环境中不管用)即可进入普通 模式。普通模式中按i插入或a附加键都可以进入插入模式普通模式中按:进入命令行模式。命令行模式中输入wq回车 后保存并退出vim。 1.普通模式 按键说明h左l右小写Lj下k上w移动到下一个单词b移动到上一个单词 2.插入模式 命令 说明i 在当前光标处进行编辑I 在行首插入A 在行末插入a 在光标后插入编辑o在当前行后插入一个新行O 在当前行前插入一个新行 3.退出vim 1.命令行模式下退出vim 从普通模式输入:进入命令行模式输入wq回车保存并退出编辑 以下为其它几种退出方式 命令说明:q! 强制退出不保存:q 退出:wq!强制保存并退出:w 文件路径另存为:saveas 文件路径 另存为:x保存并退出:wq保存并退出 2普通模式下退出vim 普通模式下输入Shiftzz即可保存退出vim 4.删除文本 进入普通模式使用下列命令可以进行文本快速删除 x 删除游标所在的字符 X 删除游标所在前一个字符 Delete同x dd删除整行 dw删除一个单词不适用中文 d$或D删除至行尾 d^删除至行首 dG删除到文档结尾处 d1G删至文档首部 注在命令之前加上数字表示一次删除多行 1.4总结 1.计算机系统由硬件和软件系统组成 2.程序被其他程序翻译成不同的形式开始时ASCII文本然后被编译器和链接器翻译成二进制可执行文件 3.系统中的存储设备划分为层次结构CPU存储器在顶部接着是多层的硬件高速缓存存储器DRAM主存和磁盘存储器 4.操作系统内核是应用程序和硬件之间的媒介。它提供三个基本抽象 1文件是对I/O设备的抽象 2虚拟存储器是对主存和磁盘的抽象 3进程是对处理器主存和I/O设备的抽象 5.链接可以在编译时由静态编译器完成也可由在加载时和运行时由动态链接器完成。 6.链接器处理称为目标文件的二进制文件其有三种不同形式1可重定位的2可执行的3共享的 7.链接器主要任务1符号解析2重定位 符号解析将目标文件中的每个全局符号都绑定到一个唯一的定义 重定位确定每个符号的最终存储器地址并修改对那些目标的应用 8.静态链接器由GCC类似编译取驱动器调用他们将多个可重目标文件合并成一个单独的可执行目标文件 9.多个目标文件可以被连接到一个单的的静态库中。链接器用库来解析其他目标模块中的符号引用 10.加载器可将可执行文件的内容映射到存储器并运行这个程序。链接器还能生成部分连接的可执行目标文件这样的文件中有对定义在共享库中的程序和数据和数据的未解析的引用。 第二章信息表示和处理 总结 1.计算机将信息按位编码通常组成字节序列。用不同的编码方式表示整数师叔和字符串。不同的计算机模型在编码数字和多字节数据中的字节排序时使用不同的约定。 2. C语言的设计可以包容多种不同字长和数字编码的实现目前大多数机器使用32位字长。大多数机器对整数使用补码编码而对浮点数使用IEEE浮点编码。 3.在相同长度的无符号和有符号整数之间进行强制转换时大多数C语言实现循环的原则是底层的位模式不变。在补码机器上对于一个w位的值。这种行为是由函数T2Uw和U2Tw来描述的。C语言隐式的强制类型转换会出现许多程序员无法预计的结果常常导致程序错误。 4.由于编码长度有限与传统的整数和实数运算相比计算机运算具有完全不同的属性。当超出表示范围有限长度能够引起数值溢出。当浮点数非常接近于0.0.从而转换成零时也会下溢。 5.浮点表示用过将数字编码为x乘以2的y次方的形式近似地表示实数。最常见的浮点表示方式是由IEEE标准754定义的。它提供了几种不同的精度最常见的是单精度32位和双精度64位。IEEE浮点也能够表示特殊值如负无穷正无穷和NaN。 6.必须对浮点运算小心的使用因为浮点运算只有有限的范围和精度而且不遵守普遍的算数属性例如结合性 来描述的。 7.信息存储 机器及程序将存储器视为一个非常大的字节数组称为虚拟存储器。存储器的每个字节都由一个唯一的数字来标识称它为地 址所有可能地址的集合称为虚拟地址空间。 8.寻址和字节顺序 1大端法2小端法 布尔代数 与 或| 非~ 异或^ 9.C语言的逻辑运算 || ~ 注意与布尔代数的区别 10.C语言中的位移运算 左移 右移注意区别逻辑右移和算术右移 11.重要公式 1补码编码 2有符号和无符号数之间的转换 3截断数字 4无符号数加法 5补码加法 6补码的非 7补码乘法 8IEEE浮点表示 第三章 程序的机器级表示 3.1 历史观点 intel处理器系列俗称x86经历了一开始个长期的不断进化的发展过程。 开始时它是第一代单芯片16位微处理器之一由于当时集成电路技术水性有限其中做了很多妥协此后他不断成长利用进步的技术满足更高性能和支持高级操作系统的需求。 3.3数据格式 数据传送指令movb传送字节 movw传送字 movl(传送双字) 3.4访问信息 一个IA32 CPU 包含一组8个存处位值的寄存器。这些寄存器用来存处整数数据和指数 3.4.1操作数指示符 大多数指令有一个或多个操作数指示出执行一个操作中 1立即数 常数值 2寄存器 表示某个寄存器的内容 3存储器 根据计算出来的有效地址访问某个存储器位置 例 类型 格式 操作数值 名称 立即数 $Imm Imm 立即数寻址 寄存器 Ea R[Ea] 寄存器寻址 存储器 Imm M[Imm] 绝对寻址 存储器 Ea M[R[Ea]] 间接寻址 存储器 ImmEb M[ImmR[Eb]] (基址偏移量)寻址 3.4.2数据传送指令 MOV S,D D←S 传送 movb movw movl 传送字节 传送字 传送双字 MOVS S,D D←符号扩展(S) 传送符号扩展的字节 movsbw movswl movswl 将做了符号扩展的字节传送到字 将做了符号扩展的字节传送到双字 将做了符号扩展的字传送到双字 MOVz S,D D←零扩展(S) 传送零扩展的字节 movzbw movzbl movzwl 将做了零扩展的字节传送到字 将做了零扩展的字节传送到双字 将做了零扩展的字传送到双字 “栈”遵循“后进先出”原则 push 把数据压入栈 pop 删除数据 3.5算数和逻辑操作 3.5.1加载有效地址 加载有效地址指令leal实际上是movl指令的变形它的指令形式是从存储器读取寄存器但实际上没有引用存储器 指令 效果 描述 leal S,D D←S 加载有效地址 INC D D←D1 加一 ADD S,D D←DS 加 SAL kD D←Dk 左移 3.5.5特殊的算术操作 指令 效果 描述 imull S R[%edx]R[%eax]←S×R[%eax] 有符号全64位乘法 cltd R[%edx]R[%eax]←SignExtend(R[%eax]) 转为四字 idivl S R[%edx]←R[%edx]R[%eax]modS 有符号除法 R[%edx]←R[%edx]R[%eax]÷S divl R[%edx]←R[%edx]R[%eax]÷S 无符号除法 3.6控制 3.6.1条件码 CF进位标志 最近的操作使最高位产生了进位可以用来检查无符号操作的溢出 ZF零标志 最近的操作得出的结果为0 SF符号标志 最近的操作得到的结果为负 OF溢出标志 正溢出负溢出 3.6.2访问条件码 指令 同义名 效果 设置条件 sete D sets D setg D setz setnle D←ZF D←SF D←~SF^OF~ZF 相等/零 负数 大于有符号 3.6.3跳转指令及其编码 跳转指令会导致执行切换到程序中一个全新的位置 3.6.4翻译条件分支 将条件表达式和语句从C语言翻译成机器代码最常用的方式是结合有条件和无条件跳转 3.6.5循环 汇编中没有相应的指令从在可以用条件测试和跳转组合起来实现循环效果。 do—while循环 while循环 for循环 3.6.6条件传送指令 实现条件操作的传统方法是利用控制的条件转移当条件满足时程序沿着一条执行路径进行而当条件不满足时就走另一条路径这种机制简单而通用但在现代处理器上他可能会非常的低效率 数据的条件转移是一种代替的策略。这种方法先计算一个条件操作的两种结果然后再根据条件是否满足从而选取一个。只有在一些受限制的情况下这种策略才可行但如果可行就可以用一条简单的条件传送指令来实现它。条件床送指令跟好的匹配了现代处理器的性能特性 3.7过程 3.7.1栈帧结构 IA32程序用程序栈来支持过程调用。机器用来栈来传递过程参数存储返回信息保存寄存器用于以后恢复以及本地存储。为单个过程分配的那部分栈称为栈帧。 3.7.2转移控制 指令 描述 call Label call *Operand leave ret 过程调用 过程调用 为返回准备栈 从过程调用中返回 3.7.3寄存器使用惯例 程序寄存器组唯一能被所有过程共享的资源 虽然在给定时刻只能有一个过程是活动的但是我们必须保证当一个过程调用者调用另一个过程被调用者是被调用着不会覆盖某个调用者稍后会使用的寄存器的值为此IA32采用了一组统一的寄存器使用惯例所有的过程都必须遵守包括程序库中的过程。 3.8总结 1.在本章中认识并了解到了C语言抽象层下面的东西以了解机器级编程。通过让编译器产生机器级程序的汇编显示了解了编译器和他的优化能力以及机器数据类型和指令集。 2.机器级程汇序和他们的与C语言的差别很大。在汇编语言程序中各种数据类型之间的差别很小。程序是以指令序列来表示的每条指令都完成一个单独的操作。部分程序状态如寄存器和运行时栈对程序员来说都是可见的。 第四章 处理器体系结构 4.1 Y86指令集体系结构 4.1.1程序员可见状态 Y86程序中的每条指令都会读取或修改处理器状态的某些部分称为程序员可见状态。 4.1.2 Y86指令 4个指令irmovlrrmovlmrmovlrmmovl分别显示地指明源和目的的格式 4个整数操作指令addlsublandlxorl 7个跳转码指令jmpjle,jl,jne,jge,jg 6个条件传送指令cmovlecmovlcmovecmovgecmovg call指令将返回地址入栈然后跳到目的地址 pushl和popl指令实现了入栈和出栈 halt指令停止指令的执行 4.1.3 指令编码 指令集重要性质字节编码必须有唯一的解释 即任意一个字节序列要么是一个唯一的指令序列的代码 分支指令和调用指令的目的地址是一个绝对地址 4.1.4 Y86异常 值 名字 含义 1 2 3 4 AOK HLK ADR INS 正常操作 处理器执行halt指令 遇到非法地址 遇到非法指令 4.2逻辑设计和印鉴控制语言HCL 4.2.1逻辑门 AND,OR,NOT || 4.2.2组合电路和HCL布尔表达式 将很多的逻辑门组合成一个网就能构成计算块称为组合电路 多路复用器根据输入控制型号的值从一组不同的数值信号中选出一个 4.2.5存储器和时钟 时钟寄存器 随机访问存储器 4.3 Y86的顺序实现 4.3.1将处理组织成阶段 取指 译码 执行 访存 写回 更新PC 4.3.2 SEQ硬件结构 取指 译码 执行 访存 写回 4.4总结 1.ISA即指令集结构在处理器行为和如何实现处理器之间提供了一层抽象。提供了程序执行的一种顺序说明即一条指令执行完了下一条指令才会开始 2.流水线化通过让不同的阶段并行操作改进了系统的吞吐量功能。在任意一个给定的时刻多条指令被不同的阶段来处理。 3.处理器设计的重要经验 1 管理复杂性问题是首要问题想要优化使用硬件资源在最小的成本下获得最大的性能 2 不需要直接实现ISA 3 硬件设计需要小心谨慎因为芯片设计出就无法改了 第六章 存储器层次结构 存储器系统是一个具有不同容量成本和访问时间的存储设备的层次结构。 CPU寄存器保存着最常用的数据。 靠近CPU的小的快速的高速缓存存储器作为一部分存储在相对较慢的主存储器主存中的数据和指令的缓存区域。 主存暂时存放存储在容量较大的慢速磁盘上的数据而这些磁盘常常又作为存储在通过网络连接的其他机器的磁盘或磁带上的数据的缓存区域。 6.1存储技术 6.1.1随机访问存储器 随机访问存储器RAM分为静态的RAM(SRAM)和动态的RAM(DRAM) SRAM用来作为高速缓存存储器既可以在CPU芯片上也可以在片下。 DRAM用来作为主存以及图形系统的帧缓冲区。 1.静态RAM SRAM将每个位存储在一个双稳态的存储器单元里 也就是说只要有电它就会永远地保持它的值。即使有干扰 2.动态RAM DRAM将每个位存储为对一个电容充电 DRAM存储器单元对干扰非常敏感当电容的电压被扰乱后它就永远不会再恢复了 3.传统的DRAM DRAM芯片中的单元位被分成d个超单元每个超单元都由w个DRAM单元组成。一个d×w的DRAM总共存储了dw位信息。超单元被组织成一个r行c列的长方形阵列这里rcd。每个超单元都有形如ij的地址i表示行j表示列。 4.存储器模块 DRAM芯片包装在存储器模块中它是查到主板的扩展槽中。常见的包装包括168个引脚的双列直插存储器模块它以64位为块传送数据到存储控制器和从存储控制器传出的数据还包括72个引脚的单列直插存储器模块它以32位为块传送数据。 5.增强的DRAM 对DRAM的改进 1快页模式DRAM 2扩展数据输出DRAM 3同步DRAM 4双倍数据速率同步DRAM 5RambusDRAM(RDRAM) 6视屏DRAM 6.非易失性存储器 若断点DRAM和SRAM会丢失信息即易失的。 相反的断电后仍保存信息则为非易失的存储器。 7.访问主存 数据流通过称为总线的共享电子电路在处理和DRAM主存之间来来回回。 每次CPU和主存之间的数据传送都是通过一系列步骤来完成的这些步骤称为总线事物。 读事物从主存传送数据到CPU。 写事物从CPU传送数据到主存。 6.1.2磁盘存储 1.磁盘构造 1磁盘由盘面构成每个盘面有两面或者称为表面表面覆盖记录材料。 盘片中央有一个可以旋转的主轴使得盘片以固定的旋转速率旋转通常是5400~15000转每分钟。 2每个表面是由一组成为磁道的同心圆组成的。每个磁道被划分为一组扇区。 每个扇区包含相等数量的数据位这些数据编码在扇区上的磁性材料中。 扇区之间由一些间隙分隔开这些间隙中不存储数据位。间隙存储用来标识山区的格式化位 3磁盘是由一个或多个叠放在一起的盘片组成的他们被分装在一个密封的包装里。 整个装置通常称为磁盘驱动器简称磁盘。 柱面所有盘片表面上到主轴中心的距离相等的磁道的集合。 2.磁盘容量 记录密度磁道每一英寸的段中可以放入的位数 磁道密度从盘片中心出发半径以上一英寸的段内可以有的磁道数 面密度记录密度与磁道密度的乘积 磁盘容量字节数/扇区×平均扇区/磁道×磁道数/表面×表面数/盘片×盘片数/磁盘 3.磁盘操作 磁盘用读/写头来读写存储在磁性表面上的位而读写头连接到一个传动臂一端。 通过沿着半径轴前后移动这个传动臂驱动器就可以将读/写头定位在盘面上的任何磁道上这个机械运动称为寻道。 对扇区访问时间分为三部分 1寻道时间 2旋转时间 Tmax rotation 1/RPM × 60secs/1min 平均旋转时间Tavg rotation是 Tmax rotation一半 3传送时间 Tavg transfer 1/RPM × (1/(平均扇区数/磁道)) ×60secs/1min 4.逻辑磁盘块 为了对操作系统隐藏复杂性现代磁盘将它们的构造呈现为一个简单的视图一个B个扇区大小的逻辑块的序列编号为0,1,…,B-1。 磁盘中有一个小的硬件/固件设备称为磁盘控制器维护着逻辑块号和实际物理磁盘扇区之间的映射关系。 5.连接到I/O设备 有三种不同类型的设备连接到总线 1通用串行总线 2图形卡 3主机总线适配器 6.1.3固态磁盘 固定硬盘是基于闪存的存储技术在某些情况下是传统旋转磁盘的极有吸引力的替代产品。 6.1.4存储技术趋势 不同的存储技术有不同的价格和性能折中 不同存储技术的价格和性能属性以截然不同的速率变化着 DRAM和磁盘的性能滞后于CPU的性能 6.2局部性 局部性原理倾向于引用临近与其他最近引用过的数据项的数据项或者最近引用过的数据项本身。 局部性1时间局部性 2空间局部性 在硬件层局部性原理允许计算机设计者通过引用称为高速缓存存储器的小而快速的存储器来保存最近被引用的指令和数据项从而提高对主存的访问速度 在操作系统级局部性原理允许系统使用主存作为虚拟地址空间最近被引用的高速缓存。 6.2.1对程序数据引用的局部性 我们称为步长为1的引用模式为顺序引用模式。 一个连续向量中每隔k个元素进行访问就被称为步长为k的引用模式。 6.2.2取指令的局部性 因为程序指令是存放在存储器中的CPU必须取出读出这些指令所以我们也能够评价一个程序关于取指令的局部性。 6.3存储器的层次结构 6.3.1存储器层次结构中的缓存 1.缓存命中 当程序需要第k1层的某个数据对象d时它首先在当前存储在第k层的一个块中查找d。如果d刚好缓存在第k层中那么就是缓存命中。 该程序直接从第k层读取d根据存储器层次结构的性质这要比从第k1层读取d更快。 2.缓存不命中 如果第k层中没有缓存数据对象d那么就是我们所说的缓存不命中。 当发生缓存不命中时第k层的缓存从第k1层缓存中取出包含d的那个块如果第k层的缓存已经满了的话就可能会覆盖现存的一个块 3.缓存不命中的种类 强制性不命中/冷不命中:第k层的缓存是空的那么对任何数据对象的访问都不会命中。其中一个空的缓存称为冷缓存。 冲突不命中对象会映射到同一个缓存块缓存会一直不命中。 容量不命中工作集的大小超过缓存的大小 4.缓存管理 管理缓存的逻辑可以是硬件软件或者是两者的结合。 5.总结 基于缓存的存储器层次结构行之有效是因为较慢的存储设备比较快的存储设备更便宜还因为程序往往展示局部性 1利用时间局部性 2利用空间局部性 6.4高速缓存存储器 6.4.1通用的高速缓存存储器结构 一个计算机系统每个存储器地址有m位形成M2m个不同的地址。 如图这样一个机器的高速缓存被组织成一个有S2s个高速缓存组的数组。每个组包含E个高速缓存行 每个行是由一个B2b字节的数据块组成的一个有效位指明这个行是否包含有意义的信息还有tm-bs个标记位 6.4.2直接映射高速缓存 1.直接映射高速缓存中的组选择 高速缓存从w的地址中间抽取出s个组索引位 2.直接映射高速缓存中的行匹配 上一步已经选择了某个组i接下来的一步就要确定是否有字w的一个拷贝存储在组i包含的一个高速缓存中。 3.直接映射高速缓存中的字选择 一旦命中我们知道w就在这个块的某个地方最后一步确定的字在块中是从哪里开始的。 块偏移位提供了所需要的字的第一个字节的偏移。 4.直接映射高速缓存中不命中时的行替换 若果缓存不命中那么它需要从存储器层次结构中的下一层取出被请求的块然后将新的块存储在组索引位指示的组中的一个高速缓存行中。 6.4.3组相联高速缓存 1.组相联高速缓存中的组选择 2.组相联高速缓存中的行匹配和字选择 3.组相联高速缓存中的不命中时的行替换 6.4.4全相联高速缓存 1.全相联高速缓存中的组选择 2.全相联高速缓存中的行匹配和字选择 6.4.7高速缓存参数的性能影响 1.高速缓存参数的性能影响 2.块大小的影响 3.相联度的影响 4.写策略的影响 6.5总结 1.基本存储技术包括随机存储器RAM非易失性存储器ROM和磁盘。ROM有两种基本类型。静态和动态。静态跟快但贵既可以做CPU芯片上的高速缓存也可以在芯片下做高速缓存。动态慢一些但便宜用作主存和图形帧缓冲区。 2.非易失性存储器即只读存储器即使在关掉电源的时候也能保持他们的信息他们用来存储固件。旋转磁盘是机械的非易失的存储设备以每个很低的成本保存大量的数据但访问时间比DRAM长。 3.较快的存储技术每个位的价格会高而且容量小。 4.一个优秀的程序员可以通过编写良好的空间和时间局部性来显著地改进程序的运行时间 一.实验总结 实验一 1. 编译和运行代码的命令gcc *.c -o main ./main 2. 使用GDB调试以上代码 编译代码的命令gcc -g *.c -o main main.c中如何给main函数设置断点b main 在第k行设置断点b k 3. 除了main.c外其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人3分 制作一个math.a静态库 gcc -c add.c sub.c mul.c div.c ar rcvs math.a add.o sub.o mul.o div.o main.c使用math.a gcc main.c -o main -L. -math (or gcc main.c ./math.a -o main) 制作一个mymath.so共享库 gcc -fPIC -c add.c sub.c mul.c div.c gcc -shared -o math.so add.o sub.o mul.o div.o 或 gcc -shared -fPIC -o math.so add.c sub.c mul.c div.c main.c使用math.so sudo so//获得权限 gcc -o main main.c -L. -math或gcc -o main main.c ./math.so 注意libmymath.so 要拷贝到/lib or /usr/libcp math.so /lib 5. 写出编译上面代码的makefile,编译出来的目标文件为testmymath vi makefile 输入下列程序 testmymath: main.o add.o sub.o mul.o div.o gcc main.o add.o sub.o mul.o div.o -o testmymath main.o: main.c head.h gcc -c main.c add.o: add.c head.h gcc -c add.c sub.o: sub.c head.h gcc -c sub.c mul.o: mul.c head.h gcc -c mul.c div.o: div.c head.h gcc -c div.c 最后输入make 实验二 gcc –S –o main.s main.c -m32编译成汇编代码 具体汇编代码 二.收获和不足 通过这一阶段的学习我对计算机系统及其组成有了全新的认识认识到了计算机系统的本质概念并明白了这些概念是如何实实在在的影响应用程序的正确性性能和实用性。从程序员的视角学习到如何利用系统知识编写更好的程序同时我的动手也能力也有了进一步提升。在学习这门课之前我对计算机的学习仅仅停留在书本中认为对计算机的学习仅仅读书就够了而随之到来的后果就是对部分概念认识及其意义的不甚了解无法对计算机系统形成一个完整的认识。但在学习这么课的过程中通过对老师提供各种实验和题目以及课本中家庭作业的学习不但掌握了新的知识对之前不明白的概念也有了准确的理解使我受益匪浅在接下来的学习实践中我要继续将理论和实践相结合举一反三地学习相关知识深入理解计算机系统。 同时在这阶段的学习过程中我也有一些不足有待改进比如对实验楼的实验步骤不求甚解没有理解其意义仅仅照着打输出结果相同就算完成任务导致到最后也没明白代码的意思。在今后的学习中我要在对代码的操作过程中也要理解并掌握代码不让时间白白浪费。 转载于:https://www.cnblogs.com/mqy123/p/4927442.html