`
cocos
  • 浏览: 400482 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

linux 内存管理

阅读更多



 1、 进程的 4G 线性空间被划分成三个部分:进程空间( 0-3G )、内核直接映射空间( 3G – high_memory )、内核动态映射空间( VMALLOC_START - VMALLOC_END

2、 三个空间使用同一张页目录表,通过 CR3 可找到此页目录表。但不同的空间在页目录表中页对应不同的项,因此互相不冲突

3、 内核初始化以后,根据实际物理内存的大小,计算出 high_memory VMALLOC_START VMALLOC_END 的值。并为“内核直接映射”空间建立好映射关系,所有的物理内存都可以通过此空间进行访问。

4、 “进程空间”和“内核动态映射空间”的映射关系是动态建立的(通过缺页异常)

假设在有三个线性地址 addr1, addr2, addr3 ,分别属于三个线性空间,但是最终都映射到物理页面 1

1、 三个地址对应不同的页表和页表项

2、 但是页表项的高 20bit 肯定是 1 ,表示物理页面的索引号是 1

3、 同时,根据高 20 bit ,可以从 mem_map[] 中找到对应的 struct page 结构, struct page 用于管理实际的物理页面(红线)

4、 从线性地址,根据页目录表,页表,可以找到物理地址

5、 Struct page 和物理地址之间很容易互相转换

6、 从物理地址,可以很容易的反推出在内核直接映射空间的线性地址(蓝线)。要想得到在进程空间或者内核动态映射空间的对应的线性地址,则需要遍历相应的“虚存区间”链表。

关于页目录表:

1、 每个进程有一个属于自己的页目录表,可通过 CR3 寄存器找到

2、 而内核也有一个独立于其它进程的页目录表,保存在 swapper_pg_dir[] 数组中

3、 当进程切换的时候,只需要将新进程的页目录把地址加载到 CR3 寄存器中即可

4、 创建一个新进程的时候,需要为它分配一个 page,作为页目录表,并将 swapper_pg_dir[] 的高 256 项拷贝过来,低 768 项则清 0

  • 大小: 32 KB
分享到:
评论

相关推荐

    linux内存管理实验报告

    Linux内存管理是操作系统的核心组成部分,它负责有效地分配和回收内存资源,确保系统高效稳定地运行。在本实验中,我们主要探讨了Linux虚拟内存管理的原理、动态内存操作函数的使用,以及如何检测主存使用情况。 ...

    linux内存管理源代码导读

    Linux 内存管理源代码导读 Linux 内存管理是操作系统中最重要的组件之一,它负责管理计算机的内存资源,确保系统的正确运行。在 Linux 操作系统中,内存管理是通过页框管理、Slab 算法和动态存储器管理来实现的。 ...

    Linux内存管理详解.ppt

    Linux内存管理是操作系统的核心组成部分,尤其对于服务器和嵌入式设备等依赖稳定高效内存操作的环境至关重要。在Linux内核中,内存管理涉及到多个层面,包括分配、释放、碎片控制以及高速缓存优化等。 首先,Linux...

    Linux内存管理笔记

    Linux内存管理笔记详细介绍了Linux操作系统内核中内存管理机制的关键知识点,下面将依次对这些知识点进行详细说明: 存储器的层次结构:计算机系统采用分层的存储子系统以在存储容量、访问速度、成本效益之间取得...

    linux内存管理总结

    以下是Linux内存管理的一些关键知识点: 1. **内存管理工具**: - CodeViz:这是一个用于生成代码调用关系图的工具,可以帮助开发者理解代码间的调用结构,虽然在描述中没有详细展开,但它是分析Linux内核源码的...

    linux内存管理结构图

    Linux内存管理是操作系统的核心部分,它负责有效地分配和回收系统中的物理和虚拟内存。在Linux中,内存被划分为多个区域(Zone)和节点(Node),以优化内存的使用和性能。以下是对这些概念的详细解释: 1. **节点...

    Linux内存管理编程技术.doc

    Linux内存管理是操作系统的核心组成部分,它负责有效地分配、管理和回收内存资源。在Linux环境中,程序员通常通过系统调用和库函数来与内存管理接口交互。本实验主要关注两个方面:一是使用malloc()函数进行内存分配...

    Linux内存管理介绍

    ### Linux内存管理介绍 #### 虚拟内存与Linux 在深入探讨Linux内存管理之前,我们先了解一下虚拟内存的基本概念及其在Linux系统中的应用。虚拟内存是一种计算机内存管理技术,它通过将进程的虚拟地址空间映射到...

    一种Linux内存管理机制.pdf

    Linux内存管理机制包括多种层次和策略,旨在高效地分配和回收内存,避免内存耗尽和系统崩溃。本文将深入探讨Linux内存管理模型、伙伴系统、Slab分配流程以及内存回收策略。 首先,Linux内存管理模型将物理内存划分...

    linux内存管理

    ### Linux内存管理详解 #### 一、Intel x86保护模式下的分段与分页机制 在探讨Linux如何实现内存管理之前,我们首先需要理解Intel x86架构下的内存管理基础——分段与分页机制。 **分段机制**: - **段选择器**:...

    深入理解Linux内存管理

    ### 深入理解Linux内存管理 #### 一、引言与概述 本文档旨在深入探讨Linux 2.4版本中的内存管理系统。作者Mel Gorman在2004年撰写了这一篇详尽的文章,其内容涵盖了从启动时的内存分配到运行时内存管理的所有方面...

    Linux内存管理实验.pdf

    Linux内存管理实验是关于Linux操作系统内存管理机制的学习和实践。本实验中会涉及到诸多内存管理的关键概念和工具,如free、vmstat、readelf、objdump等。接下来将详细解释上述内容中涉及的关键知识点。 首先,free...

    linux内存管理工具

    linux内存管理工具

    Linux内存管理 vs. Windows 2000内存管理

    同时,Linux内存管理器提供不同类型的内存区域(如BSS、堆、栈等)以满足不同需求,并且有 slab 分配器优化小对象的分配和回收。 - **Windows 2000**:Windows 2000使用分代垃圾收集(Generational Garbage ...

    深入理解LINUX内存管理学习笔记

    我不可能完全理解LINUX内存管理的精髓,肯定有很多地方理解错误。希望大 家能够指正,以便提高,谢谢。 学习方法: 可能您第一次阅读的时候很多地方都不理解,不用担心。那您可能需要阅读一些 文件系统的知识。 或者...

    linux内存管理-物理内存管理.pdf

    整个内存管理系统可以分为2部分来看待: 第一部分是对物理内存的管理, 第二部分是对虚拟内存的管理. 物理内存管理的对象是板载的物理内存(DDRAM), 它把物理内存按页划分, 并把这些页放到一个池子里面. 物理内存管理...

    Linux内存管理编程

    Linux内存管理编程是操作系统核心部分的关键技术之一,它涉及到如何高效地分配、使用和回收内存资源。本实验旨在帮助你深入理解Linux环境下的内存管理机制,主要包括内存映射(mapping)和解除映射(unmapping),...

    Linux 内存管理详细介绍.docx

    "Linux 内存管理详细介绍" 本文将详细介绍 Linux 内存管理的概念、机制、重要性和组成部分,旨在帮助读者深入了解 Linux 内存管理的原理和实践。 一、Linux 内存管理概述 Linux 内存管理是指对系统内存的分配、...

    《深入理解LINUX内存管理》学习笔记c.PDF

    《深入理解LINUX内存管理》学习笔记c.PDF

Global site tag (gtag.js) - Google Analytics