24
项项 6 项项项项项 :- PDA 项项项项项 1 项项项项项项项项项 Windows CE5.0 的的的的的 Windows CE5.0 的的的的的 的的的的的的的的

项目 6 :内存分配- PDA 的内存管理 ( 1 )

  • Upload
    kesler

  • View
    120

  • Download
    14

Embed Size (px)

DESCRIPTION

项目 6 :内存分配- PDA 的内存管理 ( 1 ). 本节课程主要知识点 Windows CE5.0 的内存管理 Windows CE5.0 的内存结构 进程地址空间结构. 重点和难点. 重点 内存管理的基本概念 难点 虚拟内存的使用. Windows CE5.0 的内存管理. 内存管理. 内存管理是操作系统中最重要的功能之一,尤其是在嵌入式系统中更为重要。 内存管理的目的是为了充分利用内存,尽可能方便用户使用内存。 解决程序空间比实际内存空间大的问题。. Windows CE5.0 的内存管理. - PowerPoint PPT Presentation

Citation preview

Page 1: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

项目 6:内存分配- PDA的内存管理 ( 1 )本节课程主要知识点 Windows CE5.0 的内存管理 Windows CE5.0 的内存结构 进程地址空间结构

Page 2: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

重点和难点重点 内存管理的基本概念

难点 虚拟内存的使用

Page 3: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

Windows CE5.0的内存管理

Page 4: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

内存管理 内存管理是操作系统中最重要的功能之

一,尤其是在嵌入式系统中更为重要。 内存管理的目的是为了充分利用内存,

尽可能方便用户使用内存。 解决程序空间比实际内存空间大的问题。

Page 5: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

Windows CE5.0 的内存管理 Windows CE5.0 内存管理是在 Windows

XP 内存管理的基础上优化而成的。 内存管理采用虚拟内存方式来管理内存

的使用。

Page 6: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

物理内存 Windows CE5.0 最大支持 512MB 的物理

内存。 物理内存包括 RAM 、 ROM 和 Flash 存

储器。 操作系统的映像和相关文件一般存储在 F

lash 中。

Page 7: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

虚拟内存 Windows CE5.0 支持 4GB 的虚拟内存。 管理虚拟内存的硬件是内存管理单元 M

MU ,负责把虚拟地址映射到内存的物理地址。

整个 4GB 虚拟地址空间划分为两部分,地址 0x8000 0000 以上的 2G 空间为内核使用部分, 0x8000 0000 以下的 2G 空间为应用程序使用部分。

Page 8: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

内核空间与用户空间 内核空间 ( 地址 0x8000 0000 以上 )

运行于核心态的进程使用静态映射物理地址

用户空间 ( 地址 0x8000 0000 以下 )划分为 64 个 Slots ,每一个 Slot 有 32

MB大多数情况下,动态映射物理地址

Page 9: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

物理内存映射虚拟内存2 G

BUser

512 MB

Uncached

512 MB

Cached

32 MB Flash

Physical Memory Virtual Memory

04000000

82000000

8000 0000

A000 0000

C000 0000

00000000

64 MB RAM

0000 0000

64 MB RAM

32 MB Flash

64 MB RAM

FFFF FFFF

AddressTranslation

32 MB Flash

Kernel Space

UserSpace

Page 10: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

Windows CE5.0的内存结构

Page 11: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

Windows CE5.0 的内存结构

2 GB2 GB

UserUserSpaceSpace

Slot 97: NK.EXESlot 97: NK.EXE

ReservedReserved

Statically Mapped Statically Mapped Virtual Addresses: Virtual Addresses:

Un-CachedUn-Cached

Statically Mapped Statically Mapped Virtual Addresses: Virtual Addresses:

CachedCached Slot 0 – Current ProcessSlot 0 – Current Process

Slot 1 – XIP DLL codeSlot 1 – XIP DLL code

Slots 2-32 - ProcessesSlots 2-32 - Processes

Slots 33-63Slots 33-63

Object Store and Object Store and Memory-Mapped FilesMemory-Mapped Files

FFFF FFFFFFFF FFFF

E000 0000E000 0000

C400 0000C400 0000

C200 0000C200 0000

C000 0000C000 0000

A000 0000A000 0000

8000 00008000 0000

7FFF FFFF7FFF FFFF

4200 00004200 0000

0400 00000400 0000

0200 00000200 0000

0000 00000000 0000

Total 4 GB Virtual SpaceTotal 4 GB Virtual Space

2 GB2 GB

Kernel Kernel SpaceSpace

Kernel SpaceKernel Space User SpaceUser Space

ReservedReserved

Kernel Addresses: Kernel Addresses: KPAGE, Trap Area, KPAGE, Trap Area,

OthersOthers

Page 12: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

地址范围地址范围 用途用途

0x00000000-0x41FFFFFF0x00000000-0x41FFFFFF3333 个槽,每个槽个槽,每个槽 32MB32MB ,,每个进程占用一个槽每个进程占用一个槽

0x42000000-0x7FFFFFFF0x42000000-0x7FFFFFFF 共享区域,应用程序创建共享区域,应用程序创建堆、内存映射文件等堆、内存映射文件等

0x8000000-0x9FFFFFFF0x8000000-0x9FFFFFFF 物理地址映射空间,有缓冲物理地址映射空间,有缓冲

0xA000000-0xBFFFFFFF0xA000000-0xBFFFFFFF 物理地址映射空间,无缓冲物理地址映射空间,无缓冲

