地址

程序的编译,链接,运行和地址映射

匿名 (未验证) 提交于 2019-12-03 00:30:01
每一个进程在运行的时候,系统会为其分配一个以上构造的4G的虚拟地址空间: 3G为用户空间(私有)1G为内核空间(共享) 代码段:存放程序的执行代码,大小在运行前已经确定,也包含一些只读的常数变量,例字符串常量等。 数据段:存放程序中已初始化的全局变量(静态分配内存)。 堆区:用于存放进程运行中被动态分配的内存段,大小不固定,可动态扩张或缩减。 栈区:用于存放程序临时创建的局部变量,即函数括弧"{}"中定义的变量。 .o文件符号表里的符号,还没分配地址 3.链接过程 (1)所有.o文件的段进行合并,其中包含合并符号表,进行[符号解析] 符号解析:未定义的符号,找到其定义的地方 运行时:代码段、数据段 4.IA32体系虚拟地址映射 为什么不直接分配物理内存? 如果直接分配物理内存,有可能最终分配的地址被别人占用了 因为不知道哪块物理内存空闲。 第1次页面映射一定失败(在操作系统里)-->缺页异常 缺页异常处理完成之后-->重启地址映射-->成功 文章来源: 程序的编译,链接,运行和地址映射

操作系统――虚拟内存

匿名 (未验证) 提交于 2019-12-03 00:28:02
(尚未完整,预计2018-06-18完成) 虚拟内存: 用辅助存储器(一般指磁盘)作为内存的补充。虚拟内存允许进程执行时只将部分程序放入内存,因此程序可以比物理内存大。虚拟内存的大小**受计算机寻址机制和可用的辅助存储器容量大限制,而不受内存容量的限制。 特征:①运行进程时只把现在要执行的页/段装入内存,其余页/段放在外存,需要时再利用 请求调入 页/段功能和 置换 功能将其调入内存。 ②在逻辑上扩充内存容量 ③访问速度接近于内存,没位(bit)成本接近于外存。 虚拟地址 :即 逻辑地址 ,虚拟内存中某个字节的地址,仿佛该字节在内存中(其实可能位于磁盘,但这对用户是透明的)。 虚拟地址空间 :分配给某个进程(程序)的虚拟地址范围。 实地址 :即物理地址。物理内存中某个字节的地址。 驻留集 :进程运行时装入内存的部分。 内存管理单元MMU :集成在CPU中,或作为一个协处理器。 功能:分解逻辑地址;逻辑地址到物理地址的转换;查找更新快表TLB;进程切换时清空TLB;发出缺页中断或越界中断;设置和检查页表中各个特征位等。 !#当访问一个不再内存的逻辑地址时,产生 缺页中断/缺段中断 ;OS阻塞该进程;启动磁盘I/O;装入所需的页/段后,将阻塞进程设置为就绪态。 ?#就绪挂起态和阻塞挂起态进程的换入/换出内存和虚拟存储的换入/换出内存有什么区别? 答:挂起态进程的所有内存驻留页

gitlab项目自动同步到github或者码云gitee

匿名 (未验证) 提交于 2019-12-03 00:27:02
初始条件,先自行建好gitlab的代码仓库和码云的代码仓库,ssh配好。 打开gitlab项目,在左侧菜单栏选择 Settings->Repository 选择Push to a remote repository,打开之后可以看到相关的配置信息。 勾选Remote mirror repository 填写Git repository URL:这个URL地址就是你在码云或者github上面创建的项目的ssh地址,不过需要在地址里加上你的码云或者github的账号密码。 比如: 我在码云的账号: userName 密码: password 项目地址: https://gitee.com/FutaoSmile/SpringCloud-ServiceRegisterCenter.git **那么这个地址应该相应的改成这样: https://userName:password@gitee.com/FutaoSmile/SpringCloud-ServiceRegisterCenter.git 密码和地址之间有一个 @ 符号。** 测试:提交一次push到gitlab之后,gitlab会帮我们自动push代码到我们所配置的远程仓库。 文章来源: gitlab项目自动同步到github或者码云gitee

使用 SendARP 获取 MAC 地址

