MMU(memory management unit)主要功能介绍

MMU内存管理单元相关知识点总结 1.MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。   2.虚拟内存由来:许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规... 阅读详情

MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。

  一、MMU的历史

  许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由OS完成的,但是必须先由程序员把程序先进行分割,这是一个费时费力的工作,而且相当枯燥。人们必须找到更好的办法从根本上解决这个问题。不久人们找到了一个办法,这就是虚拟存储器(virtual memory).虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。比如对一个16MB的程序和一个内存只有4MB的机器,操作系统通过选择,可以决定各个时刻将哪4M的内容保留在内存中,并在需要时在内存和磁盘间交换程序片段,这样就可以把这个16M的程序运行在一个只具有4M内存机器上了。而这个16M的程序在运行前不必由程序员进行分割。

  二、MMU的相关概念——地址范围、虚拟地址映射为物理地址 以及 分页机制

  任何时候,计算机上都存在一个程序能够产生的地址集合,我们称之为地址范围。这个范围的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是0~0xFFFFFFFF (4G),而对于一个64位的CPU,它的地址范围为0~0xFFFFFFFFFFFFFFFF (64T).这个范围就是我们的程序能够产生的地址范围,我们把这个地址范围称为虚拟地址空间,该空间中的某一个地址我们称之为虚拟地址。与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地址,大多数时候我们的系统所具备的物理地址空间只是虚拟地址空间的一个子集。这里举一个最简单的例子直观地说明这两者,对于一台内存为256M的32bit x86主机来说,它的虚拟地址空间范围是0~0xFFFFFFFF(4G),而物理地址空间范围是0x000000000~0x0FFFFFFF(256M)。

  在没有使用虚拟存储器的机器上,虚拟地址被直接送到内存总线上,使具有相同地址的物理存储器被读写;而在使用了虚拟存储器的情况下,虚拟地址不是被直接送到内存地址总线上,而是送到存储器管理单元MMU,把虚拟地址映射为物理地址。

  大多数使用虚拟存储器的系统都使用一种称为分页(paging)机制。虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被进行划分,单位是页桢(frame).页和页桢的大小必须相同。在这个例子中我们有一台可以生成32位地址的机器,它的虚拟地址范围从0~0xFFFFFFFF(4G),而这台机器只有256M的物理地址,因此他可以运行4G的程序,但该程序不能一次性调入内存运行。这台机器必须有一个达到可以存放4G程序的外部存储器(例如磁盘或是FLASH),以保证程序片段在需要时可以被调用。在这个例子中,页的大小为4K,页桢大小与页相同——这点是必须保证的,因为内存和外围存储器之间的传输总是以页为单位的。对应4G的虚拟地址和256M的物理存储器,他们分别包含了1M个页和64K个页桢。

  三、MMU的功能

  1、将虚拟地址映射为物理地址

  现代的多用户多进程操作系统,需要MMU, 才能达到每个用户进程都拥有自己独立的地址空间的目标。使用MMU, 操作系统划分出一段地址区域, 在这块地址区域中, 每个进程看到的内容都不一定一样。例如MICROSOFT WINDOWS操作系统将地址范围4M-2G划分为用户地址空间,进程A在地址0X400000(4M)映射了可执行文件,进程B同样在地址0X400000(4M)映射了可执行文件,如果A进程读地址0X400000, 读到的是A的可执行文件映射到RAM的内容,而进程B读取地址0X400000时,则读到的是B的可执行文件映射到RAM的内容。

  这就是MMU在当中进行地址转换所起的作用。

  2、提供硬件机制的内存访问授权

  多年以来,微处理器一直带有片上存储器管理单元(MMU),MMU能使单个软件线程工作于硬件保护地址空间。但是在许多商用实时操作系统中,即使系统中含有这些硬件也没采用MMU。

  当应用程序的所有线程共享同一存储器空间时,任何一个线程将有意或无意地破坏其它线程的代码、数据或堆栈。异常线程甚至可能破坏内核代码或内部数据结构。例如线程中的指针错误就能轻易使整个系统崩溃,或至少导致系统工作异常。

  就安全性和可靠性而言,基于进程的实时操作系统(RTOS)的性能更为优越。为生成具有单独地址空间的进程,RTOS只需要生成一些基于RAM的数据结构并使MMU加强对这些数据结构的保护。基本思路是在每个关联转换中“接入”一组新的逻辑地址。MMU利用当前映射,将在指令调用或数据读写过程中使用的逻辑地址映射为存储器物理地址。MMU还标记对非法逻辑地址进行的访问,这些非法逻辑地址并没有映射到任何物理地址。

  这些进程虽然增加了利用查询表访问存储器所固有的系统开销,但其实现的效益很高。在进程边界处,疏忽或错误操作将不会出现,用户接口线程中的缺陷并不会导致其它更关键线程的代码或数据遭到破坏。目前在可靠性和安全性要求很高的复杂嵌入式系统中,仍然存在采无存储器保护的操作系统的情况,这实在有些不可思议。

  采用MMU还有利于选择性地将页面映射或解映射到逻辑地址空间。物理存储器页面映射至逻辑空间,以保持当前进程的代码,其余页面则用于数据映射。类似地,物理存储器页面通过映射可保持进程的线程堆栈。RTOS可以在每个线程堆栈解映射之后,很容易地保留逻辑地址所对应的页面内容。这样,如果任何线程分配的堆栈发生溢出,将产生硬件存储器保护故障,内核将挂起该线程,而不使其破坏位于该地址空间中的其它重要存储器区,如另一线程堆栈。这不仅在线程之间,还在同一地址空间之间增加了存储器保护。

  存储器保护(包括这类堆栈溢出检测)在应用程序开发中通常非常有效。采用了存储器保护,程序错误将产生异常并能被立即检测,它由源代码进行跟踪。如果没有存储器保护,程序错误将导致一些细微的难以跟踪的故障。实际上,由于在扁平存储器模型中,RAM通常位于物理地址的零页面,因此甚至NULL指针引用的解除都无法检测到。

  四、MMU和CPU

  1、X86系列的MMU

  INTEL出品的80386CPU或者更新的CPU中都集成有MMU. 可以提供32BIT共4G的地址空间.

  X86 MMU提供的寻址模式有4K/2M/4M的PAGE模式(根据不同的CPU,提供不同的能力), 此处提供的是目前大部分操作系统使用的4K分页机制的描述,并且不提供ACCESS CHECK的部分。

  涉及的寄存器

  a) GDT

  b) LDT

  c) CR0

  d) CR3

  e) SEGMENT REGISTER

  虚拟地址到物理地址的转换步骤

  a) SEGMENT REGISTER作为GDT或者LDT的INDEX, 取出对应的GDT/LDT ENTRY.

  注意: SEGMENT是无法取消的, 即使是FLAT模式下也是如此. 说FLAT模式下不使用SEGMENT REGISTER是错误的. 任意的RAM寻址指令中均有DEFAULT的SEGMENT假定. 除非使用SEGMENT OVERRIDE PREFIX来改变当前寻址指令的SEGMENT, 否则使用的就是DEFAULT SEGMENT.

  ENTRY格式

  typedef struct

  {

  UINT16 limit_0_15;

  UINT16 base_0_15;

  UINT8 base_16_23;

  UINT8 accessed : 1;

  UINT8 readable : 1;

  UINT8 conforming : 1;

  UINT8 code_data : 1;

  UINT8 app_system : 1;

  UINT8 dpl : 2;

  UINT8 present : 1;

  UINT8 limit_16_19 : 4;

  UINT8 unused : 1;

  UINT8 always_0 : 1;

  UINT8 seg_16_32 : 1;

  UINT8 granularity : 1;

  UINT8 base_24_31;

  } CODE_SEG_DESCRIPTOR,*PCODE_SEG_DESCRIPTOR;

  typedef struct

  {

  UINT16 limit_0_15;

  UINT16 base_0_15;

  UINT8 base_16_23;

  UINT8 accessed : 1;

  UINT8 writeable : 1;

  UINT8 expanddown : 1;

  UINT8 code_data : 1;

  UINT8 app_system : 1;

  UINT8 dpl : 2;

  UINT8 present : 1;

  UINT8 limit_16_19 : 4;

  UINT8 unused : 1;

  UINT8 always_0 : 1;

  UINT8 seg_16_32 : 1;

  UINT8 granularity : 1;

  UINT8 base_24_31;

  } DATA_SEG_DESCRIPTOR,*PDATA_SEG_DESCRIPTOR;

  共有4种ENTRY格式, 此处提供的是CODE SEGMENT和DATA SEGMENT的ENTRY格式. FLAT模式下的ENTRY在base_0_15, base_16_23处为0, 而limit_0_15, limit_16_19处为0xfffff. granularity处为1. 表名SEGMENT地址空间是从0到0XFFFFFFFF的4G的地址空间.

  b) 从SEGMENT处取出BASE ADDRESS 和LIMIT. 将要访问的ADDRESS首先进行ACCESS CHECK, 是否超出SEGMENT的限制.

  c) 将要访问的ADDRESS+BASE ADDRESS, 形成需要32BIT访问的虚拟地址. 该地址被解释成如下格式:

  typedef struct

  {

  UINT32 offset :12;

  UINT32 page_index :10;

  UINT32 pdbr_index :10;

  } VA,*LPVA;

  d) pdbr_index作为CR3的INDEX, 获得到一个如下定义的数据结构

  typedef struct

  {

  UINT8 present :1;

  UINT8 writable :1;

  UINT8 supervisor :1;

  UINT8 writethrough:1;

  UINT8 cachedisable:1;

  UINT8 accessed :1;

  UINT8 reserved1 :1;

  UINT8 pagesize :1;

  UINT8 ignoreed :1;

  UINT8 avl :3;

  UINT8 ptadr_12_15 :4;

  UINT16 ptadr_16_31;

  }PDE,*LPPDE;

  e) 从中取出PAGE TABLE的地址. 并且使用page_index作为INDEX, 得到如下数据结构

  typedef struct

  {

  UINT8 present :1;

  UINT8 writable :1;

  UINT8 supervisor :1;

  UINT8 writethrough:1;

  UINT8 cachedisable:1;

  UINT8 accessed :1;

  UINT8 dirty :1;

  UINT8 pta :1;

  UINT8 global :1;

  UINT8 avl :3;

  UINT8 ptadr_12_15 :4;

  UINT16 ptadr_16_31;

  }PTE,*LPPTE;

  f) 从PTE中获得PAGE的真正物理地址的BASE ADDRESS. 此BASE ADDRESS表名了物理地址的.高20位. 加上虚拟地址的offset就是物理地址所在了.

  2、ARM系列的MMU

  ARM出品的CPU,MMU作为一个协处理器存在。根据不同的系列有不同搭配。需要查询DATASHEET才可知道是否有MMU。如果有的话,一定是编号为15的协处理器。可以提供32BIT共4G的地址空间。

  ARM MMU提供的分页机制有1K/4K/64K 3种模式. 本文介绍的是目前操作系统通常使用的4K模式。

  涉及的寄存器, 全部位于协处理器15.

  ARM没有SEGMENT的寄存器,是真正的FLAT模式的CPU。给定一个ADDRESS,该地址可以被理解为如下数据结构:

  typedef struct

  {

  UINT32 offset :12;

  UINT32 page_index :8;

  UINT32 pdbr_index :12;

  } VA,*LPVA;

  从MMU寄存器2中取出BIT14-31,pdbr_index就是这个表的索引,每个入口为4BYTE大小,结构为

  typedef struct

  {

  UINT32 type :2; //always set to 01b

  UINT32 writebackcacheable:1;

  UINT32 writethroughcacheable:1;

  UINT32 ignore :1; //set to 1b always

  UINT32 domain :4;

  UINT32 reserved :1; //set 0

  UINT32 base_addr:22;

  } PDE,*LPPDE;

  获得的PDE地址,获得如下结构的ARRAY,用page_index作为索引,取出内容。

  typedef struct

  {

  UINT32 type :2; //always set to 11b

  UINT32 ignore :3; //set to 100b always

  UINT32 domain :4;

  UINT32 reserved :3; //set 0

  UINT32 base_addr:20;

  } PTE,*LPPTE;

  从PTE中获得的基地址和上offset,组成了物理地址.

  PDE/PTE中其他的BIT,用于访问控制。这边讲述的是一切正常,物理地址被正常组合出来的状况。

  ARM/X86 MMU使用上的差异

  1、X86始终是有SEGMENT的概念存在。 而ARM则没有此概念(没有SEGMENT REGISTER)。

  2、ARM有个DOMAIN的概念。用于访问授权,这是X86所没有的概念, 当通用OS尝试同时适用于此2者的CPU上,一般会抛弃DOMAIN的使用。

