Linux的内存管理主要分为两部分:物理地址到虚拟地址的映射,内核内存分配管理(主要基于slab)。物理地址到虚拟地址之间的映射1、概念
物理地址(physical address)
用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相相应。——这个概念应该是这几个概念中最好理解的一个,可.....
分类:
系统相关 时间:
2014-05-28 02:42:53
阅读次数:
460
进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。多进程/多线程是Windows操作系统的一个基本特征。Microsoft
Win32应用编程接口(Application Programming Interface, API)....
当使用80x86微处理器时,我们必须区分三种地址:1.逻辑地址(logical
address) 包含在机器语言指令中用来指定一个操作数或者一条指令的地址。由一个段(segment)和偏移量(offset)组成。2.线性地址(linear
addres,也称虚拟地址 virtual address....
分类:
其他好文 时间:
2014-05-23 23:58:31
阅读次数:
405
TLS(Thread Local Storage) 线程局部存储
所有的线程都共享着进程的虚拟地址~ 局部变量为每个线程所独立共享的,静态变量和全局变量是进程中所有线程一起共享的~ TLS可以为线程提供一个唯一的数据用一个全局的索引~每个线程 有自己的副本~各个线程互不影响~其实所保存的数据就是线程关联的~
先看个图:
如图可见每个线程有自己独立的TLS表格,相当于一个数组...
分类:
编程语言 时间:
2014-05-21 16:45:55
阅读次数:
339
[地址映射](图:左中)linux内核使用页式内存管理,应用程序给出的内存地址是虚拟地址,它需要经过若干级页表一级一级的变换,才变成真正的物理地址。想一下,地址映射还是一件很恐怖的事情。当访问一个由虚拟地址表示的内存空间时,需要先经过若干次的内存访问,得到每一级页表中用于转换的页表项(页表是存放在内...
分类:
系统相关 时间:
2014-05-17 23:37:26
阅读次数:
476
内存地址三种内存地址:1)逻辑地址(机器指令中操作数或指令的地址) 分段单元
2)线性地址(虚拟地址)分页单元 3)物理地址(用于内存芯片级内存单元寻址多CPU时,共享同一内存,RAM芯片由独立的CPU并发访问;
由内存仲裁器保证RAM的读写的串行执行 Linux中的分段80X86才使用分段(把程序...
分类:
其他好文 时间:
2014-05-15 11:58:59
阅读次数:
300
fork.c 代码分析笔记
verifiy_area
long last_pid=0; //全局变量,用来记录目前最大的pid数值
void verify_area(void * addr,int size) // addr 是虚拟地址 ,size是需要写入的字节大小
{
unsigned long start;
start = (unsigned lo...
分类:
系统相关 时间:
2014-05-08 17:15:39
阅读次数:
485
Linux中的每个进程都有自己的虚拟地址空间。操作系统的一个最重要的基本管理目的就是避免进程之间的相互影响。下面将介绍虚拟地址空间。
1.虚拟地址空间的优势:
通过虚拟地址访问内存有以下优势:
程序可以使用一系列相邻的虚拟地址来访问物理内存中不相邻的大内存缓冲区。
程序可以使用一系列虚拟地址来访问大于可用物理内存的内存缓冲区。当物理内存的供应量变小时,内存管理器...
分类:
其他好文 时间:
2014-05-04 08:53:13
阅读次数:
418