操作系统核心原理-5.内存管理(下):段式内存管理

一、分页系统的缺点

  分页系统存在的一个无法容忍,同时也是分页系统无法解决的一个缺点就是:一个进程只能占有一个虚拟地址空间。在此种限制下,一个程序的大小至多只能和虚拟空间一样大,其所有内容都必须从这个共同的虚拟空间内分配。

二、分段管理系统

2.1 何为分段管理

  分段管理就是将一个程序按照逻辑单元分成多个程序段,每一个段使用自己单独的虚拟地址空间。例如,对于编译器来说,我们可以给其5个段,占用5个虚拟地址空间,如下图所示:

  如此,一个段占用一个虚拟地址空间,不会发生空间增长时碰撞到另一个段的问题,从而避免因空间不够而造成编译失败的情况。如果某个数据结构对空间的需求超过整个虚拟之地所能够提供的空间,则编译仍将失败。不过出现这种可能的概率恐怕不会比太阳从西边出来的概率高出多少。

2.2 分段管理优缺点

  优点:

  (1)每个逻辑单元可单独占用一个虚拟地址空间,这样使得编写程序的空间大为增长。

  (2)由于段式按逻辑关系划分,因此共享起来十分方便。

  (3)对于空间稀疏的程序来说,分段管理将节省大量的空间。

  缺点:

  (1)外部碎片和一个段必须全部加载到内存。

  那么,解决办法是什么呢?分页,不过这次的分页不是前面提到的直接对程序进程进行分页,而是对程序里面的段进行分页,于是就形成了所谓的段页式内存管理模式。

三、段页式内存管理

3.1 何为段页式内存管理

  段页式管理就是将程序分为多个逻辑段,在每个段里面又进行分页,即将分段和分页组合起来使用。这样做的目的就是想同时获得分段和分页的好处,但又避免了单独分段或单独分页的缺陷。

  如果我们将每个段看做一个单独的程序,则逻辑分段就相当于同时加载多个程序。

3.2 段页式内存管理的实现

  采用多级页表,顶级为段表,次级为页表。由段号在段表里面获得所应该使用的页表,然后在该页表里面查找物理页面号,如下图所示:

  如果需要,次级页表又可以再分为两个或者多个层次,形成层次更为丰富的段页式层次结构。

四、内存管理的演变

  (1)一开始,人们根据直觉,将一个程序作为一整段进行管理,从而形成了纯粹分段(固定加载地址、固定分区、非固定分区、交换)管理模式,也称为基本内存管理模式,这种模式由于直观易实现,曾经大为流行。

  (2)但是,纯粹分段存在重大缺陷(由于此种模式下一个程序只有一段,从而导致内存空间增长困难,外部碎片、程序不能超过物理内存容量、一个程序必须同时加载到内存才能执行等缺点),为了克服这些缺点,引入了页式内存管理模式。

  (3)显然,页式内存管理克服了纯粹分段的一系列缺点,但又存在共享不方便、一个程序只能在一个徐地址空间增长的问题,为了解决这个问题,引入了逻辑分段。逻辑分段将一个程序按逻辑关系分解为多个段,从而扩大了程序可以使用的虚拟地址空间并解决了共享难的问题。

  (4)但是,逻辑分段终究还是分段,自然又引入了分段的缺点。而要客服这些缺点,自然又想到了分页。这样,人们又引入了段页式管理模式。

  因此,内存管理模式经历了从纯粹分段到分页,再到逻辑分段,再到段内分页的演变过程,如下图所示:

参考资料

邹恒明,《操作系统之哲学原理》,机械工业出版社

 

转载于:https://www.cnblogs.com/edisonchou/p/5115242.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode—<双指针专项>剑指 Offer 18、21、22、25、52、57、58 - I

剑指 Offer 18. 删除链表的节点、21. 调整数组顺序使奇数位于偶数前面、22. 链表中倒数第k个节点、25. 合并两个排序的链表、52. 两个链表的第一个公共节点、57. 和为s的两个数字、58 - I. 翻转单词顺序 题目描述: [18] 给定单向链表的头指针和一个要删除的节点的值…

Android应用程序绑定服务(bindService)的过程源代码分析

Android应用程序组件Service与Activity一样,既可以在新的进程中启动,也可以在应用程序进程内部启动;前面我们已经分析了在新的进程中启动Service的过程,本文将要介绍在应用程序内部绑定Service的过程,这是一种在应用程…

Bootstrap系列 -- 8. 代码显示

一. Bootstrap中的代码块 代码块一般在博客中使用的较多&#xff0c;比较博客园中提供的贴代码. 在Bootstrap中提供了三种形式的代码显示 1. 使用<code></code>来显示单行内联代码 2. 使用<pre></pre>来显示多行块代码 3. 使用<kbd></kbd>…

PowerDesigner12对SQL2005反向工程问题.

用PowerDesigner12利用ODBC连接SQL2005进行反向工程&#xff0c;总分报错[Microsoft][ODBC SQL Server Driver][SQL Server]未能准备评语句SQLSTATE37000解决办法&#xff1a;把&#xff02;更改默认的数据库为&#xff02;这个选项去掉在中选择要进行操做的数据库.转载于:http…

LeetCode—<搜索与回溯专项>剑指 Offer 12、13、34、36、54

剑指 Offer 12. 矩阵中的路径、13. 机器人的运动范围、34. 二叉树中和为某一值的路径、36. 二叉搜索树与双向链表、54. 二叉搜索树的第k大节点 题目描述&#xff1a; [12] 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回…

导数--基本概念

