Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25657
  • 博文数量: 15
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 196
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-22 13:23
文章分类
文章存档

2014年(1)

2013年(14)

我的朋友

分类: PHP

2013-11-28 15:00:21


操作系统存储器管理笔记

一操作系统装入程序到内存中几种方法:
  1:绝对装入方式(Absolute Loading Mode):
  即程序在编译时就产生物理地址的目标代码,编译完成后,不在需要对程序和数据进行修改,程序员也可以在程序中赋值物理地址。
  缺点:不灵活,要求程序员对内存相当熟悉,只适用于单道程序环境。
  2:静态重定位装入方式(Relocation Loading Mode):
  即程序在编译时使用的是逻辑地址,在装入的时候,临时将逻辑地址转换成物理地址。到内存中后的地址为物理地址。这种方法叫做静态重定位装入。
  缺点:不灵活,当进程有需要动态改变地址时则无法改变。
  3:动态重定位装入方式(Dynamic Run-time Loading)
  即程序在装入内存之后,在内存中仍然使用逻辑地址,只有在取该数据时,才转换成物理地址。这样做会影响到程序的执行速度。因此,一般将转换成物理地址的过程做成硬件来完成转换,需要添加一个地址转换寄存器来支持。
  二 程序的链接过程
  1:静态链接(Static Linking)
  程序在编译之后形成目标模块,然后将目标模块和库函数组合成一个模块,不再分开的链接。
  缺点:消耗内存的资源很大,往往有的库函数或模块在程序的运行过程中没有使用,极大的浪费了内存空间。
  2:装入是动态链接(Load-time Dynamic Linking)
  程序在编译时形成目标模块代码,在需要调入内存时,链接成一个模块装入内存。
  缺点:和静态链接一样,对内存消耗大。
  3:运行时动态链接(Runtime Dynamic Linking)
  程序在编译时形成目标模块,在调入内存时调入需要执行的代码模块,当用到某个库函数或模块式时,由操作系统动态的调入内存执行。
  三 内存连续分配方式
  1:单一连续内存分配
  把内存区域中划分OS分区和应用进程区域两大块,互不干涉。在应用进程区域的内存按照单一的连续分配原则分配给各个进程。
  使用范围:单用户,单任务的操作系统中。如CP/M,MS-DOS操作系统。
  2:固定分区分配
  a.固定分区大小一致分配
  将内存划分为大小一致的多个分区,这种分配方式缺乏灵活性,当进程太小造成空间浪费,太大则无法分配空间,导致装入失败。
  b.固定分区大小不一致分配
  将内存划分为大小不一致的多个分区。这样可根据进程大小适当分配区域。
  分配具体操作:将各个分区按照大小排队,用一张分区表存储,该表中包含分区的大小,起始地址,和使用情况
  使用范围:IBM360的MFT

阅读(662) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~