自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 汇编语言8086(王爽)读书笔记

汇编语言的组成汇编语言由以下3类指令组成:1、汇编指令:机器码的助记符,有对应的机器码。2、伪指令:没有对应的机器码,由汇编器执行,计算机并不执行。3、其他符号:如=、-、*、/等,由编译器识别,没有对应的机器码。 存储单元我们电子计算机的最小信息单位是bit,也就是二进制的一个位。8bit组成一个Byte,也就是通常所说的字节。微型机存储器的存储单元可以存储一个Byt...

2018-05-27 01:30:13 1426 1

原创 动态链接

1、为什么要动态链接?静态链接虽然速度快,但是对于多进程操作系统来说,会浪费大量的内存空间;如果遇到程序更新,需要整个程序下载,更新不方便。基于以上两点,我们引入了动态链接。 2、什么是动态链接以及它的基本实现?动态链接就是不对那些组成程序的目标文件进行链接,而是在程序运行时才进行链接。动态链接的基本思想就是把程序按照模块拆分成各个相对独立部分,在程序运行时才将它们链接在一起形成一个完整的程序,而...

2018-05-27 01:17:20 523

原创 目标文件分析

目标文件的格式现在PC平台流行的可执行文件格式(Executable)主要是Windows 下的PE(Portable Executable)和Linux的ELF(ExecutableLinkable Format),它们都是COFF(Common file format)格式的变种。目标文件就是源代码编译后但未进行链接的那些中间文件(Windows是.obj和Linux是.o),它们跟可执行文件...

2018-05-27 01:06:14 285

原创 可执行文件的装载与进程

进程虚拟地址空间程序(或者狭义上讲可执行文件)是一个静态的概念,它就是一些预先编译好的指令和数据集合的一个文件;进程则是一个动态的概念,它是程序运行时的一个过程。我们可以把程序比喻成一个菜谱,而炒菜的过程就是一个进程。对于进程与线程,线程是程序执行的最小单位,而进程是系统资源分配的最小单位。我们的程序在执行的时候,它都有自己独立的虚拟地址空间(Virtual Address Space),这个空间...

2018-05-27 00:58:18 452

原创 从源代码到可执行文件

HelloWorld!对于我们大部分工科生来说是无比熟悉的一个单词,是它,让我们第一次接触到编程。在我上大学的时候,第一门编程课是C语言,第一次编写的程序是下面这样的。#include<stdio.h>int main(){printf(“Helloworld!\n”);return 0;}第一次用的IDE是下面这个,VC++6.0,点击其右上角的编译、运行按钮,程...

2018-05-27 00:56:28 2098

原创 系统级IO

1、I/O有哪些?输入/输出是在主存和外部设备之间拷贝数据的过程。下图是本文讨论的各种I/O之间的关系。Unix I/O模型是在操作系统内核中实现的,较高级的I/O都是基于Unix I/O函数来实现的。2、Unix I/O一个Linux文件就是一个由多个字节组成的序列,所有的I/O设别都被模型化为文件,所有的输入和输出都被当作对相应的文件进行读和写来执行。这种允许Linux内核引出一个简单的接口,...

2018-05-26 18:29:06 374

原创 虚拟内存

1、什么是虚拟内存?一个进程是和其他进程共享CPU和主存的,但是主存的空间是有限的,当同时运行多个进程时,就会使内存不够用。这个时候,我们就引入了虚拟内存的概念,它是一种对主存的抽象的计算机内存管理技术。对于32位的Linux操作系统,系统为每个进程分配4G的虚拟内存。如下图所示。2、虚拟寻址使用虚拟寻址,CPU通过生成一个虚拟地址来访问主存,这个虚拟地址在被送到内存之前会被...

2018-05-26 18:16:02 2728

原创 从异常到进程(外加fork原理)

什么是异常控制流?现代系统使用控制流发生突变来对系统状态变化做出反应,一般而言,我们把这些突变称为异常控制流(Exceptional Control Flow,ECF)。 什么是异常?异常(Exception)就是控制流中的突变,用来响应处理器状态中的某种变化。异常处理的过程是什么样的?在我们的系统中,系统为异常的每种类型都分配了一个唯一的非负整数的异常号。这个异常号相当于一个指针,指向具体的异常...

2018-05-26 18:00:51 323

原创 局部性原理

1、什么是局部性原理?一个编写良好的计算机程序,它们倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身,我们称这种程序具有良好的局部性。这种倾向性,我们称之为局部性原理,是一个持久的概念,对于硬件和软件系统的设计和性能都有着极大的影响。2、局部性的形式时间局部性和空间局部性。在一个具有良好时间局部性的程序中,被引用过一次的存储器在不远的将来会被再次引用。在一个具...

2018-05-26 17:50:22 13356

原创 计算机存储器结构体系详解

生活中的大部分物品,基本都满足“好的不一定是最贵的,但是最贵的一定是好的”。在计算机存储体系中,基本满足了上面这句话,就是存储速度越快,价格就会越贵。因为价格的限制,我们在存储器中,就得有个恰当的搭配,以达到价格与性能的平衡。在前面那些大神的不断努力之后,弄出了很多种材料,不同的存储器,最后,得到了下面这张图。在以前还在的学校的时候,我长期被以下这些名词弄得晕头转向,ROM/RAM/...

2018-05-26 17:47:52 26669 4

原创 处理器体系结构

在《深入理解计算机系统》一书中,作者自己定义了一个新的指令集,Y86-64,它其实就是X86-64的精简版,来说明处理器的体系结构。1、Y86-64指令集体系结构(ISA)该指令集有15个程序寄存器、3个条件码、程序寄存器(PC)、程序状态、内存,如下所示。下面是具体指令,左边是指令的会编码表示,邮编是字节编码,其中fn表示它可以取0~9任意数字,也就是它还有很多别的指令。具体看下面的图。2、逻辑...

2018-05-26 17:30:49 2438

原创 从进程地址空间分布到缓冲区溢出

进程的地址空间一个进程的空间分布大致如上图所示,主要由数据段、代码段、堆、栈这几部分组成,其中代码段(.code)主要存放程序代码在内存中的映射;数据段具体会分为初始化数据段(.data)和为初始化数据段(.bss);而堆主要用于存放局部变量、临时变量,函数调用时,存放函数的返回指针,用于控制函数的调用和返回;堆用于存储动态内存分配,需要手动分配,手动释放,比如我们常见的malloc()函数产生的...

2018-05-26 17:18:30 624

原创 X86_64汇编与IA32比较

什么是X86-64?所谓IA32就是“Intel32位体系结构”(Intel Architecture 32-bit),而我们常说的X86-64就是IA32的64为拓展。数据格式 C声明 Intel数据类型 汇编代码后缀 大小(字节) char 字节 ...

2018-05-26 17:08:42 9617

原创 信息的表示和处理

无符号(unsigned)编码基于传统的二进制表示法,表示大于或者等于零的数字;补码(two’s-complement)编码是表示有符号整数的最常见的方式,有符号整数就是可以为正或者负的数字;浮点数(floating-point)编码是表示实数的科学记数法的以二为基数的版本。整数的表示虽然只能编码一个相对较小的数值范围,但是这种表示是精确的;而浮点数虽然可以编码...

2018-05-26 16:38:14 657

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除