为什么分页式内存管理不能实现java 代码实现分页段共享而段式管理

导读:9.UNIX操作系统没有提供虚拟存储器,系统除采用正文段共享和自我覆盖技术外,主要采用了程序对换技术来扩充存储容量,使其具有类似于虚拟存储器的作用,10.静态页式管理可以实现虚存,13.系统中内存不足,14.用绝对地址编写的程序不适合多道程序系统,而不能使用覆盖的方法?4.虚拟存储器的理论容量与什么有关,把它映射到由32个物理块组成的存储器,6.程序员如何识别系统采用的是分页式虚存还是段式虚存8.虚存容量仅受外存容量的限制。 9.UNIX操作系统没有提供虚拟存储器,为了使容量有限的内存能支持较大规模的程序,系统除采用正文段共享和自我覆盖技术外,主要采用了程序对换技术来扩充存储容量,使其具有类似于虚拟存储器的作用。 10.静态页式管理可以实现虚存。 11. 用可变分区法可以比较有效地消除外部碎片,但不能消除内部碎片。 12.页表的作用是实现逻辑地址到物理地址的映射。 13.系统中内存不足,程序就无法执行。 14.用绝对地址编写的程序不适合多道程序系统。 三、 简答题 1.什么是动态链接?用何种内存分配方法可以实现这种链接技术? 2.为什么静态重定位后的程序在内存中不能移动?动态地址重定位的程序在内存中可以移动什么? 3.在什么时候只能使用交换的方法,而不能使用覆盖的方法? 4.虚拟存储器的理论容量与什么有关,实际容量与什么有关? 5.考虑一个由8个页面,每页1K字节组成的逻辑空间,把它映射到由32个物理块组成的存储器。问: (1)有效的逻辑地址有多少位? (2)有效的物理地址有多少位? 6.程序员如何识别系统采用的是分页式虚存还是段式虚存? 7.设某进程分得的内存页面数为m,其需访问的页面个数为p,其中有n个不相同的页面,对于任意置换算法, (1)求页面失效次数的下限 (2)求页面失效次数的上限 8.在某分页虚存系统中,测得CPU和磁盘的利用率如下,试指出每种情况下的问题和措施。 (1)
CPU的利用率为15%,盘利用率为95%; (2)
CPU的利用率为88%,盘利用率为3%; (3)
CPU的利用率为13%,盘利用率为5%。 9.对访问串:1,2,3,4,1,2,5,1,2,3,4,5,指出在驻留集大小分别为3,4时,使用FIFO和LRU替换算法的缺页次数。结果说明了什么? 10.存储管理的主要任务是什么? 11.实现虚拟存储器的物质基础是什么? 12.分页存储管理如何克服分区存储管理的缺点的? 13.快表的引入为何能明显改进系统的性能? 14.操作系统中存储管理的主要对象是什么? 15.覆盖技术的基本思想是什么? 四、
解答题 1.分页存储管理与分段管理的主要区别是什么?提出分页管理和分段管理的目的分别是什么? 2.考虑一个分页存储器,其页表存放在内存。 (1)若内存的存取周期为0.6us,则CPU从内存取一条指令(或一个操作数)需多少时间? (2)若使用快表且快表的命中率为75%,则内存的平均存取周期为多少? 3.虚存管理与实存管理的根本区别是什么? 4.就虚存回答以下问题: (1)
虚存的应用背景是什么? (2)
虚存的可行性基础是什么? (3)
实现虚存的主要技术是什么? (4)
虚存可以有多大? 5.设某进程访问内存的页面走向序列如下: 1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6 则在局部置换的前提下,分别求当该进程分得的页面数为1,2,3,4,5,6,7时,下列置换算法的缺页数: ①LRU
③Optimal 6.考虑一个有快表的请求分页系统,设内存的读写周期为1us,内外存之间传送一个页面的平均时间为5ms,快表的命中率为80%,页面实效率为10%,求内存的有效存取时间。 7.对于一个使用快表的页式虚存,设快表的命中率为70%,内存的存取周期为1us;缺页处理时,若内存有可用空间或被置换的页面在内存未被修改过,则处理一个缺页中断需8ms,否则需20ms。假定被置换的页面60%是属于后一种情况,则为了保证有效存取时间不超过2us,问可接受的最大缺页率是多少? 8. 为什么要引入动态链接 ? 9.在分页存储管理系统中,存取一次内存的时间是8us,查询一次快表的时间是1us,缺页中断的时间是20us。假设页表的查询与快表的查询同时进行,当查询页表时,如果该页在内存但快表中没有页表项,系统将自动把该页页表项送入快表。一个作业最多可保留3个页面在内存。现开始执行一作业,系统连续对作业的2、4、5、2、7、6、4、2各页面的数据进行1次存取,如分别采用FIFO算法和最优页面置换算法,求每种算法下存取这些数据需要的总时间
习题解答要点 一、选择 1.B
60.B二、 判断正误,错误的简要说明理由 1.错误 产生页面中断的次数与页面大小的关系不是绝对的,它还和访问页面的踪迹P、主存的容量M、以及淘汰算法有关。 2.错误 虚地址是作业的逻辑地址,只有经过地址转换机构后得到的物理地址才是程序执行时所要访问的内存地址。 1.
错误 交换技术与非连续存放技术相结合,才构成虚拟存储器。
4.正确 2.
错误 页面的调入、调出应在内存与文件区及对换区。调入可以从文件区和交换区,调出到交换区。 3.
错误 首先,最佳置换算法(OPT算法)不能实用,只可作为一种评价标准,因此目前很少在实际中使用。另外,改进型CLOCK算法能相对避免进程的抖动,并且效率较高。 4.
错误 虚存容量不仅受外存容量的限制,还受到CPU逻辑地址所能表示范围的限制。 9.正确 10.错误 静态页式管理不能实现虚存,这是因为静态页式管理要求进程或作业在执行前全部被装入内存,作业或进程的大小仍然受内存可用页面数的限制。 11.错误 采用可变分区,可以消除内部碎片,但极易产生外部碎片,可以通过紧缩办法消除外部碎片。 12. 正确 13. 错误 可采用虚拟存储器、覆盖、交换解决。 14.正确 三、 简答题 1.动态链接就是指当程序运行到需要调用某一模块时,再去链接,对于未使用的模块就可以不必链接。采用段式内存分配方法可以实现这种技术。 2.静态重定位后的程序的代码已经发生了变化,由原来逻辑地址的程序已经变为物理地址的程序,按物理地址的方式运行,因此不能再进行移动。 动态重定位是在程序运行过程中由硬件进行地址变换,变换的结果存放在内存地址寄存器中,程序代码并没有发生变化,仍然是逻辑地址的代码,按逻辑地址的方式运行,因此,在内存中移动程序代码之后,仅需要根据代码新的启始位置,重新设定基地址寄存器的值。 3.当需要覆盖的内容在以前程序的执行过程中修改过,并且在以后的执行中仍然需要,这时就必须采用交换的方式。 4.理论容量由逻辑地址位长决定。实际容量由逻辑地址位长以及内外存容量综合决定。 5.(1)逻辑地址有13位 (2)物理地址有15位 说明:解此题的关键是要知道在分页管理中,“页”和“块”是一样大小的,这样才知道物理存储器是32K。 6.页式虚存面向程序员的逻辑地址是1维的,而段式虚存面向程序员的逻辑地址是2维。 7.(1)下限是n (2)上限是p 说明:因为页面序列中有n个不同的页号,这n个页面可定是要通过页面失效中断装入内存的,故失效数的下限是n;因为页面序列的长度是p,即使每个页面都失效,其次数也不会超过p,故上限是p。 8.(1)可能已出现了抖动现象,应减少系统的进程数; (2)系统比较正常,可考虑适当增加进程数以提高资源利用率; (3)CPU和磁盘的利用率都较低,必须增加并发进程数。 9.首先采用FIFO,当m=3时,缺页次数=9;m=4时,缺页次数=10。 采用LRU算法,当m=3时,缺页次数=10;m=4时,缺页次数=8。 结果说明:FIFO有Belady奇异现象,即不满足驻留集增大,缺页次数一定减小的规律;另在m=3时,LRU的缺页次数比FIFO要多,所以LRU算法并不总优于FIFO,还要看当前访问串的特点。 10.存储管理的主要研究内容是主存存储分配、地址再定位、存储保护和存储扩充。 11.实现虚拟存储器的物质基础是:一定容量的主存、足够的辅存和地址变换机构。 12. (1)
通过分页处理,使程序可以不需要占用连续的内存空间; (2)
通过实现虚拟存储器,解决程序大小不能超过内存的容量的问题。 13. (1)
存储器访问具有时间和空间的“局部性”,因此快表的命中率一般可达70%到90%; (2)
页表是在系统执行过程中,每时每刻都需要访问的,因此,访问时间的微小缩短,其累计节约的时间却可以达到很大。 14.OS中存储管理的主要对象是内存储器的用户空间,以及作为内存用户空间的扩展和延伸的磁盘对换区(Unix)。内存的系统空间是存放OS内核的,不存在多道程序之间进行分配的问题,故不属存储管理的范围;在Unix中,磁盘对换区是用于进程映象对换的,因而从概念上讲是内存用户空间的扩充,故将它的管理也纳入存储管理之中。当然,不是所有的系统都有磁盘对换区,因而也不是所有系统的存储管理都有此管理对象。 15. 覆盖技术的基本思想是什么? 解 覆盖技术的基本思想是,若一个大的程序是由多个相对独立的程序模块组成,且有些模块是相互排斥的,即执行甲就不会执行乙,则在这种情况下,就没有必要将该程序的所有模块装入内存,而是将那些二者(或多者)执行时取其一的模块处理成“覆盖”,让它们共享内存的一个“覆盖区”。这样就可大大节省内存空间,达到用小内存运行大程序的目的。
四、 解答题 1.总结出的区别如下表所示:
分页 单一连续逻辑地址空间 页是信息的物理单位 页是面向系统的 页内的信息逻辑上可能不完整的 页的大小固定 由系统划分 对用户透明 以页面为单位分配空间 存在内零头 不需要紧凑技术 分段 二维逻辑地址空间 段是信息的逻辑单位 段是面向用户的 段内的信息在逻辑上是完整的 段长度可变增长 用户可见 便于动态链接和存储保护 修改和共享 以段大小为单位分配的空间 存在外零头 需采用紧凑技术
提出分页管理的目的是为了提高内存空间的利用率;提出分段管理的目的除了也可以提高内存空间的利用率(相对分区管理而言)外,主要是为了更好地实现程序的共享和动态链接,并方便用户编程。 2. (1)因为页表放在内存,故取一条指令(或一个操作数)须访问两次内存,所以需0.6us×2 = 1.2us的时间。 (2)这里假定访问快表的时间可以忽略不计,命中快表时取数只要一次访存,故此时的平均存取周期为 0.6us×0.75+1.2us×(1-0.75)=0.75us 说明:解此题的关键是要知道访问快表的时间可以忽略不计和平均存取周期的概念。 3.根本区别就在于,虚存管理允许部分装入和部分对换,而实存管理不允许这样做。所谓“部分装入”,指的是一道应用程序不是全部装入内存以后才开始执行而是只装入其一部分(甚至一点都不装)就开始运行,然后在运行的过程中根据需要逐步地装入其余部分;“部分对换”,指的是当内存已满而又有新的将“部分”需要装入时,要把已在内存的某一“部分”换出去,以腾出空间存放新来者。部分装入和部分对换的结果是可以用小的内存运行大的程序。实存管理则不同,它所要求的是整体装入。 4.(1)虚存的运行背景是用小内存运行大程序。这里的“大程序”是指比整个内存用户空间还要大的程序,它可以是一道程序,也可以是多道程序之和。 (2)虚存的可行性基础是程序运行的局部性原理。 (3)实现虚存的主要技术是部分装入、部分对换、局部覆盖、动态重定位。 (4)从原理上讲,虚存空间就是CPU逻辑地址所给出的空间,例如,逻辑地址是25位,则虚存空间就是225=32M;但实际的虚拟存储器的容量还要受辅存和内存空间之和的限制,即虚存空间不能超过这两个物理空间之和。 5.通过逐个演算,获得下表所示的结果。 过程分得的页面数 1 2 3 4 5 6 7 Optimal 20 15 11 8 7 7 7 LRU 20 17 15 10 8 7 7 FIFO 20 18 16 14 12 9 7 说明:每一个页面第一次进入内存也算缺页。 由上表可见,当进程分得的页面数在2~5之间时,Optimal缺页数最少,LRU次之,FIFO最多。大量统计证明LRU算法是实用算法中性能最好的。 6.内存的有效存取时间EAT(Efficent Access Time)也叫平均存取时间AAT(Average Access Time),其计算公式如下: EAT=命中快表时的存取时间×快表命中率+命中内存时的存取时间×内存命中率+页面失效时的存取时间×页面实效率 将题中的已知条件代入可得 EAT=1us×80%+2us×10%+(5000us+2us)×10% =0.8us+0.2us+500.2us =501.2us 说明:解此题除了要了解“有效存取时间”的计算公式外,还应了解在命中快表、命中内存和页面失效三种情况下存取时间的计算方法。特别是,当页面失效时,除了页面传送时间,还应加上2次访问内存的时间,因为页面失效的前提是不命中快表。 7.设可接受的最大缺页率为p,则有 1us×0.7+2us×(1-0.7-p)+0.4p×8ms+0.6p×20ms=2us 即
0.7+0.6-2p+p=2
p=0.. (1)节约内存 在许多情况下,每次要运行的模块可能是不相同的,但由于事先无法知道本次要运行哪些模块,故只能是将所有可能要运行到的模块,全部链接在一起,是每次执行时的装入全部的模块。显然这是低效的。因为装入的某些模块在运行过程中,根本就不运行。比较典型的例子是错误处理模块,如果程序在整个运行过程中,都不出现错误,便不会用到该模块。动态连接的方式就可以解决这个问题。 (2)便于软件版本的修改和更新 在采用装入时动态链接方式时,要修改或更新各个目标模块,是件非常容易的事,但对于经静态链接以装配在一起的装入模块,如果要修改或更新其中的某个目标模块时,则要求重新打开装入模块,这不仅是低效的,而且对于普通用户是不可能的。 (3)便于实现目标模块共享和构建程序。 若采用装入时动态链接方式,OS能够将一个目标模块链接到几个应用程序中去,即实现多个应用程序对该模块的共享。然而,采用静态链接方式时每个应用模块都必须含有该目标模块的拷贝,则无法实现共享。 9. (1)
LRU 第2页面:20+8*3 第4页面:20 +8*3 第5页面:20 +8*3 第2页面:8+1 第7页面:20 +8*3 第6页面:20+8*3 第4页面:20+ 8*3
第8页面:20+8*3
因此总的时间是(20+8*3)*7+(8+1) (2)
OPT 第2页面:20+8*3 第4页面:20 +8*3 第5页面:20 +8*3 第2页面:8+1 第7页面:20 +8*3 第6页面:20+8*3 第4页面:8+1
第8页面:8+1
因此总的时间是 (20+8*3)*5 +(8+2)*3
包含总结汇报、专业文献、外语学习、行业论文、考试资料、旅游景点、教学教材以及计算机操作系统存储管理练习题等内容。本文共3页
相关内容搜索(window.slotbydup=window.slotbydup || []).push({
id: '2014386',
container: s,
size: '234,60',
display: 'inlay-fix'
&&|&&0次下载&&|&&总8页&&|
您的计算机尚未安装Flash,点击安装&
阅读已结束,如需下载到电脑,请使用积分()
下载:5积分
0人评价31页
1人评价21页
相关分类推荐
0人评价3页
0人评价17页
0人评价188页
0人评价1页
0人评价1页
所需积分:(友情提示:大部分文档均可免费预览!下载之前请务必先预览阅读,以免误下载造成积分浪费!)
(多个标签用逗号分隔)
文不对题,内容与标题介绍不符
广告内容或内容过于简单
文档乱码或无法正常显示
文档内容侵权
已存在相同文档
不属于经济管理类文档
源文档损坏或加密
若此文档涉嫌侵害了您的权利,请参照说明。
我要评价:
价格:5积分VIP价:4积分本博客微信公共账号:hadoop123(微信号为:hadoop-123),分享hadoop技术内幕,hadoop最新技术进展,发布hadoop相关职位和求职信息,hadoop技术交流聚会、讲座以及会议等。二维码如下:
1. 基本概念
(1)逻辑地址:指由程序产生的与段相关的偏移地址部分。在C语言指针中,读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址。
(2)线性地址:段中的偏移地址(逻辑地址),加上相应段的基地址就生成了一个线性地址。
(3)物理地址: 放在寻址总线上的地址。
(4)虚拟地址:保护模式下段和段内偏移量组成的地址,而逻辑地址就是代码段内偏移量,或称进程的逻辑地址。
(1) 虚拟内存:计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易,对真正的物理内存(例如RAM)的使用也更有效率。
(2) 物理内存:实际的内存。物理地址被分成离散的单元,成为页(page)。目前大多数系统的页面大小都为4k。
1.3 地址转换
Linux采用段页式管理机制,有两个部件用于地址转换:分段部件和分页部件。
(1) 分段部件:将逻辑地址转换为线性地址。分段提供了隔绝各个代码、数据和堆栈区域的机制,因此多个程序(任务)可以运行在同一个处理器上而不会互相干扰。
(2) 分页部件:将线性地址转换为物理地址(页表和页目录),若没有启用分页机制,那么线性地址直接就是物理地址。
2. 内存分配
Malloc,kmalloc 和vmalloc区别?
(1) kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存。
(2) kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续。
(3) kmalloc申请的内存比较小,一般小于128 K。它是基于slab(内存池)的,以加快小内存申请效率。
3. 常见问题
(1) 调用malloc函数后,OS会马上分配实际的内存空间吗?
答:不会,只会返回一个虚拟地址,待用户要使用内存时,OS会发出一个缺页中断,此时,内存管理模块才会为程序分配真正的内存。
(2) 段式管理和页式管理的优缺点?
在段式存储管理中,将程序的地址空间划分为若干个段(segment),这样每个进程有一个二维的地址空间,相互独立,互不干扰。程序通过分段划分为多个模块,如代码段、数据段、共享段。这样做的优点是:可以分别编写和编译源程序的一个文件,并且可以针对不同类型的段采取不同的保护,也可以按段为单位来进行共享。段式存储管理的优点是:没有内碎片,外碎片可以通过内存紧缩来消除;便于实现内存共享。
在页式存储管理中,将程序的逻辑地址空间划分为固定大小的页(page),而物理内存划分为同样大小的页框(pageframe)。程序加载时,可将任意一页放人内存中任意一个页框,这些页框不必连续,从而实现了离散分配。这种管理方式的优点是,没有外碎片,且一个程序不必连续存放。这样就便于改变程序占用空间的大小。
页式和段式系统有许多相似之处。比如,两者都采用离散分配方式,且都通过地址映射机构来实现地址变换。但概念上两者也有很多区别,主要表现在: [1] 页是信息的物理单位,分页是为了实现离散分配方式,以减少内存的外零头,提高内存的利用率。或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了更好地满足用户的需要。
[2] 页的大小固定且由系统决定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的。段的长度不固定,且决定于用户所编写的程序,通常由编译系统在对源程序进行编译时根据信息的性质来划分。
[3] 页式系统地址空间是一维的,即单一的线性地址空间,程序员只需利用一个标识符,即可表示一个地址。分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。
(3) Malloc在什么情况下调用mmap?
从操作系统角度来看,进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)。brk是将数据段(.data)的最高地址指针_edata往高地址推,mmap是在进程的虚拟地址空间中(一般是堆和栈中间)找一块空闲的。这两种方式分配的都是虚拟内存,没有分配物理内存。在第一次访问已分配的虚拟地址空间的时候,发生缺页中断,操作系统负责分配物理内存,然后建立虚拟内存和物理内存之间的映射关系。
在标准C库中,提供了malloc/free函数分配释放内存,这两个函数底层是由brk,mmap,munmap这些系统调用实现的。
默认情况下,malloc函数分配内存,如果请求内存大于128K(可由M_MMAP_THRESHOLD选项调节),那就不是去推_edata指针了,而是利用mmap系统调用,从堆和栈的中间分配一块虚拟内存。这样子做主要是因为brk分配的内存需要等到高地址内存释放以后才能释放(例如,在B释放之前,A是不可能释放的),而mmap分配的内存可以单独释放。
(4) 32位系统,通常情况下,最大虚拟地址和物理地址空间为多少?
不使用PAE情况下,最大虚拟地址和物理地址空间均为4G,若果使用PAE,最大虚拟地址仍为4G,而物理地址空间可变为64G(x86, 32为变36位)。
(5) 怎样实现malloc和free?
Malloc实现可考虑采用buddy算法+slob算法,free类似。
4. 参考资料
Linux Memory Management Notes:
内存段页式管理笔记:
虚拟地址、线性地址和物理地址的转换:
kmalloc、vmalloc、malloc的区别:
Linux中的物理和虚拟存储空间布局:
[百度分享]频繁分配释放内存导致的性能问题的分析
最近面试常被问到内存管理的一些基础知识,特整理此文,以作为这阶段面试的小总结。
原创文章,转载请注明: 转载自
本文链接地址:
作者:,作者介绍:
本博客的文章集合:
2 Comments to “Linux内存管理基本概念”内存的存储管理--段式和页式管理的区别_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
内存的存储管理--段式和页式管理的区别
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 js实现分页功能代码 的文章

 

随机推荐