码迷,mamicode.com
首页 > 其他好文 > 详细

*存储管理-3

时间:2014-04-29 13:15:21      阅读:392      评论:0      收藏:0      [点我收藏+]

标签:操作系统基础知识

2.3存储管理

存储器管理的对象是主存储器(主存、内存)。

主要功能包括:分配 回收主存空间  提高主存利用率扩充主存 对主存信息实现有效保护

2.3.1 基本概念

 

1.      存储器的结构

一般结构有两种:寄存器主存外存

                寄存器缓存主存外存

存储组织的功能:是在存储技术和CPU寻址技术许可的范围内组织合理的存储结构,

                使得各层次的存储器都处于均衡的繁忙状态

(1)       虚拟地址:对程序员来说,数据的存放地址是由符号决定的,故称为符号名地址

他是从0号单元开始编址,并顺序分配所有符号名所对应的地址单元。由于符号名地址不是主存中的真实地址,因此也称为相对地址,程序地址,逻辑地址,虚拟地址。

(2)       地址空间。把程序中由相对地址组成的空间叫做逻辑地址空间。相对地址空间通过

地址再定位机构转换到绝对对地址空间,绝对地址空间也叫物理地址空间。

总结:逻辑地址空间是逻辑地址的集合,物理地址空间是物理地址的集合。

 

2.      地址重定位。

将逻辑地址转换成主存物理地址的过程称为地址重定位。

地址重定位分为 静态地址重定位和动态地址重定位。

(1)      静态地址重定位就是程序装入主存时已经完成了变换。

优点:无须硬件地址变换机构的支持。它只要求程序本身是可重定位的

缺点:必须给作业分配一个连续的存储区域,在作业的执行期间不能扩充存储空间,也不能在主存中移动,多个作业难以共享主存中的同一程序副本各数据。

(2)      动态地址重定位。就是程序运行期间完成交换。

优点:程序执行期间可以换入和换出主存,程序可在主存中移动,可以充分利用空间。可买实现共享。

 

23.2存储管理方案

存储管理的主要目的是解决多个用户使用主存的问题。

主要包括 分区存储管理、分页存储管理、分段存储管理、段页式存储管理、虚拟存储管理

(1)       分区存储管理,早期的方案,

 按分区的划分方式分为 固定分区、可变分区 、 可重定位分区

固定分区:一种静态分区方式

可变分区:一种动态分区方式

可重定们分区。解决了碎片问题,基本思想是,移动所有已分配好的分区,使之成为连续区域,有代码,地址发生变化,所以有地址重定位问题。

分区的保护:通常采用上界和下界寄存器

            上界寄存器存放作业的装入地址。下界寄存器装入作业的结束地址

             形成的物理地址必须满足

             上界寄存器<=物理地址<=下界寄存器            

 

或者采用基址寄存器和限长寄存器,

基址寄存器存放作业的装入地址,限长寄存器存入作业的长度,

形成的物理地址必须满足:

 基址寄存器<=物理地址<=基址寄存器+限长寄存器

2.3.3         分页存储管理

解决用户程序必须装入连续的地址空间中,在分区管理方案中,如果满足不了,则需要进行分区靠拢操作,这样耗费系统时间,为此,引入分页存储管理方案

 

1.      纯分页存储管理

1) 分页原理

 将一个进程的地址空间划分成若干个大小相等的区域,称为页,相应地,将主存空间划分成与页相同大小的若干个物理块,称为块或页框,为进程分配主存时,可将进程中若干页分别装入多个不相邻接的块中。

2) 地址结构

分页系统的地址结构图2-10所示

特点:32位,注意看图

mamicode.com,码迷

1)  页表

将进程的每一页离散地分配到内存的多个物理块中后,系统就保证能在内存中找到每个页面所对应的物理块,为此,系统为每个进程建立了一张页面射表,简称页表

mamicode.com,码迷

2.快表

 

2.3.4分段存储管理

段是信息的逻辑单位。因此分段系统的一个突出优点是易于实现段的共享,即允许若干个进程共享一个或多个段,可简单地实现段的保护。在实现程序和数据的共享时,常常以信息的逻辑单位为基础,分页系统中的每一页只是存放信息的物理单位,其本身没有完整的意义,因而不便于信息共享,而段却是信息的逻辑单位,有利于信息的共享和保护。

1.      分段的基本原理

在分段存储管理方式中,作业的地址空间被划分为若干段,每段是一组完整的逻辑信息,

都是从零开始编址的一段连续的地址空间,各段长度不等,允许一个作业最多有64k段,

每段的最大长度为64kb

mamicode.com,码迷

