内存管理详解
来源:互联网 发布:无限法则 知乎 编辑:程序博客网 时间:2024/06/10 18:42
页
内存管理是运行在计算机上的应用程序通过软硬件协作来访问内存的一种方法。
内存管理子系统的职责为:进程请求内存时分配可用内存,进程释放内存后回收内存,以及跟踪系统中内存的使用状况。
操作系统的生命周期分为两个阶段:正常执行阶段和自举阶段;自举阶段使用临时内存,而正常运行阶段使用的内存有两种情况:一种是有一部分固定的内存分配给内核代码和数据,另一种是动态内存请求分配内存。
虚拟内存依靠透明的使用磁盘空间,得以使程序运行起来好像他们使用比系统物理内存更多的内存空间。
在使用虚拟内存时,程序数据被分割成基本单位,这些单元可以在磁盘与内存键来回移动。这些数据单位称为页
当程序从内存中取数据时,会从虚拟地址空间中之处需要访问的内存位置,每个进程都有自己独立的虚拟地址范围,这样做的好处防止非法读取或写覆盖其他进程的数据
内存管理器在OS中负责维护虚拟地址和物理地址之间的关系,并且实现分页机制。页是基本的内存单元,MMU是完成实际的地址转换工作的硬件工作。
linux页的数据结构:
struct page{
unsigned long flags;
atomic_t count;
struct list_head list;
struct address_space * mapping;
unsigned long index;
struct list_head lru;
union {
struct pte_chain *chain;
pte_add_r direct;
}pte;
void *vitrual;
.....
各个成员详解:
count:相当于计数器,统计一个页使用或引用的次数,数值为0表示页是可重用的;证书表示访问该页数据的进程数
list:是list_head结构,结构中的next和prev指针指向双向链表中的对应元素
mapping: 指向每个页关联的address_space结构的指针
lru:存放的next和prev指针指向最近最少使用链表中的相应元素,这些链表用于页面护手处理
virtual:是一个指向页所对应虚拟地址的指针
内存管理区
unsigned int compact_defer_shift;
int compact_order_failed;
unsigned long wait_table_bits;...
页面
请求页面的函数
伙伴系统
进程映像的分布
页表
- C++内存管理详解
- C++内存管理详解
- C++内存管理详解
- C++内存管理详解
- C++内存管理详解
- C++内存管理详解
- C++内存管理详解
- C++内存管理详解
- C++内存管理详解
- C++内存管理详解
- C++内存管理详解
- C++内存管理详解
- C++内存管理详解
- c++内存管理详解
- C++内存管理详解
- C++内存管理详解
- C++内存管理详解
- C++内存管理详解
- C++中高并发使用线程不安全类库的一种方法
- rownum等的介绍
- linux下mount命令的用法
- gcc的小技巧
- glPushMatrix 和glPopMatrix图解 ----求别笑
- 内存管理详解
- jQuery选择器之过滤选择器之属性过滤选择器
- SQL Server
- 图像处理笔记(6)
- hdu 2159
- (转)介绍两个CRC源码生成工具,可生成Verilog和VHDL
- 系统编程人员要学会使用管道编程
- 简单截图功能实现
- JAX-WS