匿名 (未验证) 提交于 2019-12-03 00:26:01
地址解析协议(ARP)是通过解析网路层地址来找寻数据链路层地址的一个在网络协议包中极其重要的网络传输协议。ARP 最初在 1982 年的 RFC 826 中提出并纳入互联网标准 STD 37. ARP 也可能指是在多数操作系统中管理其相关地址的一个进程。 ARP 是通过网络地址(例:IPv4)来定位 MAC 地址(也称为乙太地址)。ARP 已经在很多网路层和数据链接层之间得以实现,包括:IPv4,Chaosnet,DECnet 和 Xerox PARC Universal Packet (PUP) 使用 IEEE 802 标准,光纤分布式数据接口,X.25,帧中继和异步传输模式(ATM),IEEE 802.3 和 IEEE 802.11 标准上 IPv4 占了多数流量。 在 IPv6 中邻居发现协议(NDP)用于代替地址解析协议。 在每台安装有 TCP/IP 协议的计算机或路由器里都有一个 ARP 缓存表,表里的 IP 地址与 MAC 地址是一对应的,如下表所示: 主机名称 IP 地址 MAC 地址 A 192.168.38.10 00-AA-00-62-D2-02 B 192.168.38.11 00-BB-00-62-C2-02 C 192.168.38.12 00-CC-00-62-C2-02 D 192.168.38.13 00-DD-00-62-C2-02 E 192

微机原理-80386(3)

匿名 (未验证) 提交于 2019-12-03 00:26:01
保护模式下的内存管理: 逻辑地址:对段内存空间进行寻址的地址称为逻辑地址,也叫做虚拟地址,这是应用程序设计人员进行变成设计时用到的地址。 逻辑地址由一个16位的段选择子和32位的偏移量两部分组成。 段选择子存放在段寄存器中。 线性地址:它是沟通物理地址与逻辑地址的桥梁,32位微处理器芯片内部的分段部件将逻辑地址空间转换成32位的线性地址。 物理地址:物理地址是指内存芯片阵列中每个阵列所对应的唯一的地址,32位地址线可直接寻址4GB内存单元。 地址转换框图 采用分页管理,便于实现虚拟存储器管理,可以方便地以页为单位把内存空间映射到磁盘空间,分页还能明显提高存取数据的效率,有效利用内存碎片。 分段技术将逻辑地址转换成线性地址,当CR0的PG字段设为0时,线性地址就是物理地址,当PG为1时,分页部件将线性地址转换成物理地址。 80386采用两层表来实现分页管理。第一层被称为页目录,第二层被称为页表。 页目录表中包含1024个页目录项,每项4字节;页表中也包含1024个32位的页表项,每个页表项对应了一个4KB的连续物理地址空间。 分页机制将32位的线性地址分为3部分: (1)线性地址的高10位作为页目录的索引号,指向1024个页目录项中的某一项。 (2)线性地址的的中间10位作为页表的索引号 (3)线性地址的低12位作为页面的偏移地址,也就是物理地址的低12位 转载请标明出处: 微机原理

嵌入式

匿名 (未验证) 提交于 2019-12-03 00:23:01
nandflash启动将SDRAM中前4复制到它自己里面,然后从0地址开始执行 norflash启动与内存的访问是相同的,但是不能像内存一样写。同样从0地址开始执行 main函数并不特别,被别人调用,执行完要返回,返回到哪里,库加上自己的程序,库称之为启动文件,这些东西是操作系统执行的,如果没有操作系统,自己写启动文件,(1)软件相关初始化1.调用main函数,2.设置返回地址,3.做一些清理工作,4.设置栈,将sp指向内存的某段地址,如果不是片内的sdram,那么需要首先初始化sdram,5.硬件初始化,(2)1.关看门狗,就是一个定时器,如果3s内没有 按,就重新启动系统。.2.初始化时钟3.初始化sdram. cpu与存储管理器相连,存储管理器与外部的sdram和DM9000相连,像访问一个芯片,需要哪些信息。1.地址2.数据线3.时钟/频率4.芯片相关的东西。SDRAM,刷新周期,刷新频率,位宽,先发出行地址,再发出列地址,最先发出选择块的信号,bank多少位,行多少位,列多少位,配置好存储管理器。本类中看原理图知道位宽为32,从数据手册知道行地址是13位,列地址是9为,刷新周期是64ms/8192,一个sdram有4个bank, 文章来源: 嵌入式