来源: http://blog.youkuaiyun.com/yexinghai/article/details/4242816
【MMU】认识 MMU 及内存映射的流程 阅读详情

相关推荐

Linux 内存管理浅析 - 页面映射管理之MMU介绍

(5). MMU介绍

wangmingchina的专栏 2107

什么是mmu?为什么要用mmu?

MMU即内存管理单元(Memory Manage Unit),是一个与软件密切相关的硬件部件,也是理解linux等操作系统内核机制的最大障碍之一。可以说,不懂MMU使很多人一直停滞在单片机与无OS的时代。博主之前对MMU也一直是雾里看花,似懂非懂。最近终于自认为云开雾散后,回头总结,感觉有几个概念是阻碍人们理解MMU的元凶。 1)虚拟地址/物理地址 如果处理器没有MMU,CPU内部执行单元产生的内存地址信号将直接通过地址总线发送到芯片引脚,被内存芯片接收,这就是物理地址(physical address),

KUNPLAYBOY的博客 2万+

MMU初始化

一、MMU作用 不同的进程访问相同的地址,可能得到不同的值,因为使用的是MMU进行地址转换;复杂程序中一般使用的是虚拟地址,裸机中才会使用绝对地址,虚拟地址和绝对地址是通过MMU进行转换的,当MMU不工作的时候,程序使用的就是绝对地址;除了地址转换的作用,MMU还可以控制内存单元的访问权限。 二、MMU转换流程简述 1.从虚拟地址取出前面的31-20位,作为索引。 2.根据索引在transl

