操作系统(三)

地址

  • 物理地址
  • 逻辑地址

内存碎片问题

**空闲内存不能被利用
**

  • 外部碎片:在分配单元间的未使用内存
  • 内部碎片:在分配单元内的未使用内存

连续内存分配

  1. 单一连续分配:将内存分为系统区(内存低端,分配给OS用)和用户区(内存高端,分配给用户用)。采用静态分配方式,即作业一旦进入内存,就要等待它运行结束后才能释放内存。

  2. 固定分区分配:
    内存空间的划分:将内存空间划分为若干个固定大小的分区,除OS占一区外,其余的一个分区装入一道程序。分区的大小可以相等,也可以不等,但事先必须确定,在运行时不能改变。即分区大小及边界在运行时不能改变。系统需建立一张分区说明表或使用表,以记录分区号、分区大小、分区的起始地址及状态(已分配或未分配)

  3. 动态分区分配:不事先将内存划分成一块块的分区,而是在作业进入内存时,根据作业的大小动态地建立分区,并使分区的大小正好适应作业的需要。因此系统中分区的大小是可变的,分区的数目也是可变的。

    • 基于顺序搜索的动态分区分配算法:

      • 首次适应算法
      • 循环首次适应算法
      • 最佳适应算法
    • 基于索引搜索的动态分区分配算法:

      • 伙伴系统
      • 哈希算法
  4. 动态重定位分区分配:动态运行时装入的方式,将相对地址转换为物理地址的工作在程序指令真正要执行时才进行。地址转换需要重定位寄存器的支持。程序执行时访问的内存地址是相对地址与重定位寄存器中的地址相加而成。地址变换过程是在程序执行过程期间,随着对每条指令的访问自动进行的,称为动态重定位。
    ** 真正访问地址=相对地址+重定位寄存器中地址**

posted @ 2020-03-18 22:30  tianqibucuo  阅读(136)  评论(0)    收藏  举报