本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、前言
在上文《Java并发编程:虚拟内存详解(二)》,我们了解了虚拟内存的优势,以及实现虚拟内存的三种调度方式。在虚拟内存的三种调度方式中,页式调度是其中较为简单的一种方式,Linux就是采用的这种调度方式,本文将为大家讲解下这种调度方式的实现方式。
二、虚拟内存怎样进行进程隔离?
我们知道,物理内存是不区分进程和权限的,而虚拟内存是进程隔离的。进程隔离是虚拟内存的核心优势之一,那么虚拟内存是怎样实现进程隔离的?
从《Java并发编程:虚拟内存详解(二)》中,我们知道页式调度是通过页表来实现虚拟内存与物理内存的映射的,其实,虚拟内存的进程隔离也是通过页表实现的。
在操作系统中,它为每个进程都维护了一个独立的页表,这个页表是操作系统内核维护的,进程是没办法操作页表的。当进程申请到虚拟内存时,会将其所拥有的内存信息存储到其所拥有的页表,而进程要操作内存,也只能通过其所拥有的页表,也就没办法操作其它进程的内存,继而也就实现了`进程隔离。
三、虚拟内存最大容量
在讲进程初始化之前,我们先来了解一下虚拟内存有多大。
虚拟内存的最大容量是由计算机的地址结构,CPU寻址范围决定的。例如64位的计算机,理论上的最大虚拟内存容量为2^64,为8G。
但是这个是理论上的最大值,在实际使用中还是要受到计算机物理内存和外存的限制。比如计算机的内存大小为2G,外存为4G,那么最大虚拟内存容量为(2G+4G=6G)。
四、进程初始内存容量
进程的初始内存大小一般跟应用程序的设置有关,比如Java程序默认最小使用内存为计算机内存的1/64。
五、后言
既然看到这里了,感觉有所收获的朋友,不妨来个大大的点赞吧~~~