内存治理(Memory Management)是操作零碎设计中最主要和最复杂的内容之一。固然盘算机硬件不断在飞速开展,内存容量也在不时增加,然则依然弗成能将一切用户过程和零碎所需求的全体程序和数据放入主存中,所以操作零碎必需将内存空间停止合理地划分和无效地震态分派。操作零碎对内存的划分和静态分派,就是内存治理的概念。
无效的内存治理在多道程序设计中十分主要,不只便利用户运用存储器、进步内存应用率,还可以经过虚拟技巧从逻辑上扩大存储器。
内存治理的功用有:
内存空间的分派与收受接管:由操作零碎完成主存储器空间的分派和治理,使程序员解脱存储分派的费事,进步编程效力。
地址转换:在多道程序情况下,程序中的逻辑地址与内存中的物理地址弗成能分歧,因而存储治理必需供给地址变换功用,把逻辑地址转换成响应的物理地址。
内存空间的扩大:应用虚拟存储技巧或主动掩盖技巧,从逻辑上扩大内存。
存储维护:包管各道功课在各自的存储空间内运转,.互不搅扰。
在停止详细的内存治理之前,需求理解过程运转的根本道理和请求。
创立过程起首要将程序和数据装入内存。将用户源程序变为可在内存中履行的程序,平日需求以下几个步调:
编译:由编译程序将用户源代码编译成若干个目的模块。
链接:由链接程序将编译后构成的一组目的模块,以及所需库函数链接在一同,构成一个完好的装入模块。
装入:由装入程序将装入模块装入内存运转。
这三步进程如图3-1所示。
图3-1 对用户程序的处置步调
程序的链接有以下三种方法:
静态链接:在程序运转之前,先将各目的模块及它们所需的库函数链接成一个完好的可履行程序,今后不再拆开。
装入时静态链接:将用户源程序编译后所失掉的一组目的模块,在装入内存时,釆用边装入边链接的链接方法。
运转时静态链接:对某些目的模块的链接,是在程序履行中需求该目的模块时,才对它停止的链接。其长处是便于修正和更新,便于完成对目的模块的共享。
内存的装入模块在装入内存时,异样有以下三种方法:
1) 相对装入。在编译时,假如晓得程序将驻留在内存的某个地位,编译程序将发生相对地址的目的代码。相对装入程序依照装入模块中的地址,将程序和数据装入内存。因为程序中的逻辑地址与实践内存地址完整相反,故不需对程序和数据的地址停止修正。
相对装入方法只实用于单道程序情况。别的,程序中所运用的相对地址,可在编译或汇编时给出,也可由程序员直接付与。而平日状况下在程序中釆用的是符号地址,编译或汇编时再转换为相对地址。
2) 可重定位装入。在多道程序情况下,多个目的模块的肇端地址平日多是从0开端,程序中的其他地址多是绝对于肇端地址的,此时应釆用可重定位装入方法。依据内存的以后状况,将装入模块装入到内存的恰当地位。装入时对目的程序中指令和数据的修正进程称为重定位,地址变换平日是在装入时一次完成的,所以又称为静态重定位,如图3-2(a) 所示。
图3-2 重定向类型
静态重定位的特色是在一个功课装入内存时,必需分派其请求的全体内存空间,假如没有足够的内存,就不克不及装入该功课。此外,功课一旦进入内存后,在全部运转时期不克不及在内存中挪动,也不克不及再请求内存空间。
3) 静态运转古装入,也称为静态重定位,程序在内存中假如发作挪动,就需求釆用静态的装入方法。装入程序在把装入模块装入内存后,并不立刻把装入模块中的绝对地址转换为相对地址,而是把这种地址转换推延到程序真正要履行时才停止。因而,装入内存后的一切地址均为绝对地址。这种方法需求一个重定位存放器的支撑,如图3-2(b)所示。
静态重定位的特色是可以将程序分派到不延续的存储区中;在程序运转之前可以只装入它的局部代码即可投入运转,然后在程序运转时期,依据需求静态请求分派内存;便于程序段的共享,可以向用户供给一个比存储空间大得多的地址空间。
编译后,每一个目的模块多是从0号单位开端编址,称为该目的模块的绝对地址(或逻辑地址)。当链接程序将各个模块链接成一个完好的可履行目的程序时,链接程序次序顺次按各个模块的绝对地址组成一致的从0号单位开端编址的逻辑地址空间。用户程序和程序员只需晓得逻辑地址,而内存治理的详细机制则是完整通明的,它们只要零碎编程人员才会触及。分歧过程可以有相反的逻辑地址,由于这些相反的逻辑地址可以映射到主存的分歧地位。
物理地址空间是指内存中物理单位的聚集,它是地址转换的最终地址,过程在运转时履行指令和拜访数据最初都要经过物理地址从主存中存取。当装入程序将可履行代码装入内存时,必需经过地址转换将逻辑地址转换成物理地址,这个进程称为地址重定位。
内存分派前,需求维护操作零碎不受用户过程的影响,同时维护用户过程不受其他用户过程的影响。经过釆用重定位存放器和界地址存放器来完成这种维护。重定位存放器含最小的物理地址值,界地址存放器含逻辑地址值。每一个逻辑地址值必需小于界地址存放器;内存治理机构静态地将逻辑地址与界地址存放器停止比拟,假如未发作地址越界,则加上重定位存放器的值后映射成物理地址,再送交内存单位,如图3-3所示。
当CPU调剂程序选择过程履行时,差遣程序会初始化重定位存放器和界地址存放器。每个逻辑地址都需求与这两个存放器停止查对,以包管操作零碎和其他用户程序及数据不被该过程的运转所影响。
图3-3 重定位和界地址存放器的硬件支撑
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。