32位下的内存地址分布图如下:1g为内核空间,3g为用户空间 内核空间:内核空间表示运行在处理器最高级别的超级用户模式(supervisor mode)下的代码或数据,内核空间占用从0xC0000000到0xFFFFFFFF的1GB线性地址空间,内核线性地址空间由所有进程共享,但只有运行在内核态的进 ...
分类:
系统相关 时间:
2020-06-23 09:12:53
阅读次数:
99
一. 页式内存管理介绍 80386能够将内存分为不同属性的段,并通过段描述符、段表以及段选择子等机制,通过段基址和段内偏移量计算出线性地址进行访问,这一内存管理方式被称为段式内存管理。 这里要介绍的是另一种内存管理的方式:80386在开启了分页机制后,便能够将物理内存划分为一个个大小相同且连续的物理 ...
分类:
其他好文 时间:
2020-06-19 01:15:16
阅读次数:
86
每个互联网工作者,心中都有一个大厂梦,毕竟在自己的职业生涯里,如果没有大厂的经历,总会觉得留下了遗憾。 大厂意味着什么 ? 进入大厂,意味拥有更高的薪资、优质的人脉以及令人羡慕的工作环境和福利待遇。 但是,大厂虽好,它的竞争却也非常激烈,漫长的面试流程,就已经让很多人望而却步了。 而内推,却能够让你 ...
分类:
其他好文 时间:
2020-05-22 12:44:45
阅读次数:
69
指针 一、指针的地址 1、变量的地址 计算机中,数据存储在内存中,内存可划分为若干存储单元,每个单元可以存放8位二进制数,即1个字节。内存单元采用线性地址编码,每个单元具有唯一一个地址编码。 【1】变量的地址:系统为变量分配的内存单元的地址(内存中每一个字节都有一个编号, 就是“地址”,是一个无符号 ...
分类:
编程语言 时间:
2020-04-05 13:54:50
阅读次数:
84
分析linux内存管理机制,离不了上述几个概念,在介绍上述几个概念之前,先从《深入理解linux内核》这本书中摘抄几段关于上述名词的解释: 一、《深入理解linux内核》的解释 逻辑地址(Logical Address) 包含在机器语言指令中用来指定一个操作数或一条指令的地址(有点深奥)。这种寻址方 ...
分类:
系统相关 时间:
2020-03-03 19:13:47
阅读次数:
89
蛋疼的概念,总是让人琢磨不透,每每遇到这些形似的名词,我总感觉是我小学时候近义词练习做少了。因为每次我都要花很多时间才能真正的能够说服自己的搞懂这些概念。逻辑地址:很简单,就是你源程序里使用的地址,或者源代码经过编译以后编译器将一些标号,变量转换成的地址,或者相对于当前段的偏移地址。线性地址:这个地 ...
分类:
其他好文 时间:
2020-03-01 19:41:58
阅读次数:
50
物理地址:物理地址就是内存单元的绝对地址,比如你有一个4G的内存条插在电脑上,物理地址0x0000就表示内存条的第一个存储单元,0x0010就表示内存条的第17个存储单元,不管CPU内部怎么处理地址,最终访问的都是物理地址。在CPU实模式下“段基址+段内偏移地址”就是物理地址,CPU可以使用此地址直 ...
分类:
其他好文 时间:
2020-03-01 19:38:47
阅读次数:
55
背景 : 在此文章里会从分页分段机制去解析Linux内存管理系统如何工作的,由于Linux内存管理过于复杂而本人能力有限。会尽量将自己总结归纳的部分写清晰。 从实模式到保护模式的寻址方式的不同 : 16位CPU的寻址方式 : 在 8086 CPU 中,提供了两类寄存器来进行寻址,分别为段寄存器(例如 ...
分类:
系统相关 时间:
2020-01-25 15:27:43
阅读次数:
84
段的定义 段的介绍 分段机制就是把虚拟地址空间中的虚拟内存组织成一些长度可变的称为段的内存单元。 80386虚拟地址空间中的虚拟地址(逻辑地址)由一个段部分和一个偏移部分构成。段是虚拟地址到线性地址转化的基础。每个段有三个参数定义: 多个段映射到线性地址中的范围可以部分重叠或覆盖,甚至完全重叠,如下 ...
分类:
其他好文 时间:
2019-12-25 10:20:41
阅读次数:
97
hashMap 源码 1192行。 一、HashMap概述 HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别 ...
分类:
其他好文 时间:
2019-12-13 23:53:39
阅读次数:
86