SingleForever的专栏 3137

内存管理单元MMU简介

1. MMU MMU在CPU的配合下(通过页异常触发),实现了线性地址到物理地址的动态映射,为正在CPU上运行的应用程序(进程)提供了一个独立的连续内存空间(线性地址空间,或称虚拟内存空间,其中放置了代码段、数据段和堆栈段),屏蔽了地址分配、内存分配和内存回收等一系列复杂的系统行为。 MMU的线性地址转换是通过页表进行的,具体过程如下图所示(摘自intel程序员手册卷3): 其实最简单明了的方法是通过一个一维数组来记录映射关系:下标代表线性地址,数组元素内容代表物理地址。可是如此一来,用来表示映射关系的内

rayylee 7441

浅学Linux内核MMU

MMU是 MemoryManagementUnit 的缩写即,内存管理单元. 针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址与物理地址的转换. 提供硬件机制的内存访问授权.(现代 CPU 的应用中,基本上都选择了使用 MMU)

m0_74282605的博客 2038

嵌入式中 MMU的功能

  学习嵌入式才发现要看的书太多,外面的世界很精彩啊,现在来说说MMU吧,MMU是Memory Management Unit的缩写,是用来管理虚拟内存系统的器件。 MMU通常是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表。此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU,由 MMU决定数据是在RAM内还是在大容量存储器设备内。如果数据不在存储空间内,MM...

