OS系列 2-1

存储器管理

存储器概述

程序的链接和装入

存储分配(管理)方式
连续分配
离散分配
虚拟存储器

存储器概述

存储器层次结构

寄存器
    寄存器具有与处理机相同的速度。主要用于存放处理机运行时的数据。如用寄存器存放操作数,或用作地址寄存器加快地址转换速度等。
高速缓存
    是介于寄存器和主存储之间的存储器,用于备份主存中常用的数据。
    主要的用途是局部性原理
主存储器
    主存储器简称内存或主存。由于主存储器的访问速度远低于 CPU 执行指令的速度,为缓和这一矛盾,在计算机系统中引入了寄存器和高速缓存。
磁盘缓存
    并不是实际存在的介质,只要是在主存中占用一块地址来存储从磁盘读取的数据缓存。
固定磁盘    
可移动存储介质

存储器管理的功能

内存保护:防止因用户程序错误 破坏 系统或其他用户,防止程序之间的相互干扰
内存分配:对内存进行分配
地址映射:将逻辑地址转换为物理地址
内存扩充:在逻辑上为用户提供一个比实际内存更大的存储空间

程序的链接和装入

用户程序要在系统中运行,必须先将它装入内存,然后再将其转变为一个可执行程序

基本的步骤:

编译:将用户源代码编译为多个目标模块
链接:将目标模块和所需要的库函数链接在一起,形成完整的装入模块
装入:通过装入程序,装入到内存

链接方式

静态链接
    在程序运行之前,将各个目标模块与他们所需要的库函数进行连接,形成一个完整的装配模块,以后不在拆开。
装入时动态链接
    在目标模块在装入内存时才进行链接,便于装入前的更新和修改
运行时动态链接
    在程序执行的时候才进行链接。即使在执行的时候,载入被调用的模块,然后执行一系列的操作,如果没有调用,则不会进行操作,有利于程序的转入,节省内存空间

装入方式

绝对装入方式
    运行单道程序的时候的方式。装入模块被装入内存后,程序中的逻辑地址与实际内存地址完全相同
可重定位装入》》静态重定位
    在多道程序中,因为多个目标模块的起始位置都是0,所以,需要采用重定向的方式,对目标程序的指令和数据进行修改。
动态运行时装入 》》动态重定位
    需要重定位寄存器的支持,因为程序在内存中发生了移动,所以,不能将模块的装入的地址转化为绝对地址,只有在程序正真正的执行时候,才转化为绝对地址