瞧内核地址空间映射

Posted dog250

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了瞧内核地址空间映射相关的知识,希望对你有一定的参考价值。

将固定的资源在所有使用者中分配,而不是为每一个使用者分配固定额度的资源。

Windows为每个进程映射了一个独立的内核地址空间,布局非常正则,比如页表在固定的地址A,PCB在固定的地址B,该独立的地址空间通过MMU映射到物理内存。如下图:

每个进程需要额外内存作为页表映射独立的内核地址空间本身,随进程增多,这部分内存开销线性增加。理论上Windows进程地址空间任何部分都可换出到磁盘,优点是系统可承载的进程数不受物理内存限制,缺点是换入换出会影响性能。

好坏不评说。

颠倒一下,还是那个技巧,每个进程不再独立映射固定的内核地址空间,而是所有进程共享内核地址空间固定映射到物理内存,固定的每进程地址空间改成固定的映射。如下图:

共享内核空间一一映射,内核空间的映射开销就省了,但内核空间也不能换出到磁盘了,必须常驻物理内存。由于一一映射,若将内核空间地址A‘映射的物理地址A换出到磁盘,内核空间没有任何除A’之外的地址可以映射到物理地址A。

常驻自然高效,但不能换出也限制了系统容量。但容量问题可横向扩容解决。在系统容量上限内,显然Linux方式更高效,无需独立映射内核空间,空间开销更小,无换入换出,时间开销更小。

这个区别和进程调度O(1)算法和CFS的区别如出一辙。万变不离其宗。

将固定的资源在所有使用者中分配,而不是为每一个使用者分配固定额度的资源。

浙江温州皮鞋湿,下雨进水不会胖。

以上是关于瞧内核地址空间映射的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核 内存管理内存映射原理 ① ( 物理地址空间 | 外围设备寄存器 | 外围设备寄存器的物理地址 映射到 虚拟地址空间 )

内核栈对应的虚拟地址是如何映射的?

Linux驱动虚拟地址和物理地址的映射

Linux驱动虚拟地址和物理地址的映射

linux内核内存虚拟地址映射物理地址

Linux虚拟地址和物理地址的映射