Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1733699
  • 博文数量: 782
  • 博客积分: 2455
  • 博客等级: 大尉
  • 技术积分: 4140
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-06 21:37
个人简介

Linux ,c/c++, web,前端,php,js

文章分类

全部博文(782)

文章存档

2015年(8)

2014年(28)

2013年(110)

2012年(307)

2011年(329)

分类:

2012-04-14 10:28:15

原文地址:内存的分配方式 作者:glinuxi

内存的分配方式:
  • 单一连续分配:一种简单的存储管理方式,但是只适用于单用户、单任务的操作系统。这种方式将内存分为系统区和用户区两部分,系统区仅仅供给OS使用,通常在低地址,用户区供给用户使用。
  • 固定分区分配:将内存的用户空间划分为若干固定大小的区域,每一个分区只装入一道作业,这样,将用户空间划分为几个分区,就允许几道作业并发运行。可用于多道程序的存储管理方式,存在内部碎片。含有分区大小相等和分区大小不等两种划分方法。
  • 动态分区分配:根据进程的实际需要,动态为之分配内存空间。对于空余空间的管理方式有:空闲分区表和空闲分区链两种模式,分区分配算法:首次适配算法、循环适配算法、最佳适配算法。分配操作:1>分配内的预留大小>=size 2> 回收内存,并且做出的相应的合并。
  • 分段存储管理:在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息,每个段都有自己的名字。为了实现简单起见,通常可用一个段号来代替段名,每个段都从0开始编址,并采用一段连续的地址空间。段的长度由相应的逻辑信息组的 长度决定,因而各段长度不等。整个作业的地址空间由于是分成多个段,因而是二维的,亦即,其逻辑地址由段号(段名)和段内地址所组成。
  • 分页存储管理:离散分配的基本单位是页,则称为分页存储管理方式。
       1>对于正常运行的进程需要的最少块数?
       2>物理块数的固定
       3>分配的依据
          方式1:固定分配局部置:对于每个进程分配的物理块数固定、并且如果某个进程的物理块数用完后,要更换新的页面的范围只能是该进程的物理块数。
         方式2:可变分配局部置换:对于某个进程先分配一些数据块,如果运行的过程发现数目不够,可以再多分配多个物理块。但是进程物理块的换入换出的范围处于该进程物理块的范围。
         方式3:固定分配全局置换:对于每个进程分配的物理块数固定、并且如果某个进程的物理块数用完后,不会立即去换出,他会去查看系统有无其他的空闲页面。
         方式4:可变分配全局置换:对于某个进程先分配一些数据块,如果运行的过程发现数目不够,可以再多分配多个物理块。但是如果仍然需要换入换出话,也会针对所有进程的置换。
        页面置换算法
         最佳分配算法:他是一种理想化的算法,它具有最好的性能。它选择的淘汰的页面是最长(未来)时间内不被调用,采用最佳置换算法,通常可保证获得最低的缺页率。
         先进先出算法:总是淘汰最先进入内存的页面,即选择载内存中贮存时间很久的页面的淘汰。
         最久最未使用的算法:根据页面调入内存后的使用情况进行的决策。由于无法预测各页面将来的使用情况,只能利用的“最近的过去”作为“最近的将来”的近似。
    Clock置换算法:在页表中有一个位: A :是否被访问过。M/D:是否被修改过,该算法的思想是;检测页的访问位A,如果为1则将A改为0;如果A为0,则换出。
         改进
          <1>从指针所指示当前开始位置开始,扫描循环队列,寻找A=0且=0的第一个类页面,将所遇到的第一个页面,将所遇到的第一个页面作为所选中的淘汰页,第一次扫描期间不改变访问位A.
          <2>如果第一次失败,即查找一周后未遇到第一个页面,则开始第二轮扫描,寻找A=0且M=1的第二类页、面,将所遇到的第一个类页面作为淘汰。第二轮扫描期间,将所有的页面的访问位都置为0
          <3>如果第二步也失败,亦即未找到第二类页面,则将指针返回开始的位置。并将所有的访问位复0,然后重复第一步,如果仍然失败,必要时再重复第二步,此时一定能够找到重复的页。
  • 段页式存储管理:对于页式机制提高了页面的利用率,对于段式机制有利于共享,为了结合段、页的优势产生了段页式,即:将用户程序分成若干个段,并为每一个段分成若干的页。段页式系统中,其逻辑地址结构由段号、段内页号、页内地址三部分构成。原理:从段表寄存器(段表基址、段表长度)中取出段表基址与逻辑地址的段号结合在段表中找到对的段表项,从表项中取得页基址与页号进程结合找到对应的页表项,从页表项中获取块号和页内地址结合得到物理地址。


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