Chinaunix首页 | 论坛 | 博客
  • 博客访问: 427412
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类: Oracle

2008-06-18 00:13:44

内存的调度管理

内存管理是操作系统的五大功能之一,一个主要的任务就是内存空间的调度,为需要放入内存的数据分配空间,将不再需要的数据移出内存。对内存的管理,可以采用多种管理方式,主要有:分页存储管理、段式存储管理、段页式存储管理。由于分页存储管理,处理简单,实现方便,所以大多数操作系统都采用这种方式。

分页存储管理的基本原理,就是将内存空间分成大小相同的页,同时外部存储空间也按照相同的尺寸分页,数据以页为单位从磁盘读入内存,以页为单位从内存写回磁盘。使用页表对内存空间中的页进行管理。

内存页的调度管理,可以分为两个方面:(1)请求调页管理,2)请求淘汰换页管理

 

1. 请求调页管理

 

系统在处理数据时,首先检查所需数据是否已经调入内存。如果调入内存,则直接使用;如果没有调入内存,则产生缺页中断,以装入所需数据页。这就是请求调页管理。其缺页调度过程见图3-1

 

 

请求调页管理的关键是确定内存中是否存在所需数据,这是使用页表来实现的。页表记录了放入内存中的数据,系统通过对这个表的查询,来决定所需数据页是否在内存中。如何实现页表的快速扫描,是操作系统必须要考虑的问题。另外,数据读入内存以及从内存中移走,都需要对页表进行维护,以反映内存中数据的真实情况。

 

2. 请求淘汰换页管理

 

请求淘汰换页管理,决定内存中那些数据被移走。由于内存空间总是小于磁盘空间,不可能将所有数据全部、同时地装入内存。在出现缺页中断并且内存中没有空闲的页时,就需要首先从内存中调出当前不再使用的数据页以释放空间。

对请求淘汰换页管理,可以使用多种页面调度算法,主要有:先进先出算法(first input first outputFIFO)、循环检测算法、最近最少使用算法(least recently usedLRU)、最优淘汰算法(optimal replacement algorithmOPT)等等。

最近最少使用算法的出发点是:如果某页被访问,则该页可能再次被访问。或者反过来说,如果某页很长时间没有被访问,则该页在最近一段时间内也不会被访问。该算法被广泛使用,实现时也需要页表。通过页表中数据页的排列顺序,表明那些页最近被访问、那些页很长时间没有被访问。和最近最少使用算法相对应的是最近最多使用算法(most recently usedMRU)。

需要说明的是,对请求调页管理和请求淘汰换页管理所使用页表的维护,需要消耗系统资源。由于多个处理可能同时引起页表的更新,系统在更新页表前需要对页表加锁,以防止页表被破坏。也正是由于使用锁,系统中可能会存在页表的竞争,引起系统性能的下降。系统自动完成页表的维护,用户不能直接控制,但可以通过改变数据的使用方式,达到影响页表使用的目的。

 

3. 数据库系统的内存调度管理

 

对数据库系统来说,内存空间被划分为多个部分。除进程缓冲区之外,其他部分都是共享内存,每一部分都需要页表,以实现它的请求调页和请求淘汰换页管理。对系统的整个内存空间,按照功能的不同,划分为多个部分进行单独管理,减少了页表所管理内存空间的范围,能极大地提高页表的搜索速度,降低事务之间的互相竞争。

对请求调页管理,自然希望要处理的数据都已经调入内存,避免进程的等待。数据库系统提供了异步预取进程,在处理大数据量时可以事先将要处理数据读入内存。对请求淘汰换页管理,数据库系统采用了最近最少使用算法,通过将最近最少使用数据写入磁盘而获取内存空间。对该算法的实现,不同数据库系统有不尽相同的实现方式。

数据库系统中的大部分数据处理在用户缓冲区中完成,因此这部分内存空间的调度管理尤为重要。一些数据库系统公开了其请求淘汰换页管理的实现机制,用户可以通过配置参数的更改来影响它的执行动作。

如果数据库系统中存放用户数据的表空间使用了不同的页尺寸,就需要在系统中建立不同页尺寸的内存缓冲区,以存取这些表空间中的数据。这是内存的分页存储管理方式所决定的。

阅读(913) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~