地址

学_汇编语言_王爽版 要点采集笔记(未完待续...)

。_饼干妹妹 提交于 2020-02-02 19:06:12
第一章 基础知识 存储器(内存)存放CPU工作的指令和数据(CPU可以直接使用的信息在内存中存放);指令和数据都是二进制数没有任何区别,由CPU决定是数据还是指令 内存单元:存储器被分为若干个存储单元,并从0开始编号(存储单元的地址),一个存储单元为1字节(8bit) CPU的读写 总线逻辑上分为:地址总线、数据总线、控制总线 地址总线:地址线宽度决定了CPU的寻址能力,计算方式 :2^[地址线宽](个内存单元) 数据总线:决定了CPU和外界的数据传输速度(8根数据总线可传送一个8位(bit)二进制数,即1个字节) 控制总线:是各外部器件的不同控制线的集合 CPU进行数据读写必须经过3类信息交互: ①存储单元的地址(地址信息)②器件的选择,读或写的命令(控制信息)③读或写的数据(数据信息) 读:CPU在内存中读取数据时,要先指定存储单元的地址(你要找一个地方先要确定一个地址),会把要读取的地址经过地址总线发给内存;同时CPU控制器将内存读命令通过控制总线发送给内存,并通知内存要读取数据;最后内存将被指定的内存单元中的数据经过数据总线送入CPU 写:与读类似,CPU经地址线发送要操作的内存单元的地址,CPU经控制线将内存写命令发送至内存,并通知内存要写入数据;CPU通过数据线将数据送入指定的内存单元; 内存地址空间: 每一个外部器件都有自己的存储芯片(如显卡有显存RAM和ROM

32位Linux系统虚拟地址映射

不羁岁月 提交于 2020-02-02 12:37:02
IA32体系即Intel32位体系架构,也被称为i386、X86-32或X86。在Intel公司1985年推出的80386微处理器中首先使用。用以取代之前的X86-16位架构,包括8086、80186、80286芯片。谈到这儿,就不得不说说X86架构的发展历史。 Intel 8086是由Intel于1978年所设计的16位微处理器芯片,是x86架构的鼻祖。8086是16位CPU,数据总线16条,地址总线20条,能保存的地址的大小是2^20=1M。 8086增加了4个段寄存器用来保存各内存段的起始地址,这4个段寄存器分别为CS(代码段寄存器)、DS(数据段寄存器)、SS(堆栈段寄存器)、ES(扩展段寄存器)。 由于地址总线共20条,段地址有20位,但是段寄存器只有16位,不能保存20位的地址。 因此,将内存的大小划分为16的倍数(此时还没有操作系统,直接操作的是物理内存)。每块内存起始地址的后四位都为0,段寄存器只保存地址的高16位。正如前面所讲,8086时,地址总线最多只能保存1M的地址空间。 此时,物理内存=段基址+逻辑地址/偏移量。 此时若要取数据,就需要找到物理内存,方法为从DS寄存器中取值,左移4位,就得到了真正的起始地址(DS<<4),再加上变量在该内存段上的偏移量(IP寄存器保存了当前数据在内存段上的偏移量),就得到了数据的物理内存。 DS<<4 + IP =

操作系统--虚拟内存学习

穿精又带淫゛_ 提交于 2020-02-02 05:49:00
内存的发展流程: 一.嵌入式实时操作系统 表现 :在早期的单片机上,程序运行在物理内存中,也就是说,程序在运行时直接访问到物理地址,在程序运行开始,将全部程序加载到内存中,所有的数据地址和程序地址就此固定。 在运行多任务系统时,比较直接的办法也是直接为每个任务分配各自需要的内存空间,比如总内存为100M,task1需要40M,task2需要50M,task3需要20M,那么最简单的办法是给task1分配40M,给task2分配50M,而task3,不好意思,内存不够了,不允许运行 弊端 : 地址空间不隔离 所有程序都可以直接访问物理内存,那么task1就可以直接访问task2的地址,这就给了一些恶意程序机会来进行一些非法操作,即使是非恶意但是有bug的程序,也可能会导致其他任务无法运行,这对于需要安全稳定的的计算机环境的用户是不能容忍的。 内存使用效率极低 由于没有有效的内存管理机制,通常在一个程序执行时,将整个程序装载进内存中运行,如果我们要运行task3,内存已经不够了,其实系统完全可以将暂时没有运行的task2先装入磁盘中,将task3装载到内存,当需要运行task2时,再将task2换回,虽然牺牲了一些执行效率,但总归是可以支持更多程序运行。 程序地址空间不确定 需要了解的是程序在编译阶段生成的可执行文件中符号地址是连续且确定的,即使实现了内存数据与磁盘的交换

C++学习之路(七)

时光总嘲笑我的痴心妄想 提交于 2020-02-02 02:42:55
文章目录 静态联编和动态联编 多态原理解析 静态联编和动态联编 多态是面向对象程序设计语言中数据抽象和继承之外的第三个基本特征。 多态性(polymorphism)提供接口与具体实现之间的另一层隔离,从而将”what”和”how”分离开来。多态性改善了代码的可读性和组织性,同时也使创建的程序具有可扩展性,项目不仅在最初创建时期可以扩展,而且当项目在需要有新的功能时也能扩展。 c++支持编译时多态(静态多态)和运行时多态(动态多态),运算符重载和函数重载就是编译时多态,而派生类和虚函数实现运行时多态。 静态多态和动态多态的区别就是函数地址是早绑定(静态联编)还是晚绑定(动态联编)。如果函数的调用,在编译阶段就可以确定函数的调用地址,并产生代码,就是静态多态(编译时多态),就是说地址是早绑定的。而如果函数的调用地址不能编译不能在编译期间确定,而需要在运行时才能决定,这这就属于晚绑定(动态多态,运行时多态)。 静态联编 地址早绑定 编译阶段绑定好地址 动态联编 地址晚绑定 运行阶段绑定好地址 # define _CRT_SECURE_NO_WARNINGS # include <iostream> using namespace std ; class Animal { public : virtual void speak ( ) { cout << "动物在说话" << endl ;

int *p、int **p、int (*p)()、int *p()、int *p[n]、int (*p)[n]等简单总结

我怕爱的太早我们不能终老 提交于 2020-02-01 23:41:36
关于指针定义的一些简单归纳和总结。 int *p int *p表示的是一级指针,表示p所指向的地址里面存放的是一个int类型的值。 一级指针存放变量的地址,指向的值是变量的内容。如int* p={1,2,3}, p=数组的首地址,*p=数组的第一个值; 一级指针通过形参,可以修改实参中指针所指向的地址中的值。修改不了实参中指针所指向的地址。需要借助二级指针才可以。 int **p int **p表示的是 二级指针 ,表示p所指向的地址里面存放的是一个指向int类型的指针。 二级指针 存放一级指针的地址,指向一级指针。如int *p ={1,2,3}, int **pp=&p,pp=指针p的首地址,*pp=数组的首地址,**pp=数组第一个值1。 指针数组 的数组名传递参数对应为指针的指针即 二级指针 ,二维数组的数组名传递参数对应为数组指针即指向一维数组的指针 int (*p)() 简单的理解,这就可以理解为调用函数,其中(*p)这个整体可以看作是函数名称,p代表函数的入口地址。很简单的理解吗,c语言中()就代表了函数,所以把 *p用括号括在一起变作 (*p)就代表了一个函数。i int *p() 为了便于理解,可以把这个p换成一个函数的名字 ,比如fun,那么int *fun()代表的是调用这个函数后,这个函数的返回值是一个指针。 int *p[n] int *p[n]

上传自己的视频并获得该视频的网络mp4地址方法

…衆ロ難τιáo~ 提交于 2020-02-01 13:09:12
现在需要将视频展示出来,但是展示的时候必须是网络的视频地址,对于这样的问题,属于爬虫范围,在这里为了使用,杰杰暂时不使用python书写代码了,杰杰找到一种将自己的视频上传并获得网络mp4地址的办法 通过bilibili个人动态的界面 我个人上传了一个海边的短视频,那么如何获取这个短视频的mp4网络地址呢? 1.点击F12审查元素 2.刷新界面 3.在下方space_history中发现右边的cards有三条,正好对应我的三条动态 4.打开发现如下url,复制后方的url并将转移字符'\'去除,就是我的mp4地址 5.这个地址浏览器打开,通过微信应用程序打开可直接播放,这个就实现了我的目的。 如果仅仅为了下载,可以先清空控制台,播放视频在Media中会出现几个小文件,打开这个链接就可以直接下载,但是无法直接通过这个链接在微信应用程序播放 来源: https://www.cnblogs.com/ningxinjie/p/12248104.html

springboot的一些开源项目

耗尽温柔 提交于 2020-01-31 04:55:46
原文标题:精选SpringBoot八大开源项目:支付、秒杀、全文搜索等 支付项目: 项目地址:https://gitee.com/52itstyle/spring-boot-pay 秒杀案例: 项目地址:https://gitee.com/52itstyle/spring-boot-seckill 项目三:邮件服务 简介:邮件发送服务,文本,附件,模板,队列,多线程,定时任务实现多种功能。 项目地址:https://gitee.com/52itstyle/spring-boot-mail 项目四:全文搜索服务 简介:ES全文搜索引擎,基于Elasticsearch构建网站日志处理系统,通过数据同步工具等一些列开源组件来快速构建一个日志处理系统,项目雏形初步成型中。 项目地址:https://gitee.com/52itstyle/spring-boot-elasticsearch 项目五:任务管理系统 简介:基于spring-boot+quartz的CRUD任务管理系统 。 项目地址:https://gitee.com/52itstyle/spring-boot-quartz 项目六:在线文档管理系统 简介:spring-boot-doc是一款针对IT团队开发的简单好用的文档管理系统。 项目地址:https://gitee.com/52itstyle/spring-boot-doc

(超级棒)多级指针的使用【指针的总结②】

旧巷老猫 提交于 2020-01-31 04:10:15
(超级棒)C++基础·笔记——多级指针的使用【指针的总结②】 ~QQ:3020889729 ~小蔡 一级指针的复习 声明方式 一级指针的理解 二级指针的理解 声明方式 二级指针的认识(理解) 二级指针的操作 多级指针的拓展 总结 指针的个人理解:(打个比方,去指定的位置取东西) ~QQ:3020889729 ~小蔡 一级指针的复习 声明方式 方式: 数据类型* 变量名 = 地址 ; (Example:int* p = &a;) #include "iostream" using namespace std; int main() { int a = 0;//初始化为0 int* p = &a;//指针声明,务必初始化地址 //也可以这样:int* p = NULL; p = &a; *p = 8;//修改地址上的数据 cout << "a = " << a << endl;//输出此时a的值 cout << "*p = " << *p << endl;//输出指针p的值 return 0; } 一级指针的理解 一级指针可以理解是 某一个地址的操作符 ——可以对该地址上的内容(数据)进行修改。 二级指针的理解 声明方式 方式:数据类型** 变量名 = 指针的地址/地址的地址;(Example:int* q = &a; int** p = &q; ) #include

VC++实现ARP协议

喜夏-厌秋 提交于 2020-01-31 03:57:06
地址解析协议(Address Resolution Protocol,ARP)是在仅知道主机的IP地址时确 地址解析协议定其物理地址的一种协议。因IPv4和以太网的广泛应用,其主要用作将IP地址翻译为以太网的MAC地址,但其也能在ATM( 异步传输模式)和FDDIIP(Fiber Distributed Data Interface 光纤分布式数据接口)网络中使用。从IP地址到物理地址的映射有两种方式:表格方式和非表格方式。ARP具体说来就是将网络层(IP层,也就是相当于OSI的第三层)地址解析为数据连接层(MAC层,也就是相当于OSI的第二层)的MAC地址。 1. 什么是ARP?   ARP (Address Resolution Protocol) 是个地址解析协议。最直白的说法是:在IP-以太网中,当一个上层协议要发包时,有了节点的IP地址,ARP就能提供该节点的MAC地址。   2. 为什么要有ARP?   OSI 模式把网络工作分为七层,彼此不直接打交道,只通过接口(layer interface). IP地址在第三层, MAC地址在第二层。协议在发送数据包时,得先封装第三层(IP地址),第二层(MAC地址)的报头, 但协议只知道目的节点的IP地址,不知道其MAC地址,又不能跨第二、三层,所以得用ARP的服务。   3. 什么是ARP   cache? ARP cache

TTL与ARP

谁说胖子不能爱 提交于 2020-01-31 03:39:38
**IP包头TTL字段** TTL字段指定IP包被路由器丢弃之前允许通过的最大网段数量。作用是限制IP数据包在计算机网络的存在时间 **ARP协议** 将已知IP地址解析成MAC地址 字段信息:IP地址、MAC地址、类型 MAC地址的广播地址:FF:FF:FF:FF:FF:FF IP地址的广播地址:255.255.255.255 **ARP攻击原理** PC2希望PC1无法访问互联网,需要向PC1发送虚假的ARP应答,当PC1收到虚假的ARP应答后,将会更新ARP条目,当PC1发送数据时,PC2会发送虚假的MAC地址,使其通信故障。 **ARP欺骗原理** 如果PC1想发送信息给PC2,PC3只需冒充PC2通过攻击主机进行转发,通过转发可以对信息进行控制和查看,从而得到信息。 **ARP缓存表建立** 1.A发送ARP请求报文,询问B的IP对应的MAC地址是多少,此报文为广播报文。 2.B收到A的请求后,以单播方式发送ARP应答。A学到B的MAC地址,建立B的IP-MAC ARP表,过程结束。 **ICMP协议** 通过IP数据包封装,用来发送错误和控制信息(网络层) ICMP封装:ICMP头部+ICMP数据——》IP头部+ICMP头部+ICMP数据——》帧头部+IP头部+ICMP头部+ICMP数据+帧尾部 **Ping命令参数** ping-a:显示主机名称 ping-t