Part 3 Kernel Address Space JOS把32位线性地址虚拟空间划分成两个部分。其中用户环境(进程运行环境)通常占据低地址的那部分,叫用户地址空间。而操作系统内核总是占据高地址的部分,叫内核地址空间。这两个部分的分界线是定义在memlayout.h文件中的一个宏 ULIM。JO ...
分类:
其他好文 时间:
2016-03-31 07:04:44
阅读次数:
394
内核除了管理本身的内存外,还必须管理进程的地址空间——即系统中每个用户空间进程所看到的内存。Linux操作系统采用虚拟内存技术,因此,系统中的所有进程之间以虚拟方式共享内存。即使单独的一个进程,它拥有的地址空间也可以远远大于系统的物理内存。 进程地址空间由每个进程中的线性地址区组成,更重要的特点是内 ...
分类:
系统相关 时间:
2016-03-30 14:53:04
阅读次数:
167
MMU由一个或一组芯片组成,其功能是把逻辑地址映射为物理地址,进行地址转换(MMU是CPU的一部分)
机器指令仍然用逻辑地址指定一个操作数的地址或一条指令的地址
MMU包含两个部件:分段部件和分页部件,分段机制将逻辑地址转换为线性地址,分页机制把线性地址转换为物理地址。
系统的运行速度一般是被CPU从内存中取得指令和数据速率限制的。
TLB(translation lookside buf...
分类:
系统相关 时间:
2016-03-29 12:58:33
阅读次数:
332
前两篇已经说过了多任务的切换原理,留有一个问题,就是linux跳过了分段,逻辑地址总是等于线性地址那么是如何对进程进行隔离的?
分类:
系统相关 时间:
2016-03-15 18:44:31
阅读次数:
247
一、内核空间和用户空间Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0~4G。Linux内核将这4G字节的空间分为两部分。将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为“内核空间”。而将较低的3G字节(从虚拟地..
分类:
其他好文 时间:
2016-01-26 18:47:22
阅读次数:
156
fork进程 A 有 变量 m,地址为 12345进程 B 为 A 的子进程,此时 B 会有一份 和 A 一样的 内存空间(逻辑),同样 会有 m 变量,它的 地址 也是 12345当修改 A 中的 m 时,不影响 B 中的 m,因为 虽然它们的线性地址 相同, 但是 对应的 物理地址 却 不相同。...
分类:
系统相关 时间:
2016-01-19 23:27:24
阅读次数:
191
Linux系统中的物理存储空间和虚拟存储空间的地址范围分别都是从0x00000000到0xFFFFFFFF,共4GB,但物理存储空间与虚拟存储空间布局完全不同。Linux运行在虚拟存储空间,并负责把系统中实际存在的远小于4GB的物理内存根据不同需求映射到整个4GB的虚拟存储空间中。Linux主要工作...
分类:
系统相关 时间:
2016-01-02 20:25:50
阅读次数:
278
我会尽力以最简洁清晰的思路来写这篇文章。所谓内存寻址也就是从写在指令里的地址,转化为实际物理地址的过程。因为操作系统要兼顾许多东西,所以也就变得复杂。逻辑地址 →线性地址→物理地址逻辑地址 = 段 + 偏移量因为:最开始cpu中的alu宽度只有16位,但地址总线宽度有20位。所以设置四个段寄存器:c...
分类:
系统相关 时间:
2015-12-15 21:14:17
阅读次数:
267
一。内存管理子系统 1 . 内存管理模块 功能: 虚拟地址到物理地址的映射 32位系统访问的地址一共4G: 0-3G : 应用程序 3G+896M :直接映射 , Vmollat区,永久内存映射,固定映射的线性地址 2. 地址映射管理 (1). 虚拟地址...
分类:
系统相关 时间:
2015-12-05 12:35:44
阅读次数:
204
虚拟内存模型Linux 内核本身并不运行在虚拟空间中,其使用的是物理寻址模式。 物理内存被分割为界面,一个内存页面的大小由PAGE_SIZE宏决定。 虚拟地址空间的方式使程序员可以将巨大的结构用于连续的地址,而不必考虑物理内存上的限制。线性地址到物理地址线性地址需要由处理器或者一个单独的MMU转换为...
分类:
系统相关 时间:
2015-11-22 23:08:40
阅读次数:
315