转载于:https://www.cnblogs.com/liuys635/p/11242741.html

[导入]创建、查询、修改带名称空间的 XML 文件的例子

XML的应用越来越广泛了&#xff0c;如Vista、Flex编程都将使用 XML&#xff0c;正确掌握XML的各种操作&#xff0c;对提高编程效率至关重要。下面就是一个综合处理带名称空间的XML的例子。 文章来源:http://blog.csdn.net/net_lover/archive/2006/12/18/1447434.aspx 转载于:ht…

自己动手编写一个ajax extender

该扩展的功能有以下几点&#xff1a;1、当鼠标移到某个按钮上时&#xff0c;该按钮显示一个Css样式&#xff1b;2、当鼠标移开该按钮时&#xff0c;该按钮显示另外一个Css样式&#xff1b;3、当鼠标点击该按钮时&#xff0c;执行一个用户自己定义的javascript函数&#xff1b; …

LeetCode—<搜索与回溯专项>剑指 Offer 55 - I、55 - II、64、68 - I、68 - II

剑指 Offer 55 - I. 二叉树的深度、55 - II. 平衡二叉树、64. 求12…n、68 - I. 二叉搜索树的最近公共祖先、68 - II. 二叉树的最近公共祖先 题目描述&#xff1a; [55 - I] [55 - II] [64] 求 12…n &#xff0c;要求不能使用乘除法、for、while、if、else、switch、case等关…

Tip:使用Extender的ResolveControlID事件

1、分析 不知道大家在使用ASP.NET AJAX Control Toolkit里的各个Extender控件时&#xff0c;有没有接触过ResolveControlID事件&#xff1f;这个事件在官方也只用了很少的笔墨来描述。的确&#xff0c;这个事件不太常用&#xff0c;看看ASP.NET AJAX的演示站点&#xff0c;根本…

《算法导论》——MergeSort

前言&#xff1a; 在今后的日子里&#xff0c;我将持续更新博客&#xff0c;讨论《算法导论》一书中的提到的各算法的C实现。初来乍到&#xff0c;请多指教。 今日主题&#xff1a;   今天讨论《算法导论》第二章算法基础中的归并排序算法。下面是该算法的代码Merge.h&#x…

react 路由v6

这里是区别&#xff1a;V5 vs V6 这里是官网&#xff1a;可以查看更多高级属性 基本使用&#xff1a; 1、配置文件 src/routes/index import React from "react";const Home React.lazy(() > import("../Pages/Home")); const About React.lazy(()…

Win8下在Vmware11中安装使用苹果系统OS X 10.10

原文:Win8下在Vmware11中安装使用苹果系统OS X 10.10近来因为需要做 iOS 的项目&#xff0c;所以需要多花一些时间看看敲敲代码。因为自己手头上并没有 Mac&#xff08;过年为了闲的时候能玩玩游戏买了联想&#xff0c;唉&#xff09;&#xff0c;想想不能只靠每天在公司的时间…

《Windows Communication Foundation之旅》系列之二

《Windows Communication Foundation之旅》系列之二 三、WCF的技术要素作为基于SOA&#xff08;Service Oriented Architecture&#xff09;的一个框架产品&#xff0c;WCF最重要的就是能够快捷的创建一个服务&#xff08;Service&#xff09;。如下图所示&#xff0c;一个WCF…

centos 记录用户行为轨迹

遇到问题&#xff1a;公司增加了运维管理员&#xff0c;为确保服务器安全&#xff0c;和发生问题的时候好确认问题&#xff0c;需要记录每位服务器登陆者的行为轨迹。解决问题&#xff1a;linux script 命令正有如此强大的功能。满足我们需求。script记录终端会话。操作步骤&am…

Android内核剖析

--Android内核剖析 柯元旦 编著ISBN 978-7-121-14398-4 2011年9月出版定价&#xff1a;79.90元16开616页内容简介&#xff1a;本书内容分别从基础、内核、系统、编译以及硬件驱动几个方面对Android内核相关知识进行深入剖析&#xff0c;详细分析了Android内核的内部机制&#…

Bitmap的秘密

为什么80%的码农都做不了架构师&#xff1f;>>> 之前已经参加过几次QCon峰会&#xff0c;不过今年QCon 2014 上海峰会对我来说比较特别&#xff0c;不再只是一名听众&#xff0c;而是第一次登台演讲。感觉的确不太一样&#xff0c;一来是身份从听众变成了讲师&…

POJ 2018 Best Cow Fences (二分答案构造新权值 or 斜率优化)

$ POJ~2018~Best~Cow~ Fences $&#xff08;二分答案构造新权值&#xff09; $ solution: $ 题目大意&#xff1a; 给定正整数数列 $ A $ &#xff0c;求一个平均数最大的长度不小于 $ L $ 的子段 这道题首先我们如果没有长度限制&#xff0c;直接扫一遍数组即可而有了长度限制…

hdu 2531 Catch him

Catch him Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 124 Accepted Submission(s): 49 Problem Description在美式足球中&#xff0c;四分卫负责指挥整只球队的进攻战术和跑位&#xff0c;以及给接球员传球…

POJ 3889 Fractal Streets(逼近模拟)

$ POJ~3889~Fractal~Streets $&#xff08;模拟&#xff09; $ solution: $ 这是一道淳朴的模拟题&#xff0c;最近发现这种题目总是可以用逼近法&#xff0c;就再来练练手吧。 首先对于每个编号我们可以用逼近法求出它在各个图上是处于左上&#xff0c;右上&#xff0c;左下&a…