MAC地址相关知识点总结

匿名 (未验证) 提交于 2019-12-03 00:22:01
(1)MAC地址是设备Layer2的唯一标识 (2)MAC地址长度为48bit,一般用点分十六进制标识,如AABB.CCDD.EEFF (3)MAC地址从左到右的第7个bit位,0---标识永久MAC地址,1---标识临时MAC地址 (4)MAC地址从左到右的第8个bit位,0---标识单播MAC地址,1---标识组播MAC地址 (5)在CISCO设备上,可使用如下命令查看MAC地址表 (6)CISCO的设备,MAC地址表每隔300s刷新一次,可通过如下命令修改MAC地址表的老化时间 (7)在根据MAC地址转发数据的时候,如果没有找到母的MAC地址,则会出现泛洪。 文章来源: MAC地址相关知识点总结

嵌入式

匿名 (未验证) 提交于 2019-12-03 00:22:01
nandflash启动将SDRAM中前4复制到它自己里面,然后从0地址开始执行 norflash启动与内存的访问是相同的,但是不能像内存一样写。同样从0地址开始执行 main函数并不特别,被别人调用,执行完要返回,返回到哪里,库加上自己的程序,库称之为启动文件,这些东西是操作系统执行的,如果没有操作系统,自己写启动文件,(1)软件相关初始化1.调用main函数,2.设置返回地址,3.做一些清理工作,4.设置栈,将sp指向内存的某段地址,如果不是片内的sdram,那么需要首先初始化sdram,5.硬件初始化,(2)1.关看门狗,就是一个定时器,如果3s内没有 按,就重新启动系统。.2.初始化时钟3.初始化sdram. cpu与存储管理器相连,存储管理器与外部的sdram和DM9000相连,像访问一个芯片,需要哪些信息。1.地址2.数据线3.时钟/频率4.芯片相关的东西。SDRAM,刷新周期,刷新频率,位宽,先发出行地址,再发出列地址,最先发出选择块的信号,bank多少位,行多少位,列多少位,配置好存储管理器。本类中看原理图知道位宽为32,从数据手册知道行地址是13位,列地址是9为,刷新周期是64ms/8192,一个sdram有4个bank, 文章来源: 嵌入式

分页分段以及段页式存储管理中逻辑地址到物理地址的转换过程解析

匿名 (未验证) 提交于 2019-12-03 00:22:01
文章开始把我喜欢的这句话送个大家:这个世界上还有什么比自己写的代码运行在十万人的电脑上更酷的事情吗,如果有那就是让这个数字再扩大十倍。 首先要知道,物理地址=块号+页内地址 所以物理地址和逻辑地址后面部分是相同的,即都为页内地址。 下面以一个例子说明如何由逻辑地址求物理地址 首先是分页存储 (1)某虚拟存储器的用户编程空间共64个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下: 由“内存为16KB”,2^4=16得知块号占4位。 即则逻辑地址0A5C(H)所对应的物理地址是265C; ( ) (PCB) TBL(Translation look-aside buffer, ) + TBL TBL TBL Hierarchical Paging( ) 分页存储有内部碎片。 接下来是分段存储segmentation 为什么要引入分段存储呢,简单地说分页管理方式是从计算机的角度考虑设计的,以提高内存利用率,提高计算机的性能,且分页通过硬件机制实现,对用户完全透明;而分段管理方式的提出则是考虑了用户和程序员,以满足方便编程,信息保护和共享,动态增长以及动态链接等多方面的要求。 段式管理方式按照用户进程的自然段划分逻辑空间。例如,用户进程由主进程,两个子进程,栈和一段数据段构成,于是便可以把这个用户进程分为五段,每段从0开始编址

VM 复制后eth0 变成eth1

匿名 (未验证) 提交于 2019-12-03 00:21:02
1. 在配置文件 /etc/udev/rules.d/70-presistent-net.rules中将表示新网卡的行注释掉,然后将表示老网卡的行中MAC地址改成新网卡的MAC地址,然后重启即可。 2. 若/etc/sysconfig/network-script/ifcfg-eth0中没有指定了MAC地址,则将此MAC地址改为新网卡的MAC地址,或者干脆删掉这一行。 文章来源: VM 复制后eth0 变成eth1