MMU机制在进程中使用时的一些问题

来源:互联网 发布:瞻博网络待遇 编辑:程序博客网 时间:2024/05/22 03:05

32位linux系统中每个进程拥有4GB的虚拟地址空间(上文介绍:Linux进程空间与虚拟地址的好处),那么虚拟地址空间如何与实际物理内存进行对应呢—MMU(Memory Management Unit)。关于MMU的实现细节即分页处理的原理,网上分析的很多,下面我列出了部分疑惑的问题;

 

MMU的作用:

将虚拟地址转换为物理地址,解决应用程序使用的内存总大小会大于物理内存总大小的问题

 

MCU(Mov Reg0)-----虚拟地址0----->MMU-------物理地址4096-------->MEM

 

MMU何时开启:

一般在bootloader中初始化MMU,当内核启动后调用paging_init()建立映射表。

 

每个进程的虚拟地址空间怎么处理的:

每个进程拥有一张内存映射表。在fork()新进程的时候就会为新进程建立一个内存映射表,数据结构为mm_struct

 

每个进程的内存映射表最初会映射多大物理内存:

 待探讨

多个进程间如何平衡物理内存的使用呢?

待探讨


为什么没有MMU的处理器无法安装操作系统:
所谓的处理器就是计算机的核心运算硬件,现在使用windows操作系统的用户使用的机器之中的处理器多数都是X86内核,而实际之上很多时候我们用户都是会在心目之中把一个处理器和其运行的特定操作系统挂钩,之前说的X86和windows操作系统,而在Cortex-A系列硬件之上我们运行的多数都是Android操作系统,或者是linux操作系统。 这些操作系统虽然说各自不同,但是都是有相同的部分,比如说对于内存的管理就是如此。一般我们把对于内存的管理模块都是称之为MMU,但是实际之上在win7旗舰版操作系统之中并不是所有的内存管理任务都是操作系统完成的,处理器也是提供了MMU硬件支持,一般我们都说有MMU支持的处理器是可以安装操作系统的。 没有MMU的处理器无法安装操作系统? 我们在上面说了没有MMU的处理器是不能安装操作系统的,其实并不是这样,现在很多的使用在嵌入式系统之中的MCU处理器都是不具备MMU,但是这种处理器可以与运行一些最为简单的实时操作系统。这种操作系统甚至也是可以提供多任务功能。 无MMU处理器到底是有什么限制 实际之上如果一个处理器没有MMU的话,那么其就是不能支持和我们通用计算机一样在外部存储器之中部署程序,其只能是把应用程序和操作系统混合在一起。这样的程序处理方式其实和一般的无操作系统程序类似,所以说很多人认为这不能算是操作系统。

原创粉丝点击