windows操作系统存储器的管理机制资料:朱晓科ppt:卢毅演示:辛一雄目录一、程序的装入和链接二、储存器的分配方式三、储存器的管理方式程序的装入和链接•一个用户的源代码变为一个可执行的程序需要经过三步:首先,由编译程序将源代码编译成若干个目标模块;其次,由链接程序将这些目标模块以及库函数链接成一个完整的装入模块;最后,由装入程序将装入模块装入内存。•程序的装入分绝对装入方式和可重定位装入方式两种;绝对装入是指在装入内存之前已经知道程序的首地址了,装入时只要从该首地址不断向后扩展就行;而可重定位装入是指在装入内存之前根本不知道程序会从哪里开始装入,知道的只有每条语句相对于首地址的位移量,首地址是在装入时确定的,确定之后再根据相对于首地址的位移量得出每条语句的地址。•程序的链接可分为:静态链接,即程序装入之前,已将各目标模块及它们所需的函数库连接成一个完整的装配模块;装入时动态链接,即程序装入时,将各目标模块及它们所需的函数库连接成一个完整的装配模块,即边装入变链接;运行时动态链接,即主程序装入后,在运行之时,需要哪个模块再进行对该模块的链接;Home储存器的分配方式{1、单一连续分配2、固定分区分配3、动态分区分配4、伙伴关系5、哈希算法6、可重定位分区分配7、对换Home1、单一连续分配•把内存分为系统区和用户区两部分,系统区仅提供给OS使用,用户区提供给用户使用,即分配时将整个用户区分配给用户使用;这种方式只用于单用户、单任务的操作系统。2、固定分区分配•把内存的用户空间划分为若干个固定大小的分区,并为之建立一张分区使用表,当一用户程序要装入时,由内存分配程序检索该表,从中找出一个能满足要求的、尚未分配的分区,将其分配之。3、动态分区分配•根据进程的是以需要,动态的为之分配内存空间,大小刚适,因而不会浪费存储空间。分区分配中的数据结构包括空闲分区表(利用一张表记录着每个空闲分区的分区序号、分区始址、分区大小)和空闲分区链(使用指针将各个空闲分区连成一条链表)两种。分区分配算法包括首次适应算法(从头开始检测出第一个大小合适的分区分配之)、循环首次适应算法(从上一次分配位置开始检测出第一个大小合适的分区分配之)、最佳适应算法(空闲分区链表为从小到大排序,从头检测出不小于申请分区大小的分区,割下申请分区大小分配之,剩余的插回链表中,容易产生碎片哦)。4、伙伴系统•伙伴系统方式是对固定分区和动态分区两种内存方式的一种折中方案。在伙伴系统中,其分配和回收的时间性能取决于查找空闲分区的位置和分割,合并空闲分区所花费的时间。5、哈希关系•哈希算法就是利用哈希快速查找的优点,以及空闲分区在壳利用空间表中的分布规律,建立哈希函数,构造一张以空闲分区大小为关键字的哈希表,该表的每一个表项记录了一个对应的空闲分区链表表头指针;6、可重定位分区分配•由于动态分配会造成许多不能使用的小的空闲区,称为“零头”或“碎片”,这时,可以将多个分散在内存中的作业的地址重定位,将它们“拼接”或“紧凑”起来,这样,那些“零头”或“碎片”也就会连接成更大的连续存储空间以便分配之。可重定位分区分配与动态分区分配基本相同,仅仅是前者增加了紧凑功能。7、对换•对换技术:把内存中暂时不能运行的进程或暂时不用的程序和数据,调出到外存上,以便腾出更多的内存空间;三、储存器的管理方式Home1、分页管理方式•页面与页表:将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面;系统又为每个进程建立一张页面映射表,简称页表。地址变换机构:基本的:通过逻辑地址的页号与页表寄存器的页表始地址相加,得出该页号在页表中的页表项地址,从该页表项得出与该页号相对应的物理块号首地址,然后让物理块号首地址与逻辑地址的页内地址相加即可得出物理地址。(4)页面置换策略在请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放对换页的对换区,通常由于对换区常使用连续分配方式,而文件区采用离散分配方式,所以对换区的磁盘I/O速度比文件区的高。*系统有足够对换区空间,可以全部从对换区调入所需页面;*系统没有足够对换区空间,不会被修改的页面,从文件区调入,会被修改的,从对换区调入;*UNIX方式,未运行过的页面,从文件区调入,曾经运行过的,从对换区调入。(5)页面置换算法*最佳置换算法(Optimal):所选择的被淘汰页面,将是以后永不使用或最长时间不被访问的页面;*先进先出置换算法(FIFO):先进的页面先被置换;*最近最久未使用置换算法(LRU):每个页面增加一个访问字段,记录该页面有多久没被访问过了,最近最久未使用的页面先被置换;*Clock置换算法:每个页面增加两个访问字段A和M,A记录最近是否被访问(0表示未被访问),M记录是否被修改(0表示未被修改);分三步寻找淘汰页面:第一步首先寻找(A=0,M=0)的页面,第二步寻找(A=0,M=1)的页面,并将所有A置0,第三步重复第一步,必要时重复第二步,此时一定能找到淘汰页面(A=0,M=0)或(A=0,M=1);Home