在分段式存储管理系统中,为每段分配一个连续的分区,进程 中和段可以离散地分配到内存的不同分区,在系统中为每个进程建立一张段映射表,段表。每段在表中占有一表项,其中记录了该段在内存中的起始地址(基址)。和段的长度。利用段表寄存器中段表长度与逻辑地址中的段号比较,若段号超过段表长度则产生越界中断。

mamicode.com,码迷

2.3.4虚拟存储管理

前面介绍的存储管理方案中,必须为每个作业分配 足够的空间,装入全部信息,当主存空间不能满足作业要求时,作业便无法装入主存执行。虚拟存储管理解决了这一问题。

即装入部分内容便可运行,其余部分暂时留在磁盘上,需要时再装入主存。

1.      虚拟存储器的实现

虚拟存储器具有请求调入功能和置换功能,可以把作业的一部分装入主存使其开始运行,能从逻辑上对主存容量进行扩充。虚拟存储器的逻辑容量由主存和外存容量之和以及CPU可寻址的范围来决定,其运行的速度接近于主存速度。虚拟存储器实现主要有以下三种方式。

1)。请求分页系统。

在分页系统的基础上,增加了请求调页功能和页面置换功能形成的页式虚拟存储系统。它允许只装入若干页的用户程序和数据(而非全部程序),就可以启动运行,以后再通过调页功能和页面转换功能,陆续把将要使用的页面调入主存,同时把暂不运行的页面置换到外存上,置换时以页面为单位。

(1)      请求分段系统。在分段系统的基础上。。。以请求分页系统雷同,只不过它是以段为单位的,注意是段,而不是页。

(2)      请求段页式系统,在段页式系统的基础上,增加了请求调页和页而置换功能 所形成的段页式虚拟存储系统。

2.      请求分页管理的实现

请求分页是在纯分页系统的基础上,增加了请求调页功能、页面转换功能所形成的页式虚拟存储系统,是目前常用的一种虚拟存储器的方式。

请求分页的是在纯分页系统的基础上,增加了请求调页功能、页面置换功能所形成的页式虚拟存储系统,是目前常用的一种虚拟存储器的方式。

 请求分页的页表机制是在纯分页的页表机制上形成的,由于只将应用程序的一部分调入主存,还有一部分仍在外存上,故需在页表中再增加若干项,如状态位、访问字段、辅存地址等供程序在换进、换出参考。

 ***在请求分页系统中,每当所要访问的页面不在主存时,便产生一个缺页中断,请求调入所缺的页,缺页中断与一般中断的主要区别在于,缺页中断在指令执行期间产生和处理中断信号,而一般中断在一条指令执行结束后,下一条指令开始执行检查和处理中断信号,缺页中返回到被中断指令的开始重新执行该指令,而一般中断返回到下一条指令执行,一条指令在执行期间,可能会产生多次缺页中断。

3.      页面置换算法

在进程运行过程中,如果发生缺页而内存又无空闲块时,为了保证进程能正常运行,不必须从内存中调出一页程序或数据送入磁盘的对换区。但究竟将哪个页面调出,需要一个页面置换算法来确定,常用的页面转换算法如下:

1) 最佳(optimal)置换算法

该算法选择那些不使用的,或是在最长时间内不再被访问的页面置换出去,但要确定哪一个页面是未来最长时间不再被访问的,很难估计。

mamicode.com,码迷

分析:当进程访问页面5时,产生缺页中断,根据最佳置换算法,页面0将在第18次才访问,是三页中将最久不被访问的页面。所以被淘汰。依此类推。

1) 先进先出(FIFO)置换算法

该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最入的页面予以淘汰,该算法实现简单,只需把一个进程中已调入内存的页面按先后次序链接成一个队列即可,但是性能差,会发生Belady异常现象,所谓Belady现象,是指如果对一个进程未分配它所要求 的全部页面,有时就会出现分配的页面数增多但缺页率反而提高的异常现象,例:对页面访问序列为 ABCDABEABCDE,物理块从3块增加到4块,缺页次数增加.

mamicode.com,码迷

1) 最近最少未使用(Least  Recently Used,LRU)置换算法

 选择最少使用的页面予以淘汰,系统在每个页面设置一个访问字段,用以记录这个页面自上次被访问以来所经历的时间T,当要淘汰一个页面时,选择T最大的页面。

 

4)最近未用(Not Used Recently,NUR)置换算法

最近一段时间未引用过的页面换出,与LRU近似,该算法为每个页面设置一位访问位,将内存中的所有页面通过链接指针连成一个循环队列,当某页被访问时,其访问位置1,在选择一页淘汰时,就检查其访问位,如果是0,就选择该页换出。



*存储管理-3

标签:操作系统基础知识

原文地址:http://blog.csdn.net/forebe/article/details/24664187

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!