20135209——期中总结

一、课本内容整理

第一章 计算机系统漫游

信息=位+上下文

计算机中的信息都是有二进制数字表达的,而因为这些二进制位所处的位置不同,是有符号数还是无符号数,是大端法还是小端法,由于具体的解释不同,造成的结果也不同。

之后的学习就是如何读写位,和上下文如何对应。

第二章 信息的表示和处理

1.gcc -m32 可以在64位机上生成32位的代码

2.字节顺序的两种表示方法:小端是“高对高、低对低”,大端与之相反

3.几乎所有的机器都使用补码;通常,大多数数字都默认为有符号.然而,在一个运算式中,如果有一个参数是无符号的 ,那么另外一个也会默认为无符号数

4.浮点数构造

IEEE浮点标准——用V= (-1)^sM2^E来编码一个数。其中:

符号:s决定这个数是负数(s=1)还是正数(s=0),对于数值是0的符号位解释为特殊情况。

尾数:M是一个二进制小数。

阶码:E对浮点数加权,可以是负数。

第三章 程序的机器级表示

寻址方式和几个操作,mov,push,pop,leal,还有跳转指令、控制转移指令等等

寄存器使用惯例

帧栈结构

第四章 处理器体系结构

这章里学习的是一个相对简单的处理器Y86,指令集比起IA32省略了很多。

Y86

一个简单的、可以称之为IA32指令集的子集的指令集;只包括四字节整数操作,寻址方式比较少。指令编码长度从1——6字节不等。指令集的一个重要性只就是字节编码必须具有唯一的解释。

关于指令结构,每条指令的第一个字节表明指令的类型;这个字节分为两个部分,每部分四位:高四位是代码部分(0——0xB),第四位是功能部分。这里补充一些缩写:立即数(i),寄存器(r)、存储器(m)。指令附加的寄存器指示符字节依次是数据源(如果是立即数,把这一位设置成0xf)、目的寄存器/基址寄存器。有些指令需要附加四字节的常数字,采用小端法(倒序)编码

pushl会把栈指针减4,并将一个寄存器值写入存储器中。因此,执行pushl %esp 和 popl %esp的结果是不固定的。

处理操作的阶段——

  • 取指:从寄存器读取指令字节,地址为程序计数器的值。计算下一条指令地址等于PC中的值加上已取出指令的长度;
  • 译码:从寄存器文件中最多读出两个操作数,它读入指令rA和rB指明的寄存器,不过有些是读寄存器%esp的;
  • 执行:ALU执行指明的操作、引用的有效地址或者是修改栈指针,得到的值称为valE;
  • 访存:将数据写入存储器或者从存储器读出数据,读出的数据叫做valM;
  • 写回:写两个结果到寄存器文件;
  • 更新PC:将PC设置成下条指令地址。

第六章存储器层次结构

局部性原理:

一个编写良好的计算机程序,常常倾向于引用临近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。

分类:

  • 时间局部性
  • 空间局部性

量化评价一个程序中局部性的简单原则:

  • 重复引用同一个变量的程序有良好的时间局部性
  • 对于具有步长为k的引用模式的程序,步长越小,空间局部性越好
  • 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。

存储器层次结构中心思想:每层存储设备都是下一层的“缓存”

1.缓存命中

当程序需要第k+1层的某个数据对象d时,首先在当前存储在第k层的一个块中查找d,如果d刚好缓存在第k层中,就称为缓存命中。

该程序直接从第k层读取d,比从第k+1层中读取d更快。

2.缓存不命中

即第k层中没有缓存数据对象d。

这时第k层缓存会从第k+1层缓存中取出包含d的那个块。如果第k层缓存已满,就可能会覆盖现存的一个块

覆盖——替换/驱逐

替换策略:

  • 随机替换策略-随机牺牲一个块
  • 最近最少被使用替换策略LRU-牺牲最后被访问的时间距离现在最远的块。

3.缓存不命中的种类

(1)强制性不命中/冷不命中

即第k层的缓存是空的(称为冷缓存),对任何数据对象的访问都不会命中。

(2)冲突不命中

由于一个放置策略:将第k+1层的某个块限制放置在第k层块的一个小的子集中,这就会导致缓存没有满,但是那个对应的块满了,就会不命中。

(3)容量不命中

