本文主要是介绍【操作系统】内存分段技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
内存管理中,虚拟地址和分页技术是很重要的概念和技术。虚拟地址的概念指的是程序有自己的逻辑地址,不同程序的逻辑地址由操作系统最后转换成物理地址,使得多道式程序设计成为可能。分页技术是交换技术的升级,交换技术的单位是整个进程,而分页交换的单元是页,分页使得内存中只要驻存进程的部分即可,而非整个进程。
那么分段又是什么机制呢?
在只使用分页的系统中,一个进程只有一个地址空间,而一个进程在运行时,需要多种地址,比如程序段,堆栈段,符号表和常亮区等多种空间。如果把它们都放在同一个地址空间,那么需要考虑地址冲突问题,通常需要为每一种的空间预留额外的空间出来,但是这仍然无法从根本上解决问题,比如一个进程有很多的变量,那么它的符号表就很大,这是不得不借用其他类型的空间,这就涉及到了一个如何规划和管理地址空间的问题。
所以一个更好的办法是,按照类型把进程的地址空间分为多个,每一种功能对应一个地址空间,独立增长,这就是分段思想,分段使得我们不需要关心如何管理和分割地址空间。分段与分页的区别在于,分段存在于逻辑地址的概念上,是一种划分逻辑地址的思想,而分页是解决逻辑地址到物理地址的映射过程的。
系统中是可以让分页和分段并存的。在这样的系统中:
首先逻辑地址有两部分,第一部分要指明段号,第二部分是段内位移。
每一个进程有一个段表,记录自己的所有的段。每一个段表项都有一个段描述符,记录了这个段的所有的段内地址,也就是页号和页内偏移,然后通过页表就可以得到物理地址了。
过程为:
1.根据段号找到段描述符;
2.找到该段的页表;
3.通过页号和页内偏移找到物理地址;
这篇关于【操作系统】内存分段技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!