虚拟内存
是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。
个人理解:
1、操作系统需要知道软件的安装路径(具体到哪个文件夹下)。安装jdk时,需要配置环境变量(就是告知操作系统jdk的路径)。
安装软件不用说了,不懂,总之,是把软件放到外存储器硬盘上。
2、用户点击某个软件的exe文件时,
操作系统会把该软件的可执行二进制文件(就是二进制指令)加载到内存中。
在这期间,操作系统:(1)、为该软件开启了一个进程,并且分配了单独的内存空间。并通过虚拟内存技术来管理这个内存空间。
大概就是为这个软件分配了多少页的内存,页号+行号(虚拟内存地址),映射对应了内存中一个绝对地址。
猜想,操作系统既然管理内存,那这个映射关系表,操作系统当然会记录下来。
软件的界面是如何展示给用户的? 界面当然是软件开发者写的,而展示这个界面(执行界面代码,并输出到显示器),大概都是操作系统做的。
3、当用户点击该软件的某个命令时,操作系统做了什么?
在这期间(1)、会有一个中断,操作系统切换到该进程。
(2)、首先一个常识,命令应该都是一个函数方法,是由一堆二进制机器码组成的。有开始代码,和结束代码。
操作系统,应该知道该命令的虚拟内存地址,然后根据映射关系表,找到绝对内存地址(开始代码),并把这个地址放到address count中,
然后,cpu按照程序执行。