李肖遥的专栏 468

计算机系统: MMU(内存管理单元)详解

MMU是一种硬件设备,也称为内存管理单元,它位于计算机系统的中央处理器(CPU)和内存之间。MMU负责处理程序发出的内存访问请求,并将逻辑地址转换为物理地址,实现对内存的管理和保护。本文详细介绍了MMU(内存管理单元)在计算机系统中的重要性和功能。从地址转换、虚拟内存管理、内存保护到高速缓存管理,MMU承担着诸多任务,为计算机系统的性能和安全提供了保障。通过深入理解MMU的工作原理和应用,读者可以更好地掌握计算机内存管理的核心概念。

m0_72410588的博客 6256

嵌入式系统中内存管理单元(Memory Management Unit, MMU)的功能

在嵌入式系统中,MMU扮演着重要的角色,提供了虚拟内存映射、内存保护和缓存管理等功能。缓存管理功能可以提高内存访问的效率,减少对主存储器的访问次数。以上提供的示例代码演示了MMU的基本用法,开发人员可以根据具体需求进行进一步的配置和优化。嵌入式系统中的内存管理单元(Memory Management Unit, MMU)是一种硬件组件,用于管理和控制系统中的内存访问。MMU具有多种功能,包括虚拟内存映射、内存保护和缓存管理等。在本文中,我们将详细讨论嵌入式系统中MMU的功能,并提供相应的源代码作为示例。

CodeMaven的博客 244

内存管理单元MMU(Memory Management Unit)是什么?

摘要 MMU(内存管理单元)是计算机系统中实现虚拟内存管理和内存保护的核心硬件模块,通过页表机制将程序虚拟地址转换为物理地址。其主要功能包括:支持虚拟内存扩展(如按需分页)、内存权限控制(R/W/X)、进程隔离以及TLB加速地址转换。与嵌入式MPU相比,MMU具备动态地址映射和内存扩展能力。典型应用涵盖多任务操作系统(如Linux进程隔离)、内存共享及安全防护(如ASLR)。尽管MMU带来性能开销(如TLB未命中),但它仍是现代计算系统实现高效内存管理的基础,其设计与操作系统的深度协同直接影响系统性能与安全