当工作集的大小超过缓存的大小时,缓存会经历容量不命中,就是说缓存太小了,不能处理这个工作集。

高速缓存存储器

高速缓存是一个高速缓存组的数组,它的结构可以用元组(S,E,B,m)来描述:

S:这个数组中有S=2^s个高速缓存组
E:每个组包含E个高速缓存行
B:每个行是由一个B=2^b字节的数据块组成的
m:每个存储器地址有m位,形成M=2^m个不同的地址

除此之外还有标记位和有效位:

有效位:每个行有一个有效位,指明这个行是否包含有意义的信息
标记位:t=m-(b+s)个,唯一的标识存储在这个高速缓存行中的块
组索引位:s
块偏移位:b

高速缓存的结构将m个地址划分成了t个标记位,s个组索引位和b个块偏移位。

二、常用命令与工具:

man -k:

常用来搜索,结合管道使用。例句如下:

man -k k1 | grep k2 | grep 2

搜索同时含有k1和k2,且属于系统调用。

最后的数字意味着帮助手册中的区段,man手册共有8个区段,最常用的是123,含义如下:

1.Linux
2.系统调用
3.c语言

但是当单独用man语句的时候,想查看其中的单独某个区段内的解释时,用法是这样的:

man 3 printf

即查找c语言中printf的用法。

grep -nr

这条语句可以用来查找关键字,全文搜索,并且可以直接查找文件内的内容。其中:

工具:

vim

vim是一种非常好用的编辑器,总共有六种基本模式,最常用的是普通模式、插入模式和命令行模式。需要熟悉这三种模式之间的切换方式:

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

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

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

常用动作:

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

※实用功能:交换上下行——ddp,快速交换光标所在行与它下面的行。

gcc

常用选项

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

gdb:

编译过程

预处理: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**	创建可执行目标文件

gdb

注意:使用GCC编译时要加“-g”参数,然后才能够用gdb调试

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 [行数或函数名] <条件表达式>

另外的调试工具:

cgdb,有单独的debug窗口,更方便查看

ddd,图形页面

Makefile的一般写法:

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

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

格式为:

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

定义变量的两种方式:

(1)递归展开方式
		VAR=var
(2)简单方式
		VAR:=var

使用变量的格式为:

$(VAR)

三、补充内容:

正则表达式:

作用:

  • 验证是否匹配
  • 查找
  • 替换

规则:

  • \ 特殊符号,表示后面的字符本身
  • [ ] 匹配其中任意字符,但每次匹配只匹配一个
  • [^ ] 匹配除其中的任意字符,每次匹配只匹配一个
  • {n} 次数修饰,重复n次,具体如下:
    ?= {0,1}
    += {1, }
    *= {0, }
    {m,n}:至少为m,至多为n

    匹配方法:

  • ^ 从字符串开始的地方匹配
  • $ 从字符串结束的地方匹配
  • | 可以匹配左或者右

 

【参考资料:课本,之前博客,被老师介绍过的同学们的优秀笔记】

六、收获

新的学习方法比之前应付老师应付自己的学习确有很大不同,感觉学到的知识比之前更多也更易使用。增强了课业内容的实用性,提高了实践能力;

七、不足

本人感觉自己难以持之以恒,有时看书写博都很仓促,导致质量差强人意;也有很多知识点并未吃透,长时间放置一旁不予过问终会成一大问题,日后的学习里应该时刻警醒自己,许多细小的知识点不能马虎放过。

另外,平时看书时间较少,浪费时间较多;以后应该合理安排学习时间,保证效率。

时间: 2024-10-01 04:57:19

20135209——期中总结的相关文章

20145225 《信息安全系统设计基础》期中总结

期中总结 一.常用命令总结 man -k: 常用来搜索,结合管道使用.例句如下: man -k k1 | grep k2 | grep 2 搜索同时含有k1和k2,且属于系统调用. 最后的数字意味着帮助手册中的区段,man手册共有8个区段,最常用的是123,含义如下: 1.Linux 2.系统调用 3.c语言 但是当单独用man语句的时候,想查看其中的单独某个区段内的解释时,用法是这样的: man 3 printf 即查找c语言中printf的用法. grep -nr 这条语句可以用来查找关键字

期中总结

