Linux 内存管理 线性空间与物理内存
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
相关文档:
一. yum是什么
yum = Yellow dog Updater, Modified
主要功能是更方便的添加/删除/更新RPM包.
它能自动解决包的倚赖性问题.
它能便于管理大量系统的更新问题
注:为什么要使用yum而不用apt,最简单的原因,Fedora自带
二. ......
1. Sed简介
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern
space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样
1. Sed简介
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当 ......
(1)基本概念
从本质上讲,文件系统是特殊的数据分层存储结构,它包含文件、目录和相关的控制信息。为了描述这结构,Linux引入一些基本概念:
A,文件:一组在逻辑上具有完整意义的信息项的系列。另外,在Linux中,除了普通文件,其他诸如目录、设备、套接字等也以文件被对待。总之 ......
以下步骤均为root登录状态下进行执行。
一、卸载JDK
Linux会自带JDK,如果不使用自带版本的话需要卸载。
1、卸载系统自带的jdk版本
查看自带的jdk
#rpm -qa | grep gcj
看到如下信息:
libgcj-4.1.2-44.el5
java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
使用rpm -e -nodeps 命令删除上面查找的内容:
#rpm -e -nodep ......