guigenyi的专栏 1229

【ARM Cache 及 MMU 系列文章番外篇 8.4 – MMU, MPU, SMMU, PMU 差异与关系】

MPU则是一种更简单的内存管理硬件,它不能转换虚拟地址,只能为内存区域设置权限,例如设定某段内存只读或可执行。通过MMU,操作系统可以创建一种虚拟内存环境,使得每个运行的程序都认为自己是在连续的内存空间中运行,同时还能防止一个程序访问另一个程序的内存空间。总的来说,MMU和MPU都在内存管理中有重要作用,但MMU提供了更复杂、更全面的功能,适合于复杂的操作系统,而MPU则提供了一种轻量级的内存保护机制,适合于资源有限的嵌入式系统。通过PMU,开发者可以详细了解软件运行的性能表现,优化代码,提高运行效率。

CodingCos的博客 1608

从数据到图片:手把手构建FMCW雷达人体行为识别数据集(行走、跌倒、喝水等6类动作)

本文详细解析了如何利用FMCW雷达构建人体行为识别数据集,涵盖行走、跌倒、喝水等6类动作。通过多普勒特征可视化、图像标准化处理和自动化流水线设计,将原始雷达信号转化为高质量时频图像数据集,为智能家居和健康监护等应用提供可靠数据支持。

weixin_30706691的博客 384

ARM:MPU & MMU & SMMU

1、MPU (Memory Protection Unit); 2、MMU(Memory Management Unit)。 MMU是比MPU提供了功能更强大的内存保护机制,MPU只提供了内存区域保护,而MMU是在此基础上提供了虚拟地址映射技术,而且在操作上,MMU要比MPU负责。 3、SMMU本质上就是一个MMU设备,它的内存转换逻辑与CPU的MMU采用相同的逻辑,都允许将物理上非连续的页...

鱼藏剑 6978

ArduPilot + Gazebo + Mavros + QGC + 遥控器:从仿真到实机的自主轨迹控制实践

本文详细介绍了基于ArduPilot、Gazebo、Mavros和QGC的无人机自主轨迹控制全流程实践。从仿真环境搭建、多终端协同配置,到遥控器集成与自主圆形轨迹算法实现,提供了完整的代码示例和实机迁移要点,帮助开发者快速掌握无人机自主控制技术。

corn8的博客 940

什么是MMU,MMU的作用

I. 什么是MMU,MMU的作用 MMU是Memory Management Unit的缩写。 针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址 &O1663;&O1664; 物理地址的转换. 提供硬件机制的内存访问授权. 现 代的多用户多进程操作系统, 需要MMU, 才能达到每个用户进程都拥有自己的独立的地址空间的目标. 使用MMU, OS划分出一段地址区域, 在这块地址区域中, 每个进程看到的内容都不一定一样. 例如MICROSOFT WINDOWS操作系统,

usstmiracle的博客 8033

Arduino程序设计(十四)舵机控制实验(SG90)

本文介绍SG90舵机控制原理及实验,主要内容有:1、介绍SG90舵机;2、舵机0°~180°来回转动;3、串口控制舵机转动固定角度。(1)舵机是一种位置(角度)伺服的驱动器。舵机只是一种通俗的叫法,其实质是一个伺服马达。在需要角度不断变化并可以保持的控制系统中应用广泛。如遥控机械人、飞机模型等。(2)舵机的转动角度为0~180°,其内部结构包括电机,控制电路和机械结构三部分。电机有三根线引出,分别接VCC、GNG和信号线。

Alice的博客 1万+

从Wi-Fi到蓝牙:手把手教你用Cadence Virtuoso搭建一个2.4GHz锁相环频率综合器(含PFD/CP/VCO模块设计)

本文详细介绍了如何在Cadence Virtuoso中设计一个2.4GHz锁相环频率综合器(PLL),涵盖从系统架构到模块级设计的全流程。重点解析了PFD、CP和VCO等核心模块的设计技巧与仿真验证方法,帮助模拟集成电路设计师掌握高频PLL的实现要点,满足Wi-Fi和蓝牙等无线通信标准的要求。

weixin_30315723的博客 418

MMU & MPU

S3C2440里面带的是MMU,而现在流行的Cortex-M3/4 里面带的是MPU。 MMU vs MPU 内存是现代计算机最重要的组件之一。因此,它的内容不能被任何错误的应用所篡改。这个功能可以通过MMU(Memory Management Unit)或者MPU(Memory Protection Unit)来实现。尽管这个两个东西有同样的基本功能,但是它们之间还是存在一些不同。MMU...