期中总结: 如白驹过隙,学期已经过半. <Linux及安全>的课程的基础部分已经学完,虽然仅仅短短的半个学期,但也让我受益匪浅. 第一周:计算机工作的进行 http://www.cnblogs.com/20135314ZHU/p/5222946.html 第二周:完成一个简单的时间片轮转多道程序内核代码: http://www.cnblogs.com/20135314ZHU/p/5245234.html 第三周:跟踪分析Linux内核的启动过程 http://www.cnblogs.com/2

实验三报告 20135209潘恒 20135204郝智宇

北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础                       班级:1352 姓名:  潘恒       郝智宇 学号:20135209    20135204 成绩:           指导教师:娄嘉鹏          实验日期:2015.11.24 实验密级:       预习程度:            实验时间:15:30~17:30 仪器组次:04,09   必修/选修:必修           实验序

实验一报告 20135209潘恒 20135204郝智宇

北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础                班级:1352 姓名:  潘恒     郝智宇 学号:20135209  20135204 成绩:             指导教师:娄嘉鹏       实验日期:2015.11.10 实验密级:         预习程度:             实验时间:15:30~18:00 仪器组次:          必修/选修:必修        实验序号:01 实验名称:

信息安全系统设计基础 期中总结

期中总结 一.常用命令 man -k;grep;cheat;find;locate;apt-get. 二.正则表达式 ①查找匹配.检索.替换 ② + 表示前面的字符必须出现至少一次(1次或多次)  ? 表示前面的字符最多出现一次(0次或1次)  * 星号代表前面的字符可以不出现,也可以出现一次或者多次(0次.或1次.或多次) 字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.例如,“n”匹配字符“n”.“\n”匹配一个换行符.序列“\\”匹配“\”而“\(”则匹配“(”. ^ 匹配

大三上 期中考试

自己做的,仅供参考.对错自负 湛江师范学院2014-2015学年度第 1学期 期中试卷 科目:LINUX平台及应用 题号 一. 操作 二. C 编程 三. shell编程 四. 辩论 总分 评分 复核 分值 25 25 25 25 100 蔡广基   得分 得分 评卷人   蔡广基 一.操作题.添加一个 1.0GB 的硬盘,分区为 /dev/sdb1 (10分),格式化它 (5分).每次开机时自动挂载它到 /mnt/b (10分).试写出具体的步骤. 1. 打开VMware Workstatio

CSDN开源夏令营 百度数据可视化实践 ECharts(6) 期中总结

期中总结 (1)首先感谢林峰老师的辛勤指导!! 通过半个多月的培训,林峰老师讲解了ECharts总体框架和其中各个部分:图类.组件.接口.基础库的具有应用方法和应该把握的细节,并通过实际的例子熟悉和掌握各个控件.只有打牢基础才能正正的为下步的工作做好准备,熟练的属性代码的编程技巧,才能做出更好的专题. (2)第一次任务重点总结: 要求:了解ECharts特性中列举的每一项特性,并能找到实例中的例子,并且在实例中操作. 重点问题: 1)ECharts一种支持多少种图表?有多少个组件?列举出中英文名

第17期中国智能家居主题沙龙将于5月23日在京举行

中国智能家居主题沙龙已经办16期,为中国智能家居的发展贡献了自己的力量,在这轮智能家居热潮中,沙龙将继续为政府.投资机投.智能家居产品提供商.智能家居方案提供商,智能家居集成商,智能家居渠道提供多方位的合作,促进行业的快速爆发. 活动宗旨: 搭建行业用户与企业沟通的桥梁,以交流.合作.服务为目的,探讨行业现状及走势,推广普及新理念.建立智能家居沟通平台以宣传企业品牌,推广新技术,展示新产品.根据智能家居行业各产业链上下游人士的需求,有针对性地提供服务,促进行业发展. 活动背景: 2013年初<国

20145336张子扬 《信息安全系统设计基础》期中总结

20145336张子扬 <信息安全系统设计基础>期中总结 教材学习内容总结 学习目标 复习 Linux常用命令 复习 教材1-7章 man命令 在 Linux 环境中,如果你遇到困难,可以使用man 命令,它是Manual page的缩写.要查看相应区段的内容,就在 man 后面加上相应区段的数字即可. -a:在所有man帮助手册中搜索 -k xxx(所查找内容) |grep x(标号) -f:关键字精确搜索,显示给定关键字的简短描述信息 -p:指定内容时使用分页程序 -M:指定man手册搜索