首页 > 其他 > 详细

期中学习总结

时间:2015-11-01 15:11:45      阅读:295      评论:0      收藏:0      [点我收藏+]

期中学习总结

一、 常用Linux命令

1.man-k:

man是manul的缩写,我们可以通过man man来查看man的帮助

用于搜索,格式如下:

man -k k1 | grep k2 | grep 2

 

2.cheat:

作弊命令,简单备忘单 它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。

方便用于搜索你需要的内容,格式如下:

cheat ls

 

3.grep:

在文本中或 stdin 中查找匹配字符串,格式如下:

grep [命令选项]... 用于匹配的表达式 [文件]...

 

二、 vi,gcc,gdb,make的使用

1.vim

三种模式

● 普通模式

● 插入模式

● 命令行模式

 

基本的vim操作:

普通→插入: i 或 a 
插入→普通: Esc 或 Ctrl + [
普通→命令行: :
命令行→普通:Esc 或 Ctrl + [

常用的进入、保存和退出指令:

进入:vim 文件名
保存:命令行模式 :w
退出:命令行模式 :q

常用动作:

删除:dd删除整行
复制:yy复制整行
粘贴:p

2.gcc:

常用选项

-c		只编译不链接,生成目标文件.o
-S		只编译不汇编,生成汇编代码
-E		只进行预编译,不做其他处理
-g		在可执行程序中包含标准调试信息
-o file	将file文件指定为输出文件
-v		打印出编译器内部编译各过程的命令行信息和编译器的版本
-I dir	在头文件的搜索路径列表中添加dir目录

编译过程

预处理:gcc –E hello.c –o hello.i;	gcc –E调用cpp	生成中间文件
编 译:gcc –S hello.i –o hello.s;	gcc –S调用ccl	翻译成汇编文件
汇 编:gcc –c hello.s –o hello.o;	gcc -c 调用as	翻译成可重定位目标文件
链 接:gcc hello.o –o hello ;		gcc -o 调用ld**	创建可执行目标文件

3.gdb

gdb programm(启动GDB)
l	查看所载入的文件
b	设断点
info b	查看断点情况
run 开始运行程序
bt	打印函数调用堆栈
p	查看变量值
c 	从当前断点继续运行到下一个断点
n 	单步运行(不进入)
s 	单步运行(进入)
quit 退出GDB
四种断点:
1.行断点
	b [行数或函数名] <条件表达式>
2.函数断点
	b [函数名] <条件表达式>
3.条件断点
	b [行数或函数名] <if表达式>
4.临时断点
	tbreak [行数或函数名] <条件表达式>

4.make

实现自动化编译

Makefile的一般写法:

一个Makefile文件主要含有一系列的规则,每条规则包含以下内容:

 •  需要由make工具创建的目标体,通常是可执行文件和目标文件,也可以是要执行的动作,如‘clean’;
 •  要创建的目标体所依赖的文件,通常是编译目标文件所需要的其他文件。
 •  创建每个目标体时需要运行的命令,这一行必须以制表符TAB开头

格式:

test(目标文件): prog.o code.o(依赖文件列表) tab(至少一个tab的位置) gcc prog.o code.o -o test(命令) 

即: target: dependency_files command

 

三、课本知识点总结

第一章 计算机系统漫游

1.信息,就是位加上下文。

2.系统的硬件组成

  • 总线——贯穿整个系统的一组电子管道,它携带信息字节并负责在各个部件间传递。通常总线被设计成传送定长的字节块,也就是字(word)。各个系统中字长不尽相同。

  • I/O设备

    I/O设备是系统与外界的联系通道。

    控制器是I/O设备本身中或是系统的主印刷电路板(主板)上的芯片组,而适配器则是一块插在主板插槽上的卡。

  • 主存——临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。物理上来说,主存是由一组DRAM芯片组成的;逻辑上来说,存储器由一个线性的字节数据组成,每个字节都有自己惟一的地址(数组索引),这些地址以0开始的。一般来说,组成程序的每条机器指令都由不定量的字节构成。

  • 处理器——CPU,是解释(或执行)存储在主存中指令的引擎。处理器的核心是一个被称为程序计数器(PC)的字长大小的存储设备(或寄存器)。在任何一个时间点上,PC都指向主存中的某条机器语言指令。

第二章 信息的表示和处理

1.三种最重要的数字表示法

无符号:基于传统的二进制表示法,大于等于0

补码:有符号整数

浮点数:实数的科学计数法的以二进制为基数的版本

2.技术分享IEEE浮点表示

技术分享

第三章 程序的机器级表示

1.操作数的三种类型

  • 立即数
  • 寄存器
  • 存储器

2.寻址方式:

1.立即数寻址方式
2.寄存器寻址方式
3.存储器寻址方式
  • 直接寻址方式
  • 寄存器间接寻址方式
  • 寄存器相对寻址方式
  • 基址变址寻址方式
  • 相对基址变址寻址方式

4.mov类指令:将源操作数的值复制到目的操作数中。源操作数指定的值是一个立即数,存储在寄存器中或存储器中。目的操作数制指定一个位置,要么是一个寄存器,要么是一个存储器。

  • movb 传送字节
  • movw 传送字
  • movl 传送双字
  • movs 符号位扩展
  • movz 零扩展

push:把数据压入栈中

pop:删除数据

  • 后进先出
  • 栈指针指向栈顶元素
  • 栈朝低地址方向增长

5.栈帧:

为单个过程分配的那部分栈称为栈帧。

最顶端的栈帧以两个指针界定:

  • 寄存器%ebp-帧指针
  • 寄存器%esp-栈指针

1.call

CALL指令的效果是将返回地址入栈,并跳转到被调用过程的起始处。

返回地址是还在程序中紧跟在call后面的那条指令的地址。

2.ret

ret指从栈中弹出地址,并跳转到这个位置。

3.leave

这个指令使栈做好返回的准备



第四章 处理器体系结构

  1. 程序员可见的状态

    Y86处理器有八个寄存器:%eax、%edx、%ecx、%ebx、%esi、%edi、%esp和%ebp。每个程序存储器存储一个字。

  2. Y86指令集

                            技术分享

  3. 逻辑设计和硬件控制语言HCL

    1)逻辑门——逻辑门只对单个位的数进行操作。

    2)组合电路和HCLB布尔表达式

    组合电路——将很多逻辑门组合成一个网,构建计算块。
    

    两个限制: a.两个或多个逻辑门的输出不能连接在一起,否则它们可能会使线上的信号矛盾,可能会导致一个不合法的电压或电路故障;b.这个网必须是无环的。回路会导致网络计算的函数有歧义。

  4. 通常,处理一条指令包括很多操作。

    1)取指(fetch):取指阶段从存储器读入指令,地址为程序计数器PC的值。从指令中抽取出指令指示符字节的两个四位部分,称为icode(指令代码)和ifun(指令功能)。

    2)解码(decode):解码阶段从寄存器文件读入最多两个操作数,得到值valA or/and valB。

    3)执行(execute):在执行阶段,算术/逻辑单元(ALU)要么执行指令指明的操作(根据ifun的值),计算存储器引用的有效地址,要么增加或减少栈指针。

    4)访存(memory):访存阶段可以将数据写入存储器,或者从存储器读出数据。读出的值为valM。

    5)写回(write back):写回阶段最多可以写两个结果到寄存器文件。

    6)更新PC(PC update,程序计数器):将PC设置成下一条指令的地址。

    [ 指令执行过程,从PC中取出指令,然后沿着上述的几个步骤操作,周而复始的进行循环。]

  5. SEQ硬件结构、SEQ的时序

    SEQ的实现包括组合逻辑和两种存储器设备:时钟寄存器(程序计数器和条件码寄存器)和随机访问寄存器(寄存器文件、指令存储器和数据存储器)。

