ZKX's LAB

Linux 中 mmap() 函数的内存映射问题理解? mmu缺页中断

2021-03-07知识29

Linux 中 mmap() 函数的内存映射问题理解? mmap()这个函数到底是把 硬盘里的数据映射到物理内存(还是虚拟内存?中,还是把物理内存中的数据映射…

linux上,C代码被编译链接成可执行文件后,被加载运行的过程具体是怎样的? linux 2.4的execve内核实现通过open打开目标文件,创建了一个file对象表示此文件接着用一个linux_bin_prm…

操作系统与用户进程在内存里的区别?见补充说明. 还是我来一一回答吧!CPU有保护模式,把CPU的状态分为了特权模式和用户模式,在驱动开发中叫ring0级ring3级。在特权模式,CPU可以执行任何指令,其中有些指令就叫特权指令,比如直接访问CPU控制寄存器。特权指令,只能在特权模式下运行,而用户模式只能执行一般指令。除了操作系统之外的任何用户程序都是运行在用户模式。由于操作系统是计算机第一运行的程序,所以BIOS引导进去之后,CPU处于特权模式,系统可以先占据特权模式,然后把状态切换到用户模式再让用户程序运行,所以用户程序都运行在用户模式。至于页表的问题是这样的,在系统初始化时,是直接对物理内存进行访问的,不经过页表,这是的工作模式叫实模式,等页表在内存中建立好了,再切换的保护模式,在保护模式就出现了虚拟地址向物理地址转译的过程了。补充一下:CPU有两种工作模式,一个是实模式,就是直接访问物理内存,不分页的。另一个是保护模式,就是分页的,而且存在虚拟地址。保护模式下又有特权模式和用户模式两种。关系是这样子的。我给你讲,只要发生缺页中断,就会陷入内核,只是就进入了特权模式,控制权交给了操作系统,这一系列过程都是硬件完成的。至于换页使软件完成的,就是操作系统。

arm上实现内存管理的单元叫什么 arm上实现内存管理的单元叫存储器管理单元。MMU是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。MMU通常是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表,此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU,由MMU决定数据是在RAM中还是在大容量存储器设备中。如果数据不在RAM中,MMU将产生缺页中断。MMU的两个主要功能如下:1.将虚地址转换成物理地址。2.控制存储器存取允许。嵌入式系统中,存储系统差别很大,可包含多种类型的存储器件,如FLASH、SRAM、SDRAM、ROM等,这些不同类型的存储器件速度和宽度等各不相同;在访问存储单元时,可能采取平板式的地址映射机制对其操作,或需要使用虚拟地址对其进行读写;系统中,需引入存储保护机制,增强系统的安全性。为适应如此复杂的存储体系要求,ARM处理器中引入了存储管理单元来管理存储系统。

操作系统是如何控制内存的访问权限?

arm上实现内存管理的单元叫什么 arm上实现内存管理的单元叫存储器管理单元。MMU是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。MMU通常是CPU的一部分,本身有少量。

Linux 中 mmap() 函数的内存映射问题理解? mmu缺页中断

简述缺页中断和一般中断的区别 1、范围不同一般中断只需要保2113护现场,然后就直接跳5261到需及4102时处理的地方。缺页中断除了保1653护现场之外,还要判断内存中是否有足够的空间存储所需的页或段,然后再把所需页调进来再使用。2、结果不同一般中断在处理完之后返回时,执行下一条指令。缺页中断返回时,执行产生中断的那一条指令。3、次数不同在指令执行期间产生和处理缺页中断信号,一条指令在执行期间,可能产生多次缺页中断。一般中断只产生一次,发生中断指令后转入相应处理程序进行处理,恢复被中断程序现场。扩展资料产生缺页中断的几种情况1、当内存管理单元(MMU)中确实没有创建虚拟物理页映射关系,并且在该虚拟地址之后再没有当前进程的线性区(vma)的时候,这将杀掉该进程。2、当MMU中确实没有创建虚拟页物理页映射关系,并且在该虚拟地址之后存在当前进程的线性区vma的时候,这很可能是缺页中断,并且可能是栈溢出导致的缺页中断。3、当使用malloc/mmap等希望访问物理空间的库函数/系统调用后,由于linux并未真正给新创建的vma映射物理页,此时若先进行写操作,将和2产生缺页中断的情况一样;若先进行读操作虽然也会产生缺页异常,将被映射给默认的零页,等再进行写操作时。

#mmu缺页中断

随机阅读

qrcode
访问手机版