zoukankan      html  css  js  c++  java
  • [OS] 第四章 存储器管理

     用户程序的主要处理阶段
       连续分配方式
      虚拟存储器的基本特征
      分页、分段存储管理技术       
     存储管理的功能
     (1) 内存分配——为每个进程分配一定的内存空间
     (2) 地址映射——把程序中所用的相对地址转换成内存的物理地址
     (3) 内存保护
     (4) 内存扩充
     程序的装入和链接
    从用户的源程序进入系统到相应程序在机器上运行,所经历的主要处理阶段有             ,
     编译阶段 ,连接阶段,装入阶段和 运行阶段。
     
     1), 编译程序:将用户源代码编译成若干个目标模块;
     2), 链接程序:将一组目标模块及它们所需要的库函数链接在一起,形成一个完整的装入模块
     3), 装入程序:将装入模块装入内存。  
     内存空间(或物理空间、绝对空间)由内存一系列存储单元所限定的地址范围  
     逻辑地址空间(或地址空间)由程序中逻辑地址组成的地址范围
     -相对地址(或逻辑地址)
        用户程序经编译之后的每个目标模块都以0为基地址顺序编址,这种地址称为相对地址
     -绝对地址(或物理地址)
    **程序的装入
    	1.绝对装入方式 {
    	 逻辑地址与实际地址相同
    	 要求程序员熟悉内存的使用情况
    	 通常在程序中采用符号地址
    	}
    	2.可重定位装入方式 {
    	 目标模块从0编址,其它地址相对于起始地址计算
    	 重定位:装入时对目标程序中指令和数据的修改过程。地址映射
    	}
      3.动态运行时装入方式 {
       在程序执行时将相对地址转换成为绝对地址
       允许程序在内存中移动
      }
     程序的链接
     (1)静态链接。
     (2)装入时动态链接。
     (3)运行时动态链接。 
    1) 静态链接 :执行前将目标模块和它们的库函数,连接成一个完整的装配模块。
      两个问题:
          对相对地址修改
          变换外部调用标号
    2) 运行时动态链接
    -连续分配方式 有 4 种
    为一个用户程序分配一个连续的内存空间。
    分为:
     1)单一连续分配 {
      内存分系统区和用户区,系统区供os使用
      在内存中仅驻留一道程序,整个用户区为一用户独占。
      这种分配方式仅能用于单用户、单任务os中.
      如:MS-DOS    CP/M
     }
     2)固定分区分配 {
      最简单的多道程序的存储管理方式
      将内存分为几个固定大小的区域,每个区域装入一道作业。
     }
     3)动态分区分配 {
      数据结构
      分区分配算法
      分配与回收操作
     }
     4)动态重定位分区分配 
     
     系统区           分区1                  分区 1
                      分区2 
                      分区3                  分区 2
                      分区4
                      分区5
     用户区           分区6                  分区 3
                       ……
    单一连续分配  固定分区分配(分区相等)固定分区分配(分区不等)
    分区分配操作
      1)分配内存 {
       设请求的分区大小:u.size
       设空闲分区大小: m.size
       不可再切割的剩余分区大小:size
       如果m.size- u.size≤ size将整个分区分配给请求者,否则剩余部分留在空闲分区链(表)中。
       将分区的首址返回给调用者
      }
      2)回收内存 {
       当进程释放内存时,系统根据回收区的首值,从空闲区链(表)中找到相应的插入点,回收区可能出现四种情况:
      (1)与插入点的前一个空闲区F1相邻接。
      (2)与插入点的后一空闲分区F2相邻接。
      (3)同时与插入点的前、后两个分区邻接。
      (4)既不与F1邻接,又不与F2邻接。
      }
    **动态重定位的引入 ****
      操作系统     碎片:内存中不能被利用的小分区称为“零头”或“碎片”。--------
     用户程序1
       10KB
     用户程序3
       30KB
     用户程序6
       14KB
     用户程序9
       26KB 
     操作系统   分散的小分区拼接成一个大分区的方法,称为“拼接”或“紧凑”---------
     用户程序1
     用户程序3
     用户程序6
     用户程序9
       80KB
    动态重定位的实现
     地址变换过程是在程序执行期间,随着对每条指令或数据的访问自动进行的,故称为动态重定位。
     增设硬件机构:重定位寄存器
    动态重定位分区分配算法
     增加了紧凑功能
     设请求的分区大小:u.size
     设空闲分区大小: m.size
     不可再切割的剩余分区大小:size
    *对   换*  差不多中级调度
     把内存中暂时不能运行的进程或者暂时不用的程序和数据调到外存,把已具备条件的进程或进程所需数据调入内存。
     -对换分类- {
      整体对换:以整个进程为单位,
              又称进程对换。
      部分对换:
      (1)页面对换:以“页” 为单位
      (2)分段对换:以 “段”为单位
     }
      进程对换实现功能:
          对换空间的管理
          进程的换出
          进程的换入
     对换空间的管理
      文件区        为提高空间利用率采用离散分配方式
      
      对换区        为提高对换速度采用连续分配方式
      -外存-

  • 相关阅读:
    python中的深拷贝和浅拷贝
    Andrew NG 机器学习编程作业6 Octave
    Andrew NG 机器学习编程作业5 Octave
    梯度下降算法对比(批量下降/随机下降/mini-batch)
    无监督算法
    深度学习的方差与偏差
    Andrew NG 机器学习编程作业4 Octave
    数据约束
    数据库的查询
    MySQL的入门与使用,sqlyog对数据库,表和数据的管理
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787077.html
Copyright © 2011-2022 走看看