20135333苏正生期中总结
---恢复内容开始---
# 时间转眼就到了期中,已经将《深入理解计算机系统》学习大半了,暂在这里简单做一个总结。 在过去的七周里,共学习《深入理解计算机系统》 五章,《嵌入式linux系统》一章,在实验楼中实验六次,完成相应博客、练习、家庭作业。 本次期中总结以课程章节为线,整合每个章节主要的学习内容,所需了解和联系的技能,以及在实验和课程上老师所强调的内容。 ###第二章 本章主要学习了计算机的一些运算,包括无符号数和数的二进制补码---恢复内容结束---
# 时间转眼就到了期中,已经将《深入理解计算机系统》学习大半了,暂在这里简单做一个总结。 ##学习内容 在过去的七周里,共学习《深入理解计算机系统》 五章,《嵌入式linux系统》一章,在实验楼中实验六次,完成相应博客、练习、家庭作业。 本次期中总结以课程章节为线,整合每个章节主要的学习内容,所需了解和联系的技能,以及在实验和课程上老师所强调的内容。 ###Linux 基础入门& 2.基本概念及操作 本章节主要学习了:如何熟练地使用 Linux,Linux 基本操作,shell 环境下的常用命令等。 1.Ubuntu界面打开命令行:ctrl+alt+t 2.man命令,cheat命令 3.pwd命令:显示当前文件夹 4.find命令,神速搜索locate 5.whereis……,which……查找安装位置 6.grep(正则表达式)查找文件夹中文件中相关内容,相当于多文件全文检索 7.grep –nr xxx/usr/include 参考博客: [http://www.cnblogs.com/suzhengsheng/p/4822932.html](url) ###第一、二章 本章主要学习了计算机系统概述,计算机的一些运算,包括无符号数和数的二进制补码表示的特性。 二进制cpu: 逻辑:与或非 数字:加法器 gdb 1.gdb XXX 2.b main 3.b XXX 4.run 5.quit cgdb ddd 静态库:xxx.a,xxx.lib(win) 动态库:xxx.so,xxx.dll(win) 通过实验我了解到了: 1. 快捷键 2. vim 3. gcc 4. gdb 5. make与makefile 参考博客[http://www.cnblogs.com/suzhengsheng/p/4842737.html](url) ###第三章 本章我们学习了由c编译器生成的IA32和x86汇编语言。我们主要学习了 1.不同的控制结构的基本指令模式 2.栈分配 3.寄存器使用 4.参数传递 5.缓冲区溢出———栈帧 信息=位串+上下文 参考ppt——linux命令之find 参考博客[http://www.cnblogs.com/suzhengsheng/p/4870037.html](url) ###第四章 这一章我们从y86入手,对于IA32的指令进行了较深入的学习。在本章里,相对来说的难点就是“流水线”——将每个指令步骤化的思想了。结合以前学习的数字电路、verilog编程课程,本章内容理解相对较快。 1.Y86指令 2.指令编码 3.Y86异常 4.Y86顺序实现(五阶段) 5.SEQ的时序 参考博客[http://www.cnblogs.com/suzhengsheng/p/4890002.html](url) ###第六章 存储技术 随机访问存储器(RAM) 1.静态RAM(SRAM) 2.动态RAM(DRAM) 3.SRAM与DRAM的对比 4.传统的DRAM* 5.访问主存 6.总线:数据流通过称为总线的共享电子电路在处理器和DRAM之间传送 7.I/O桥:将系统总线的电子信号翻译成存储器总线的电子信号。系统总线连接CPU和I/O桥,控制总线连接I/O桥和主存。 8.非易失性存储器(ROM) 9.磁盘存储、磁盘构造、磁盘容量、磁盘操作(寻道时间、旋转时间、传送时间) 10.固态硬盘 11.局部性(时间局部性、空间局部性) 12.缓存命中 13.缓存不命中 参考博客[http://www.cnblogs.com/suzhengsheng/p/4915394.html](url) ###第七章 与静态库链接 静态库:将所有相关的目标模块打包成一个单独的文件,称为静态库。在unix系统中,静态库以一种称为存档的特殊文件格式存放在磁盘中。 为了创建该库,使用AR工具: ar rcs libvector.a addvec.o multvec.o 为了创建可执行文件,需要编译链接输入文件*.o 和libvector.a: gcc -O2 -c .c gcc -static -o p2 .o ./libvector.a 加载可执行目标文件 ./p 与动态库链接 共享库:一个目标模块,在运行时可以加载到任意的存储器地址,并和一个在存储器中的程序链接起来。这个过程称为动态链接,是由一个叫做动态链接器的程序来执行的。 创建动态库: gcc -shared -fPIC -o libvector.so addvec.c multvec.c 将动态库链接到程序中: gcc -o p2 *.c ./libvector.so #自己的重点突破 ##对课本中习题进行回顾 练习题:4.5、4.11、4.16、6.2、6.11 ![](http://images2015.cnblogs.com/blog/744810/201511/744810-20151101191154794-906625017.jpg)对曾经考题的重新理解和回顾
1.Linux Bash中, man printf和man 1 printf 功能等价。 (ok)
在linux中,默认man printf即是对linux系统命令中的printf进行操作(调用关于printf的帮助文档)
2.man -k 填空: 数据结构中有线性查找算法,C标准库中没有这个功能的函数,但Linux中有,这个函数是(lfind或lsearch)
通过man -k search ,或者man -k search |grep line 查找
3.Linux Bash中,cd - 命令可以切换到'home'目录。( x )
应该是cd ~ , cd -是切换到上一个目录。
4.cheat 填空:To list the content of /path/to/foo.tgz archive using tar ( tar -jtvf /path/to/foo.tgz )
5.Linux Bash中,source 和 . 命令功能等价。 (ok)
这两个都是指的根目录。
6.CH03 填空:Linux汇编中,形成空调用栈帧的语句是(push %ebp movl %esp %ebp)
栈顶指针和栈底指针指向同一个地址,栈为空。
7.Linux Bash中,查找home目录中前天创建的文件的命令是(find ~ -ctime 2)。
find命令执行查找功能;~代表home目录(根目录);ctime 2代表2天前创建的文件(时间点,而不是时间段)。
8.数据结构中有线性查找算法,C标准库中没有这个功能的函数,但Linux中有,这个函数是(lfind或lsearch)
可以用find进行查找
9.4.6 判断:Y86中,pushl压入栈的是减去4的%esp的值。(x)
压入栈是%esp的地址减4,而不是%esp的值减四。
10.链接器的两个主要任务是(符号解析和重定位)。
11.(加载器)将可执行文件的内容映射到存储器,并运行这个程序。
12.CH06 填空:存储层次结构的中心思想是(上层作为下层的缓存)。
13.~/test 文件夹下有很多c源文件,查找main函数在哪个文件中的命令( grep main *.c )
【grep命令可以实现筛选的功能,筛选范围是所有的.c文件。】
14.C语言中: -2147483647-1U < -2147483647 ( ok )
【左侧的-2147483647-1在转换成无符号数的时候,会转换成(4294967296-2147483648)即2147483648;而-2147483647转换成无符号数字的时候也是加上4294967296,则比左侧大。】
15.除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?(4分)
gcc -fPIC -c add.c sub.c mul.c div.c
gcc -shared -o libmymath.so add.o sub.o mul.o div.o
gcc -o main main.c -L. -lmymath
libmymath.so 要拷贝到/lib or /usr/lib
16.把内存中地址为0x4050处的字复制到地址为0x405c处的指令是 movw ($0x4050) ,($0x405c) (x)
应该是movw $0x4050 ,($0x405c)
17.C语言中的循环结构可以用(条件测试和跳转组合起来)实现。
也就是说,条件测试负责把控循环的进出;而跳转则是执行循环体。
18.6.11 填空:3/4的命中率的如何计算的((32-8)/32,或每4次有一次不命中)
19.实现一个数字系统需要三组成部分(组合逻辑、存储器元素、时钟信号)。
总结心得
本次总结主要以书本和实验作为主导线,将过去半学期的学习内容做了重新的审读和回顾。很好,不仅在适当的时候让我巩固了以前的知识,而且留了一点时间给曾经没有看懂不求甚解跳过的内容,有时间再回过头重新理解。其实我个人认为这一点点时间还是不够的,就在今天先写完总结,对于之前内容的复习和总结工作还要继续,一直持续下去。可能之后的复习也会将一些收获收录在博客园里,有什么问题会在小组里询问,总之,中期总结报告结束了,但是对于总结不能结束,应该一直一直持续下去。