第六章 存储器结构层次

  1. 随机访问存储器(RAM,Random-access memory)分为两类-静态和动态。

    静态RAM(SRAM)比动态RAM(DRAM)更快,但也贵很多。SRAM用来作为高速缓存存储器,即可以在CPU芯片上,也可以不在CPU芯片上。DRAM用来作为主存以及图形系统的帧缓冲区。

    1)静态RAM

    SRAM将每个位存储在一个双稳态(bistable)存储器单元(cell)中。每个单元是用一个六晶体管电路来实现的。这个电路的一个属性是:它可以无限制地保持在两个不同的电压配置(configuration)或状态(state)之一。其他任何状态都是不稳定的。

    由于SRAM的双稳态特性,只要有电,它就会永远地保持它的值,即使有干扰,如电子噪音,当干扰消除,电路也能恢复到稳定值。

    2)动态RAM

    DRAM将每个位存储为对电容的充电。电容约为30×10-15F。

  2. 磁盘构造(磁盘是由盘片构成的。表面覆盖着磁性记录材料。)

    磁盘结构:盘片、磁道、扇区、间隙、柱面;磁盘驱动器

  3. 内存可以看成字节数组、磁盘可以看成块数组)。现代磁盘构造一个B个扇区大小的逻辑块的序列,编号0—B-1。磁盘中有一个小的硬件/固件设备,成为磁盘控制器。可将一个逻辑块号翻译成一个(盘面、磁道、扇区)三元组。

  4. 直接存储器访问——设备自己执行读或写总线事务,不需要CPU的干涉。这种数据传送成为DMA传送
  5. 局部性原理:一种倾向性,倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。
  6. 局部性有两种不同的形式:时间局部性和空间局部性。
  7. 存储器层次结构的中心思想:对于每个K,位于k层的更快更小的存储设备作为位于k+1层的更慢更大的存储设备的缓存。即每层存储设备都是下一层的“缓存”。
  8. 高速缓存结构可以用元组(S,E,B,m)来描述。高速缓存的大小(容量)C指的是所有块大小的和。标记位和有效位不包括在内。因此C=SEB。
  9. 高速缓存确定一个请求是否命中,然后抽取出被请求字的过程分为三步:(1)组选择;(2)行匹配;(3)字抽取。

四、收获

    到现在已经进行了近半学期的学习,我一开始觉得学习压力大,作业量多难以完成,经过半学期的慢慢调整,现在已经逐渐的适应了这种学习节奏。现在看来,还是自己以前太懒散,学习动力不足,看着厚厚的一本书就觉得头疼。但现在一点一点的学习书本知识后发现,其实书是可以变薄的。只要慢慢研读,就会发现老师的课堂测试其实来自书本上的一些重要的小细节。看着自己从不适应到自如的这个过程其实是非常开心的,从一开始对linux的不了解到现在算是对它有了基本的认识。在学习过程中发现只要愿意主动去学习,学习其实并没有自己所想的那么痛苦。

五、自己的不足

     自己在学习中的不足就是不会反复学习,之前学习的东西特别容易遗忘,常常学过考过就扔到了脑后。比如学习这门课的时候需要结合上学期学过的汇编知识,我因为对知识的遗忘导致我学习起来没有那么流畅,常常学习的同时去查阅相关资料,这样直接导致了我的学习速度直线下降。

 

 

 

 

 

 

期中学习总结

原文:http://www.cnblogs.com/disturbia/p/4927651.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!