欢迎来到天天文库
浏览记录
ID:38788685
大小:1.98 MB
页数:137页
时间:2019-06-19
《《存储器管理》课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章 存储器管理4.1存储器的层次结构4.2程序的装入和链接4.3连续分配方式4.4基本分页存储管理方式4.5基本分段存储管理方式4.6虚拟存储器的基本概念4.7请求分页存储管理方式4.8页面置换算法4.9请求分段存储管理方式14.1存储器的层次结构4.1.1多级存储器结构1.存储器功能合理、安全、有效地保存数据2.存储器发展方向接口更新以硬盘为例:ESDI;IDE/EIDE;ATA;SATA/SATA2;SCSI;IEEE1394;USB…高速性以USB为例:USB1.1是12Mbps,USB2.0是480Mbps,USB
2、3.0理论上是5Gbps…存储密度越来越高,体积越来越小1.7Mb/平方英寸;20Mb/平方英寸;1.43Gb/平方英寸;135Gb/平方英寸;620Gb/平方英寸;1Tb/平方英寸…23容量越来越大,价格越来越低以下是近年来关于硬盘价格的趣味数字1995年200MB~400MB大于4000元/GB1996年1.2GB~2.1GB1500元~2000/GB1998年1.2GB~2.1GB200元~250元/GB2000年4.3GB~6.4GB40元/GB2002年10GB~20GB20元/GB2004年40GB~80GB6.9
3、元/GB2005年80GB~160GB4.5元/GB2006年80GB~250GB3.8元/GB2008年160GB~1TB1.6元/GB2009年500GB~2TB0.8元/GB2010年500GB~2TB0.6元/GB43.存储器层次结构速度最快最慢容量最小最大单位成本最贵最廉寄存器高速缓存主存磁盘缓存磁盘可移动存储介质CPU主存辅存图4-1计算机系统存储层次示意54.存储管理功能存储分配与回收本章主要内容,讨论其算法和数据结构地址变换可执行文件生成中的链接技术;程序装入时的重定位技术;进程运行时的地址变换技术和机构(软件
4、、硬件)存储共享和保护代码和数据共享;对地址空间的访问权限(读、写、执行)存储器扩充由用户应用程序控制:覆盖Overlay由OS控制:交换Swapping;请求调入和预调入OnDemand&OnPrefetch64.1.2主存储器与寄存器1.主存储器主存储器(简称内存或主存)是计算机系统中一个主要部件,用于保存进程运行时的程序和数据,也称可执行存储器,材质以DRAM为主。由于主存储器的访问速度远低于CPU执行指令的速度,为缓和这一矛盾,在计算机系统中引入了寄存器和高速缓存。72.寄存器寄存器访问速度最快,完全能与CPU协调工作
5、,但价格却十分昂贵,因此容量不可能做得很大。寄存器的长度一般以字(word)为单位。寄存器的数目,对于当前的微机系统和大中型机,可能有几十个甚至上百个;而嵌入式计算机系统一般仅有几个到几十个。寄存器通常用于加速存储器的访问速度,如用寄存器存放操作数,或用作地址寄存器加快地址转换速度等。84.1.3高速缓存和磁盘缓存1.高速缓存高速缓存是现代计算机结构中的一个重要部件,其容量大于或远大于寄存器,而比内存约小两到三个数量级左右,从几十KB到几MB,访问速度快于主存储器。根据程序执行的局部性原理(即程序在执行时将呈现出局部性规律,在
6、一较短的时间内,程序的执行仅局限于某个部分),将主存中一些经常访问的信息存放在高速缓存中,减少访问主存储器的次数,可大幅度提高程序执行速度。92.磁盘缓存由于目前磁盘的I/O速度远低于对主存的访问速度,因此将频繁使用的一部分磁盘数据和信息,暂时存放在磁盘缓存中,可减少访问磁盘的次数。104.2程序的装入和链接在多道程序环境下,要使程序运行,必须先为之创建进程。而创建进程的第一件事,便是将程序和数据装入内存。如何将一个用户源程序变为一个可在内存中执行的程序,通常都要经过以下几个步骤:首先是要编译,由编译程序(Compiler)将
7、用户源代码编译成若干个目标模块(ObjectModule);其次是链接,由链接程序(Linker)将编译后形成的一组目标模块,以及它们所需要的库函数链接在一起,形成一个完整的装入模块(LoadModule);最后是装入,由装入程序(Loader)将装入模块装入内存。图4-2示出了这样的三步过程。本节将扼要阐述程序(含数据)的链接和装入过程。11图4-2对用户程序的处理步骤程序员编译Compile若干目标模块.OBJ源程序.C链接Link库函数Lib装入模块.EXE装入Load内存进程进程调度CPU124.2.1程序的链接链接:
8、若干目标模块+库函数可装入模块根据链接时间的不同,可把链接分成如下三种:(1)静态链接。在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开。我们把这种事先进行链接的方式称为静态链接方式。(2)装入时动态链接。这是指将用户源程序编译后所得
此文档下载收益归作者所有