0xC000000-0xC1FFFFFF0xC000000-0xC1FFFFFF 系统保留系统保留0xC200000-0xC3FFFFFF0xC200000-0xC3FFFFFF NK.EXENK.EXE 占用占用0xC400000-0xDFFFFFFF0xC400000-0xDFFFFFFF 用户定义静态虚拟地址空间用户定义静态虚拟地址空间

0xE000000-0xFFFFFFFF0xE000000-0xFFFFFFFF 内核使用的虚拟地址内核使用的虚拟地址

内核与用户空间的地址分配

Page 13: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

Active ProcessActive ProcessActive ProcessActive ProcessActive ProcessActive ProcessActive ProcessActive ProcessActive ProcessActive Process

Windows XP 内存结构

System ReservedSystem Reserved(kernel mode space)(kernel mode space)

0000 0000

8000 0000

FFFF FFFF

ApplicationApplicationSpaceSpace

Page 14: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

Windows CE 内存结构

System ReservedSystem Reserved(kernel mode space)(kernel mode space)

0000 0000

0400 0000

4200 0000

8000 0000

FFFF FFFF

Active ProcessActive ProcessActive ProcessActive ProcessActive ProcessActive ProcessActive ProcessActive ProcessActive ProcessActive ProcessActive ProcessApplication Space

ReservedReserved

Large Memory AreaLarge Memory Area(memory mapped files)(memory mapped files)

Application SpaceApplication Space

Page 15: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

0000 00000400 0000

4200 0000

8000 0000

Large Memory Area(memory mapped files)

虚拟内存中的 Slots

Application Slots

(Slots 2-32)

Current Application(Slots 0-1)

2 Gigabytes2 Gigabytes

Divided into 64 32 MByDivided into 64 32 MByte Slotste Slots

31 slots for LMA31 slots for LMA

31 slots for applications31 slots for applications

2 slots for current applic2 slots for current applicationation

Page 16: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

Slot

当一个应用程序启动时,内核为这个程序选择一个空闲的槽( Slot ),并且加载所有的代码、资源,并分配堆栈,加载 DLL 等。

当这个进程得到 CPU 使用权时,它的整个地址空间被内核映射到 Slot 0 ,也就是当前进程使用的地址空间,然后开始运行。

Page 17: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

Slot 0

每个进程在执行前都要映射到 Slot 0 。 由于进程使用的所有 DLL 可能来自不同

的 Slot ,为避免所使用的 DLL 在映射到Slot 0 中出现地址空间冲突的现象,内核的加载器在加载 DLL 时会查找所有槽中加载的 DLL 的地址,保证在映射到 Slot 0 时不会发生地址冲突现象。

Page 18: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

Slot 2 – Slot 8

Slot2 :通常被 Filesys.exe 占用 Slot3 :通常被 shell.exe 占用 Slot4 :通常被 device.exe 占用 Slot5 :通常被 gwes.exe 占用 Slot6 :通常被 ceemulsrv.exe 占用 Slot7 :通常被 explorer.exe 占用 Slot8 :通常被 services.exe 占用

Page 19: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

Slot 中的内存分配 进程最低部的 64KB 作为保留区域。 代码段从 0x0001 0000 开始加载,内核为

代码段分配足够的虚拟地址空间。 为只读数据和可读 / 可写数据分配空间。 为资源数据分配空间。 为默认堆和栈分配空间。

Page 20: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

Slot 中的 DLL 加载 非 XIP DLL 从进程最高端地址向下开始加

载。 非 XIP DLL 的加载按如下规则:内核先检

查要加载的 DLL 是否已经被其它进程加载,如果加载过,就做一个地址的重定位。避免系统内多次加载相同 DLL 。如果没有加载过,就按照从槽的高地址到槽的低地址的顺序查找空闲的地址空间。然后分配足够的地址空间用于加载 DLL 。

Page 21: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

进程地址空间结构

Page 22: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

进程地址空间结构 Windows CE5.0 同以前版本的 Windows

CE 操作系统在进程地址空间上有所不同。 以前的 Windows CE 把 XIP DLL 也加载

到进程的 32MB 地址空间中。 Windows CE5.0 把 XIP DLL 单独加载到

Slot 1 中,这样对于每个进程来说,它总的地址空间就大了一倍,达到 64MB 。

Page 23: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

进程的地址空间

Slot 30

Slot 31

Slot 32

. . .

01FF FFFF

0001 0000

0000 0000

32 MB Process Space

Current Process

XIP ROM DLLs

nk.exe

filesys.exe

shell.exe

device.exe

gwes.exe

C400 0000

C200 0000

Free Virtual Space

Slot 63

. . .

Resource DLLs

Slot 2

Slot 3

Slot 4

Slot 5

Slot 1

Slot 0

0A00 0000

3E00 0000

3C00 0000

4000 0000

4200 0000

0000 0000

0400 0000

0200 0000

0600 0000

0800 0000

0C00 0000

. . .Slot 97

8000 0000

7E00 0000

Page 24: 项目 6 :内存分配- PDA 的内存管理  ( 1 )

不同 CPU 的内存结构 不同的 CPU 内存管理方法也不同。 对于 MIPS 和 SHX 系列 CPU 来说,物理

地址映射是由 CPU 完成的, Windows CE 内核可以直接访问 512MB 的物理内存。

对于 x86 系列和 ARM 系列的 CPU 来说,在内核启动过程中它会将现有物理内存地址全部映射到 0x8000 0000 以上的虚拟地址空间中供内核以后使用。