EmbeddedCoder 的优快云博客 1584

YOLOv8进阶实战:融合SAHI超推理算法,在无人机应用中精准捕捉视频与图片中的微小目标

YOLOv8改进是一种先进的目标检测算法,通过引入辅助超推理算法SAHI推理,使得小目标无法逃避检测。SAHI推理算法结合视频和图片的特点,利用先进的超推理技术,提高了目标检测的准确性和鲁棒性。不仅如此,YOLOv8改进还支持对视频和图片进行实时的目标检测,将检测结果直观地呈现给用户。这一技术的应用范围广泛,可以用于安防领域,提升监控设备的性能和效率;也可以用于无人驾驶领域,实现精准的目标识别和跟踪。总之,YOLOv8改进是一项具有突破性的技术,为目标检测领域带来了重大的进展。

weixin_51988935的博客 807

SMMU-System Memory Management Unit

在计算机领域,输入输出内存管理单元(英语:input–output memory management unit,缩写IOMMU)是一种内存管理单元(MMU),它将具有直接記憶體存取能力(可以DMA)的I/O总线连接至主内存。如传统的MMU(将CPU可见的虚拟地址转换为物理地址)一样,IOMMU将设备可见的虚拟地址(在此上下文中也称设备地址或I/O地址)映射到物理地址。部分单元还提供内存保护功能,...

maze的专栏 2432

用一个稳定的 Deep Link,直接打开 SAP CRM WebClient 里的 Sales Order 创建界面

本文详细介绍了如何在SAP CRM WebClient UI中构建直接进入销售订单创建页面的Deep Link URL。关键步骤包括:1) 通过SMICM和SICF确认系统入口路径及端口;2) 使用BSP_DLC_SDESIGN或F2功能获取Sales Order的对象类型;3) 确保创建动作(D)能正确映射到目标页面;4) 按规范拼接包含sap-client、saprole等参数的完整URL。文章还提供了ABAP代码示例自动生成URL,并提醒注意浏览器缓存问题。通过这种标准化导航方式,可以实现稳定的页面直

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 211

UG\NX二次开发 获取三平面交点

//如果返回值不为0 则此三个面没交点 int three_faces_point(tag_t tagFace1, tag_t tagFace2, tag_t tagFace3, double *dou_x, double *dou_y, double *dou_z)

王牌飞行员_里海的博客 675

MMU---Memory Management Unit内存管理单元

MMU---Memory Management Unit内存管理单元

明月清风 精进不止 235

SAP-ABAP:ABAP Development Tools(ADT)安装配置学习分享教程-第一篇:ADT安装前置准备与环境校验教程

ABAP Development Tools(ADT)安装配置教程摘要 本文是ADT安装系列的第一篇,重点讲解环境准备与版本校验。ADT是基于Eclipse的现代ABAP开发工具,相比传统SAP GUI提供更智能的开发体验。安装前需确认: 推荐使用Eclipse 2026-03 + Java 21组合 操作系统需Windows 10+/macOS 14+ SAP GUI版本要求Windows≥8.00/macOS≥8.10 后端系统需NetWeaver 7.31 SP04+或S/4HANA 通过java -

baidu_35680696的博客 689

MMU(Memory Management Unit)介绍

  MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。   一、MMU的历史  许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所

639

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MMU(Memory Management Unit)介绍---摘自百度百科

MMU MMU是Memory Management Unit的缩写,中文名是存储器管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。一、MMU的历史    许多年以前,当人们还在使用DOS或是更古老的操作系统

Wave的专栏 1616

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

简单介绍MMU和TLB

简单记录一下有关MMU的一些东西 背景 引入虚拟地址的原因 (一)让APP可以以同样的链接地址来编译 举个例子,两个hello应用程序,编译后查看反汇编代码,这两个程序的起始地址都是0x80A4。于是CPU运行两个APP时,都会去0x80A4读指令,然后经过MMU转换成Addr1、Addr2。这样,不同的APP可以在任意地址,经过MMU地址转换后,在内存上是不同的地址,互不干扰。 (二)让大容量APP可以在资源少的系统上运行 在电子系统里面,内存都是有限的,无论是嵌入式系统还是电脑,比如我们的JZ2440内

qq_38773342的博客 910

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 关于ARM的内存重映射
下一篇: C语言中强制数据类型转换
beyondioi
博客等级 码龄17年 111粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值