瞧内核地址空间映射

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

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

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

好坏不评说。

颠倒一下,还是那个技巧,每个进程不再独立映射固定的内核地址空间,而是所有进程共享内核地址空间固定映射到物理内存,固定的每进程地址空间改成固定的映射。如下图:
瞧内核地址空间映射_第2张图片
共享内核空间一一映射,内核空间的映射开销就省了,但内核空间也不能换出到磁盘了,必须常驻物理内存。由于一一映射,若将内核空间地址A‘映射的物理地址A换出到磁盘,内核空间没有任何除A’之外的地址可以映射到物理地址A。

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

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

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

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

你可能感兴趣的:(地址空间)