`

MMU与程序多任务运行

阅读更多
MMU即Memory Management Unit(内存管理单元)的缩写,百度搜索“MMU”您将看到对MMU的较为准确和全面的描述。那么我们的程序在多任务环境下加载运行时,MMU起到什么作用作用呢?如何理解每个程序都运行在独立的空间呢?这就是本文要解决的问题。

我们知道,MMU的主要工作就是将程序的虚拟地址(编译器和链接器计算的)转换成内存的物理地址(硬件电路决定的)。

另外我们还要知道,任意两个程序,虚拟地址都是重复的,更何况我们运行两次同一个程序的情况(我们知道,程序只是存储器中的数据而已,加载运行后我们称之为“进程”,同一个程序可以多次运行形成多个进程。另外,一个程序运行起来不一定只有一个进程)。

那么,如何区分这样重复的虚拟地址呢?见后文。

同样的虚拟地址,映射成不同的物理地址,我们将这个映射关系组织成一种数据结构,存放在MMU的重定位寄存器中,重定位寄存器(寄存器成本高啊)较少,无法存储那么多(我们运行的程序多啊,而且每个程序都有很多的段)映射关系的数据。没关系,我们在这些寄存器中安排一个(通常是最后一个)寄存器存放存储在内存中某个位置的一个页表中,这个页表的每个子页表存储了映射关系数据。内存比寄存器大多了吧,足够用了。

以下两段摘自:http://www.360doc.com/content/10/0209/11/829246_15515058.shtml

构建多任务的一种方法是创建一组独立的页表,每个映射到唯一的任务空间。为了激活某个人任务,对应这个任务的那组页表和其虚拟内存空间由MMU使用,没有激活的页表代表睡眠的任务。这种方法使所有任务都驻留在内存中,当发生上下文切换时可以立即使用。

在上下文切换时通过激活不同的页表,使得在重叠的虚拟地址执行多任务成为可能。MMU可以通过重定位任务地址而不需要移动在内存中的任务。任务的物理内存只是简单的通过激活与不激活页表来实现映射到虚拟内存。
分享到:
评论

相关推荐

    韦东山老师视频在MINI2440上运行的程序-MMU

    S3C2440是一款广泛应用的ARM9微处理器,具备MMU功能,可以支持虚拟内存管理和多任务操作系统。在MINI2440上运行程序,需要对硬件接口、中断处理、存储器配置等有深入理解。 【MMU】:内存管理单元(Memory ...

    arm mmu工作原理

    ### ARM MMU 工作原理详解 ...尤其是在处理大型程序和多任务环境时,MMU 的作用尤为显著。通过对MMU工作原理的深入理解,不仅可以帮助我们更好地优化程序设计,还能为构建高效稳定的系统提供坚实的理论基础。

    讲解MMU的原理

    随着计算机技术的发展,尤其是从单任务操作系统向多任务操作系统的转变过程中,内存管理面临着诸多挑战。早期的操作系统如DOS等,由于程序规模较小且内存资源有限,程序员往往需要手动进行内存管理,如使用覆盖块...

    mmu.rar_2440_2440 mmu_2440 MMU_MMU.C_mmu

    MMU是其内存管理的关键,它允许操作系统在物理内存和虚拟内存之间进行转换,从而实现多任务环境下的内存隔离和保护。MMU通过建立页表来实现地址映射,每个页表条目(Page Table Entry,PTE)包含有物理地址、访问...

    MMU的详细资料

    MMU的主要功能在于实现了虚拟内存机制,它使得程序可以在比实际物理内存更大的地址空间内运行。虚拟内存的实现通常依赖于两种技术:**交换(Swapping)**和**分页(Paging)**。 ##### 2.1 交换(Swapping) 交换...

    MMU.rar_MMU introduce_MMU原理_mmu

    MMU的工作原理对于理解操作系统、虚拟内存以及多任务处理至关重要。 首先,MMU的基本功能是进行地址转换。在计算机系统中,处理器使用的逻辑地址与实际内存芯片上的物理地址通常是不同的。MMU通过翻译逻辑地址到...

    MMU初始化代码分析

    - 设置进程ID:`MMU_SetProcessId`函数设置了当前进程的ID,这是多任务操作系统中MMU的重要功能之一。 - 启用对齐错误检查:`MMU_EnableAlignFault`函数确保数据访问时的对齐性,防止因不正确对齐导致的硬件故障。 -...

    mmu.zip_mmu

    这在多任务环境下至关重要,因为每个进程都拥有自己的虚拟地址空间,而MMU使得这些空间可以并行存在且互不干扰。 2. **内存保护(Memory Protection)**:MMU通过设置页表中的权限位来实现对内存区域的访问控制,...

    ARM MMU详解

    ### ARM MMU详解 #### 虚拟存储器与MMU的重要性 在早期的计算机系统中,由于内存容量较小,程序通常直接加载到物理...对于ARM架构等现代处理器而言,MMU的功能尤其关键,它为复杂的多任务操作系统提供了基础支持。

    S3C2440_MMU.rar_2440MMU_mmu

    MMU是处理器和物理内存之间的桥梁,它的主要任务是实现虚拟地址到物理地址的转换,为多任务操作系统提供内存隔离和保护,确保不同进程之间的数据安全。在S3C2440中,MMU还支持TLB(Translation Lookaside Buffer)...

    S3C2440存储管理器MMU实现

    3. **多任务支持**:在多任务环境下,MMU通过页表维护各个任务的独立地址空间,确保任务间内存隔离,提高系统的稳定性和可靠性。 4. **缓存一致性**:在具有缓存的系统中,MMU可以处理缓存与主内存之间的数据同步,...

    s3c2410_mmu详解

    3. **内存保护**:防止一个程序修改另一个程序的数据,保证多任务环境下的数据完整性。 4. **分页机制**:通过将虚拟地址空间划分为固定大小的页面,并将物理内存划分为相同大小的页框,来实现虚拟地址到物理地址的...

    学习 ARM 系列 -- FS2410 开发板上启用 MMU 实现虚拟内存管理.doc

    这对于构建高级的多任务操作系统至关重要,因为它允许系统在同一时刻运行多个独立的进程,每个进程都有自己独立的内存空间,互不影响。 三、代码分析 在提供的代码中,`start.S`是程序的入口点,它负责初始化系统的...

    恕我直言不懂MMU你依然只停留在单片机与无OS的时代

    4. **多任务支持**:MMU使得多个程序可以在同一台计算机上并发运行,每个程序都拥有自己的虚拟地址空间。 #### 五、总结 理解MMU的工作原理对于深入掌握现代操作系统的内核机制至关重要。通过MMU,我们可以实现...

    MMU.rar_mmu_software M

    在多任务操作系统中,MMU通过创建页表来实现虚拟地址空间,使得每个进程都有独立的地址空间,从而提高系统的安全性与效率。 2. **S3C2410处理器**: S3C2410是Samsung公司设计的一款高性能、低功耗的32位微处理器...

    mmu.rar_jz2440mmu

    MMU是处理器和内存之间的桥梁,它通过建立页表来实现虚拟地址到物理地址的转换,使得程序可以独立于物理内存布局运行。在JZ2440中,这一转换过程由硬件自动完成,大大提高了系统的效率。 接着,我们来解析JZ2440 ...

    MMU的工作原理,介绍MMU

    MMU作为现代操作系统中不可或缺的一部分,在多任务环境下实现了内存的高效管理和安全隔离。通过对虚拟地址到物理地址的转换、访问权限控制、高速缓存管理等功能的支持,MMU不仅提升了系统的整体性能,还保障了软件的...

    axd_debug_mmu.rar_mmu deb

    在多任务操作系统中,每个进程都有自己独立的虚拟地址空间,MMU确保进程只能访问其被分配到的内存区域,防止数据泄露和意外修改。 AXD调试器是针对嵌入式系统的一种强大的调试工具,它提供了一套完整的调试功能,...

    s3c2410_MMU.rar_2410_2410 pdf_2410 mmu_mmu

    在S3C2410中,MMU还负责实现页表管理和访问权限控制,为多任务环境提供了必要的隔离。 2. S3C2410 MMU的架构 S3C2410的MMU采用了两级页表结构,每个页表项包含有物理地址、访问权限、缓存控制等信息。这种设计允许...

Global site tag (gtag.js) - Google Analytics