内存管理通过什么实现是硬件实现还是软件实现的

|  
|  
|  
|  
|  
只需一步,快速开始
查看: 4593|回复: 8
想用ramdisk充分利用4G内存的注意了,有很大的隐患
主题帖子积分
资深玩家, 积分 9153, 距离下一级还需 8847 积分
资深玩家, 积分 9153, 距离下一级还需 8847 积分
原文出处,远景。
我找到的是MS做kernel内存管理的developer,所以应该是最权威的了. 目前驱动程序唯一能达到访问4gb以上地址内存的方法是通过一个ddk api: MmMapIoSpace. 其实这个api本来是用来给设备驱动程序进行特殊的地址映射用的,并非用来管理内存.
简单地说, bios会把可用的内存映射到一个并不一定连续的物理地址空间中,比如0地址开始的一段空间需要留给bios自己所以无法映射内存, 3gb-4gb范围内的地址有可能留给各种pci设备,也不能用作内存,这也是为什么win7 32bit在4gb地址线下看不到全部4gb内存的原因.
当然如果bios支持memory remap,那么多余的内存会比map到4gb以上的地址空间,而由于目前win7 32bit强行忽略掉了这部分mapping,所以即使bios map了也不会被使用.
ramdisk 4g的原理就是使用MmMapIoSpace来强行读写4gb以上的地址空间,注意是跳过操作系统的强行读写,把这段地址当作是io设备来操作,而并不一定是内存.
这种做法,主要有两个问题:
第一: 作为驱动程序,你是无法确切地知道究竟哪段物理地址空间里面是映射的你的多余的内存,目前的bios架构中,只有通过中断int 25, function 0xE820才能获知, 而这个bios中断只能在实模式下调用,也就是说windows启动之后,驱动程序是无法调用这个中断去获知的. 那么,ramdisk驱动就只能靠猜, 比如说他可以知道你装了4gb内存,而目前只认了3.5gb, 那么多出来的512m应该在4g-4.5g这个物理地址段.
但是,这个只是猜测,bios并不一定会把多出来的内存映射到那里, 也可能是4.1g-4.6g区间,甚至不一定是连续的空间. 而且,各种奇怪的硬件设备也有可能自己占用特殊的物理地址空间,比如假设有一块硬件占用了4g开始的16m空间,那么显然这段地址里面就不再是内存了.
好吧,那么如果ramdisk强行去读写错误的地址空间会如何呢? 简单地说: cpu不会报错, 但是结果是不可预料的, 比如如果这段地址空间根本是一个memory hole,那么往里面写东西就是白写,读操作返回的有可能都是0xFFFFFFFF, 这样地话,作为一个虚拟磁盘而言,其结果就是数据损坏.
更为严重的是:如果有一块特殊的硬件的io空间映射在4g以上的一段地址,而ramdisk强行去写入数据,就会直接对那块硬件进行io操作,有可能会损坏硬件或者发生更奇怪的事情,比如该设备莫名其妙开始工作了等等.
第二: 即使你的运气很好,bios把多余的内存正好连续地映射在4g开始的空间,也就是ramdisk完全猜对了的情况,还有一个问题是,ramdisk无法保证有没有其他任何代码也会去读写这段地址空间. 因为ramdisk是跳过os的内存管理直接进行io的,其他驱动程序也有可能做相同的事情,这样的结果一样是数据损坏. 比如ramdisk先往里面写了一个文件的内容,之后另一个驱动程序也在相同地址写了一些其他数据,那么ramdisk再读出来的时候就拿不到原来的数据了.
综上,在你无法100%确保以上两点肯定没事的情况下,使用ramdisk还是有风险的,最坏情况是用户数据丢失甚至硬件设备损坏.
其实真的要用超过4g内存,还是有其他更安全的办法的,比如换64位系统,或者用server版本(完全支持pae的),或者直接patch kernel (这个在上面的帖子里面有链接,可以在vista 32位里面直接用到128g内存)
如果真的一定要用ramdisk,请在设置好之后一定要做一个测试: copy一个可以撑满ramdisk大小的真实文件(比如电影之类),然后再从ramdisk里面copy出来,再用fc /b和原始文件进行二进制比较.多做几次测试,以确保正确性.每一个使用ramdisk的机器都应该做这样的测试,因为每台机器bios映射的方式可能不一样.
当然这个只能基本确保第一个问题不存在,还是无法排除第二个问题的可能性.万一有个驱动突然想起来往4g以上某个地址写点东西的话,你的文件就坏了.
主题帖子积分
游戏狂人, 积分 1852, 距离下一级还需 148 积分
游戏狂人, 积分 1852, 距离下一级还需 148 积分
懵了[em19] [em19]
主题帖子积分
游戏狂人, 积分 1852, 距离下一级还需 148 积分
游戏狂人, 积分 1852, 距离下一级还需 148 积分
最坏情况是用户数据丢失甚至硬件设备损坏.
[em19] [em19] [em10]
主题帖子积分
游戏狂人, 积分 1559, 距离下一级还需 441 积分
游戏狂人, 积分 1559, 距离下一级还需 441 积分
不来想用remdisk的,现在想想还是算了。。。。。。
主题帖子积分
游戏精英, 积分 7681, 距离下一级还需 1319 积分
游戏精英, 积分 7681, 距离下一级还需 1319 积分
贡献度1164
危害到底是什么呀?
主题帖子积分
高级玩家, 积分 255, 距离下一级还需 345 积分
高级玩家, 积分 255, 距离下一级还需 345 积分
从来不敢用这种东西
主题帖子积分
游戏精英, 积分 7681, 距离下一级还需 1319 积分
游戏精英, 积分 7681, 距离下一级还需 1319 积分
贡献度1164
直接patch kernel (这个在上面的帖子里面有链接,可以在vista 32位里面直接用到128g内存)
希望把這個弄一下。
主题帖子积分
游戏精英, 积分 3738, 距离下一级还需 5262 积分
游戏精英, 积分 3738, 距离下一级还需 5262 积分
ramdisk+supercache+raid0+CPU内存显卡均大幅超频使用一年多系统稳如磐石的飘过.
大家其实可以发现那些使用最基本的软硬件的不求性能最强只求最稳定的人反而出现问题的几率越高,上论坛求助的次数越多. 高手都是折腾出来的,不折腾永远是小白.[em15]
主题帖子积分
游戏精英, 积分 7681, 距离下一级还需 1319 积分
游戏精英, 积分 7681, 距离下一级还需 1319 积分
贡献度1164
我是折騰的小白。
软硬铁血十字军
注册时间在一年以上,最近3个月内经常原创、介绍、或参与软硬件讨论或热心解答软硬件问题
Powered by操作系统的管理功能主要有哪些?_百度知道
操作系统的管理功能主要有哪些?
火速求答案、谢谢
我有更好的答案
操作系统的五大管理功能:  (1)作业管理:包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实等;  (2)文件管理:又称为信息管理;  (3)存储管理:实质是对存储“空间”的管理,主要指对主存的管理;  (4)设备管理:实质是对硬件设备的管理,其中包括对输入输出设备的分配、启动、完成和回收;  (5)进程管理:实质上是对处理机执行“时间”的管理,即如何将CPU真正合理地分配给每个任务。五大类型操作系统各自的特点分别是:(1) 批处理操作系统的特点有:a. 用户脱机使用计算机。用户提交作业之后直到获得结果之前就不再和计算机打交道。作业提交的方式可以是直接交给计算中心的管理操作员,也可以是通过远程通讯线路提交。提交的作业由系统外存收容成为后备作业。b.成批处理。操作员把用户提交的作业分批进行处理。每批中的作业将由操作系统或监督程序负责作业间自动调度执行。c.多道程序运行。按多道程序设计的调度原则,从一批后备作业中选取多道作业调入内存并组织它们运行,成为多道批处理。(2) 分时操作系统的特点有:a. 交互性:首先, 用户可以在程序动态运行情况下对其加以控制。其次,用户上机提交作业方便。第三,分时系统还为用户之间进行合作提供方便。b. 多用户同时性:多个用户同时在自己的终端上上机,共享CPU和其他资源,充分发挥系统的效率。c.独立性:客观效果上用户彼此间感觉不到有别人也在使用该台计算机,如同自己独占计算机一样。(3) 实时操作系统的特点有:a. 实时时钟管理(定时处理和延时处理)。b. 连续的人-机对话,这对实时控制往往是必须的。c.要求采取过载保护措施。例如对于短期过载,把输入任务按一定的策略在缓冲区排队,等待调度; 对于持续性过载,可能要拒绝某些任务的输入; 在实时控制系统中,则及时处理某些任务,放弃某些任务或降低对某些任务的服务频率。d.高度可靠性和安全性需采取冗余措施。双机系统前后台工作,包括必要的保密措施等。(4) 网络操作系统的特点有:a. 计算机网络是一个互连的计算机系统的群体。b. 这些计算机是自治的,每台计算机有自己的操作系统,各自独立工作,它们在网络协议控制下协同工作。c.系统互连要通过通信设施(硬件、软件)来实现。d.系统通过通信设施执行信息交换、资源共享、互操作和协作处理,实现多种应用要求。(5) 分布式操作系统的特点有:a.计算机网络的开发都遵循协议,而对于各种分布式系统并没有制定标准的协议。当然,计算机网络也可认为是一种分布式系统。b.分布式系统要求一个统一的操作系统,实现系统操作的统一性。c.分布式操作系统对用户是透明的。但对计算机网络,若一个计算机上的用户希望使用另一台计算机上的资源,则必须明确指明是哪台计算机。d.分布式系统的基础是网络。分布式系统已不仅是一个物理上的松散耦合系统,同时还是一个逻辑上紧密耦合的系统。e.分布式系统还处在研究阶段。而计算机网络已经在各个领域得到广泛的应用。
人机交互功能主要靠可输入输出的外部设备和相应的软件来完成。可供人机交互使用的设备主要有键盘显示。早期的人机交互设施是键盘显示器、鼠标、各种模式识别设备等。与这些设备相应的软件就是操作系统提供人机交互功能的部分。人机交互部分的主要作用是控制有关设备的运行和理解并执行通过人机交互设备传来的有关的各种命令和要求。  操作系统的设备管理功能主要是分配和回收外部设备以及控制外部设备按用户程序的要求进行操作等。对于非存储型外部设备,如语音识别。此外,由于文件建立时允许创建者规定使用权限,撤销文件,读写文件。此外,通过图形进行人机交互也吸引着人们去进行研究。这些人机交互可称为智能化的人机交互。这方面的研究工作正在积极开展。信息资源指的是存放于计算机内的各种数据,操作系统会根据一定的策略将处理器交替地分配给系统内等待运行的程序。一道等待运行的程序只有在获得了处理器后才能运行。一道程序在运行中若遇到某个事件,例如启动外部设备而暂时不能继续运行下去,或一个外部事件的发生等等、汉字识别等输入设备的发展,操作员和计算机在类似于自然语言或受限制的自然语言这一级上进行交互成为可能。在一个允许多道程序同时执行的系统里。操作员通过键盘打入命令。操作系统控制用户的执行主要有以下一些内容:调入相应的编译程序,将用某种程序设计语言编写的源程序编译成计算机可执行的目标程序,如文件,程序库。随着计算机技术的发展,操作命令也越来越多,功能也越来越强。随着模式识别,是操作系统资源管理功能的另一个重要内容,知识库,在使用完毕后回收以便给另一个需求的用户使用。一般说,操作系统接到命令后立即执行并将结果通过显示器显示。打入的命令可以有不同方式,系统软件和应用软件等。  资源管理  系统的设备资源和信息资源都是操作系统根据用户需求按一定的策略来进行分配和调度的。操作系统的存储管理就负责把内存单元分配给需要内存的程序以便让它执行,在程序执行结束后将它占用的内存单元收回以便再使用。对于提供虚拟存储的计算机系统,操作系统还要与硬件配合做好页面调度工作,根据执行程序的要求分配页面,在执行中将页面调入和调出内存以及回收页面等。  处理器管理或称处理器调度,唯一的,打开和关闭文件等功能。有了文件系统后,用户可按文件名存取数据而无需知道这些数据存放在哪里。这种做法不仅便于用户使用而且还有利于用户共享公共数据,操作系统就要来处理相应的事件,然后将处理器重新分配,但每一条命令的解释是清楚的,如打印机、显示器等操作系统的主要功能是资源管理,程序控制和人机交互等。计算机系统的资源可分为设备资源和信息资源两大类。设备资源指的是组成计算机的硬件设备,如中央处理器,一个文件系统向用户提供创建文件,主存储器,磁盘存储器,打印机,磁带存储器,显示器,键盘输入设备和鼠标等,这就可以保证数据的安全性。  程序控制  一个用户程序的执行自始至终是在操作系统控制下进行的。一个用户将他要解决的问题用某一种程序设计语言编写了一个程序后就将该程序连同对它执行的要求输入到计算机内,操作系统就根据要求控制这个用户程序的执行直到结束。  人机交互  操作系统的人机交互功能是决定计算机系统“友善性”的一个重要因素。对于存储型的外部设备,如磁盘、磁带等,则是提供存储空间给用户,用来存放文件和数据。存储性外部设备的管理与信息管理是密切结合的。  信息管理是操作系统的一个重要的功能,主要是向用户提供一个文件系统,分配内存储等资源将程序调入内存并启动,按用户指定的要求处理执行中出现的各种事件以及与操作员联系请示有关意外事件的处理等,它们可以直接作为一个设备分配给一个用户程序
为您推荐:
其他类似问题
您可能关注的内容
操作系统的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。> 博客详情
Android采用层次化系统架构,官方公布的标准架构如下图所示。Android由底层往上分为4个主要功能层,分别是linux内核层(Linux Kernel),系统运行时库层(Libraries和Android Runtime),应用程序架构层(Application Framework)和应用程序层(Applications)。
Linux内核层
Android以Linux操作系统内核为基础,借助Linux内核服务实现硬件设备驱动,进程和内存管理,网络协议栈,电源管理,无线通信等核心功能。Android4.0版本之前基于Linux2.6系列内核,4.0及之后的版本使用更新的Linux3.X内核,并且两个开源项目开始有了互通。Linux3.3内核中正式包括一些Android代码,可以直接引导进入Android。Linux3.4将会增添电源管理等更多功能,以增加与Android的硬件兼容性,使Android在更多设备上得到支持。
Android内核 对Linux内核进行了增强,增加了一些面向移动计算的特有功能。例如,低内存管理器LMK(Low Memory Keller),匿名共享内存(Ashmem),以及轻量级的进程间通信Binder机制等。这些内核的增强使Android在继承Linux内核安全机制的同时,进一步提升了内存管理,进程间通信等方面的安全性。下表列举了Android内核的主要驱动模块:
驱动名称&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Android电源管理(Power Ma nagement)
针对嵌入式设备的,基于标准Linux电源管理系统的,轻量级的电源管理驱动
低内存管理器(Low Memory Keller)
可以根据需要杀死进程来释放需要的内存。扩展了Linux的OOM机制,形成独特的LMK机制
匿名共享内存(Ashmem)
为进程之间提供共享内存资源,同时为内核提供回收和管理内存的机制
日志(Android Logger)
一个轻量级的日志设备
定时器(Anroid Alarm)
提供了一个定时器用于把设备从睡眠状态唤醒
物理内存映射管理(Android& PMEM)
DSP及其他设备只能工作在连续的物理内存上,PMEM用于向用户空间提供 连续的物理内存区域映射
Android定时设备(Android Timed device)
可以执行对设备的定时控制功能
Yaffs2文件系统
Android采用大容量的NAND闪存作为存储设备,使用Yaffs2作为文件系统管理大容量MTD NAND Flash;Yaffs2占用内存小,垃圾回收简洁迅速。
Android Paranoid网络&&&&&&& & & & & & & & & & & & & & & & & & & & & & && & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & && &&&&&&
对Linux内核的网络代码进行了改动,增加了网络认证机制。可在IPV4,IPV6和蓝牙中设置,由ANDROID_PARANOID_NETWORK宏来启用此特性。
硬件抽象层
内核驱动和用户软件之间还存在所谓的硬件抽象层(Hardware Abstract Layer,HAL),它是对硬件设备的具体实现加以抽象。HAL没有在Android官方系统架构图中标明,下图标出了硬件抽象层在android系统中的位置:
鉴于许多硬件设备厂商不希望公开其设备驱动的源代码,如果能将android的应用框架层与linux系统内核的设备驱动隔离,使应用程序框架的开发尽量独立于具体的驱动程序,则android将减少对Linux内核的依赖。HAL由此而生,它是对Linux内核驱动程序进行的封装,将硬件抽象化,屏蔽掉了底层的实现细节。HAL规定了一套应用层对硬件层读写和配置的统一接口,本质上就是将硬件的驱动分为用户空间和内核空间两个层面;Linux内核驱动程序运行于内核空间,硬件抽象层运行于用户空间。
系统运行库层
官方的系统架构图中,位于Linux内核层之上的系统运行库层是应用程序框架的支撑,为Android系统中的各个组件提供服务。系统运行库层由系统类库和Android运行时构成。
1. 系统类库
系统类库大部分由C/C++编写,所提供的功能通过Android应用程序框架为开发者所使用。主要的系统类库及说明如下表:
系统类库名称
Surface Manager
执行多个应用程序时,管理子系统的显示,另外也对2D和3D图形提供支持
Media Framework& & & & & &
基于PacketVideoOpenCore的多媒体库,支持多种常用的音频和视频格式的录制和回放,所支持的编码格式包括MPEG4,MP3,H264,AAC,ARM
SQLite&& & & & & & & & & & & & & & & & &&&&&&&&&&&&&
本地小型关系数据库,Android提供了一些新的SQLite数据库API,以替代传统的耗费资源的JDBC API
OpenGL|ES&& & & & & & & & & & & & & & & & & & &&
基于OpenGL ES 1.0API标准实现的3D跨平台图形库
用于显示位图和矢量字体
Web浏览器的软件引擎
底层的2D图形引擎
Libc(bionic l& ibc)&&&&&&&&&
继承自BSD的C函数库bionic libc,更适合基于嵌入式Linux的移动设备
SSL&&&&&&&&&&&&&&&&&&&&&
安全套接层,是为网络通信提供安全及数据完整性的一种安全协议
除上表列举的主要系统类库之外,Android NDK(Native Development Kit),即Android原生库,也十分重要。NDK为开发者提供了直接使用Android系统资源,并采用C或C++语言编写程序的接口。因此,第三方应用程序可以不依赖于Dalvik虚拟机进行开发。实际上,NDK提供了一系列从C或C++生成原生代码所需要的工具,为开发者快速开发C或C++的动态库提供方便,并能自动将生成的动态库和java应用程序一起打包成应用程序包文件,即.apk文件。
注意,使用原生库无法访问应用框架层API,兼容性可能无法保障。而且从安全性角度考虑,Android原生库用非类型安全的程序语言C,C++编写,更容易产生安全漏洞,原生库的缺陷(bug)也可能更容易直接影响应用程序的安全性。
Android运行时包含核心库和Dalvik虚拟机两部分。
核心库:核心库提供了Java5 se API的多数功能,并提供Android的核心API,如android.os,android.net,android.media等。
Dalvik虚拟机:Dalvik虚拟机是基于apache的java虚拟机,并被改进以适应低内存,低处理器速度的移动设备环境。Dalvik虚拟机依赖于Linux内核,实现进程隔离与线程调试管理,安全和异常管理,垃圾回收等重要功能。
本质而言,Dalvik虚拟机并非传统意义上的java虚拟机(JVM)。Dalvik虚拟机不仅不按照Java虚拟机的规范来实现,而且两者不兼容。
Dalvik和标准Java虚拟机有以下主要区别:
Dalvik基于寄存器,而JVM基于栈。一般认为,基于寄存器的实现虽然更多依赖于具体的CPU结构,硬件通用性稍差,但其使用等长指令,在效率速度上较传统JVM更有优势。
Dalvik经过优化,允许在有限的内存中同时高效地运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行,都拥有一个独立的Dalvik虚拟机实例。Android这种基于Linux的进程“沙箱”机制,是整个安全设计的基础之一。
Dalvik虚拟机从DEX(Dalvik& Executable)格式的文件中读取指令与数据,进行解释运行。DEX文件由传统的,编译产生的CLASS文件,经dx工具软件处理后生成。
Dalvik的DEX文件还可以进一步优化,提高运行性能。通常,OEM的应用程序可以在系统编译后,直接生成优化文件(.ODEX); 第三方的应用程序则可在运行时在缓存中优化与保存,优化后的格式为DEY(.dey文件)。
应用程序框架层
应用程序框架层提供开发Android应用程序所需的一系列类库,使开发人员可以进行快速的应用程序开发,方便重用组件,也可以通过继承实现个性化的扩展。具体包括的模块如表:
应用程序框架层类库名称&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
活动管理器(Activity Mananger)
管理各个应用程序生命周期并提供常用的导航回退功能,为所有程序的窗口提供交互的接口
窗口管理器(Window Manager)
对所有开启的窗口程序进行管理
内容提供器(Content Provider)
提供一个应用程序访问另一个应用程序数据的功能,或者实现应用程序之间的数据共享
视图系统(View System)
创建应用程序的基本组件,包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),还有可嵌入的web浏览器。
通知管理器(Notification Manager)
使应用程序可以在状态栏中显示自定义的客户提示信息
包管理器(Package Manager)
对应用程序进行管理,提供的功能诸如安装应用程序,卸载应用程序,查询相关权限信息等。
资源管理器(Resource Manager)
提供各种非代码资源供应用程序使用,如本地化字符串,图片,音频等
位置管理器(Location Manager)
提供位置服务
电话管理器(Telephony Manager)
管理所有的移动设备功能
是Google在线即时交流软件中一个通用的进程,提供后台推送服务
Android平台的应用层上包括各类与用户直接交互的应用程序,或由java语言编写的运行于后台的服务程序。例如,智能手机上实现的常见基本功能 程序,诸如SMS短信,电话拨号,图片浏览器,日历,游戏,地图,web浏览器等程序,以及开发人员开发的其他应用程序。
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥内存的存储管理--段式和页式管理的区别&
存储管理的基本原理
内存管理方法
内存管理主要包括内存分配和回收、地址变换、内存扩充、内存共享和保护等功能。
下面主要介绍连续分配存储管理、覆盖与交换技术以及页式与段式存储管理等基本概念和原理。
1.连续分配存储管理方式
连续分配是指为一个用户程序分配连续的内存空间。连续分配有单一连续存储管理和分区式储管理两种方式。
(1)单一连续存储管理
在这种管理方式&中,内存被分为两个区域:系统区和用户区。应用程序装入到用户区,可使用用户区全部空间。其特点是,最简单,适用于单用户、单任务的操作系统。CP/M和&DOS
2.0以下就是采用此种方式。这种方式的最大优点就是易于管理。但也存在着一些问题和不足之处,例如对要求内存空间少的程序,造成内存浪费;程序全部装&入,使得很少使用的程序部分也占用—定数量的内存。
(2)分区式存储管理
为了支持多道程序&系统和分时系统,支持多个程序并发执行,引入了分区式存储管理。分区式存储管理是把内存分为一些大小相等或不等的分区,操作系统占用其中一个分区,其余的&分区由应用程序使用,每个应用程序占用一个或几个分区。分区式存储管理虽然可以支持并发,但难以进行内存分区的共享。
分区式存储管理引&人了两个新的问题:内碎片和外碎片。前者是占用分区内未被利用的空间,后者是占用分区之间难以利用的空闲分区(通常是小空闲分区)。为实现分区式存储管&理,操作系统应维护的数据结构为分区表或分区链表。表中各表项一般包括每个分区的起始地址、大小及状态(是否已分配)。
分区式存储管理常&采用的一项技术就是内存紧缩(compaction):将各个占用分区向内存一端移动,然后将各个空闲分区合并成为一个空闲分区。这种技术在提供了某种程&度上的灵活性的同时,也存在着一些弊端,例如:对占用分区进行内存数据搬移占用CPU~t寸间;如果对占用分区中的程序进行“浮动”,则其重定位需要硬件&支持。
1)固定分区(nxedpartitioning)。
固定式分区的特点&是把内存划分为若干个固定大小的连续分区。分区大小可以相等:这种作法只适合于多个相同程序的并发执行(处理多个类型相同的对象)。分区大小也可以不等:&有多个小分区、适量的中等分区以及少量的大分区。根据程序的大小,分配当前空闲的、适当大小的分区。这种技术的优点在于,易于实现,开销小。缺点主要有两&个:内碎片造成浪费;分区总数固定,限制了并发执行的程序数目。
2)动态分区(dynamic
partitioning)。
动态分区的特点是&动态创建分区:在装入程序时按其初始要求分配,或在其执行过程中通过系统调用进行分配或改变分区大小。与固定分区相比较其优点是:没有内碎片。但它却引入&了另一种碎片——外碎片。动态分区的分区分配就是寻找某个空闲分区,其大小需大于或等于程序的要求。若是大于要求,则将该分区分割成两个分区,其中一个分&区为要求的大小并标记为“占用”,而另一个分区为余下部分并标记为“空闲”。分区分配的先后次序通常是从内存低端到高端。动态分区的分区释放过程中有一个&要注意的问题是,将相邻的空闲分区合并成一个大的空闲分区。
下面列出了几种常用的分区分配算法:
首先适配法(nrst-fit):按分区在内存的先后次序从头查找,找到符合要求的第一个分区进行分配。该算法的分配和释放的时间性能较好,较大的空闲分区可以被保留在内存高端。但随着低端分区不断划分会产生较多小分区,每次分配时查找时间开销便会增大。
下次适配法(next-fit):按分区在内存的先后次序,从上次分配的分区起查找(到最后{区时再从头开始},找到符合要求的第一个分区进行分配。该算法的分配和释放的时间性能较好,使空闲分区分布得更均匀,但较大空闲分区不易保留。
最佳适配法(best-fit):按分区在内存的先后次序从头查找,找到其大小与要求相差最小的空闲分区进行分配。从个别来看,外碎片较小;但从整体来看,会形成较多外碎片优点是较大的空闲分区可以被保留。
最坏适配法(worst-
fit):按分区在内存的先后次序从头查找,找到最大的空闲分区进行分配。基本不留下小空闲分区,不易形成外碎片。但由于较大的空闲分区不被保留,当对内存需求较大的进程需要运行时,其要求不易被满足。
2.覆盖和交换技术
引入覆盖&(overlay)技术的目标是在较小的可用内存中运行较大的程序。这种技术常用于多道程序系统之中,与分区式存储管理配合使用。覆盖技术的原理很简单,&一个程序的几个代码段或数据段,按照时间先后来占用公共的内存空间。将程序必要部分(常用功能)的代码和数据常驻内存;可选部分(不常用功能)平时存放在&外存(覆盖文件)中,在需要时才装入内存。不存在调用关系的模块不必同时装入到内存,从而可以相互覆盖。覆盖技术的缺点是编程时必须划分程序模块和确定程&序模块之间的覆盖关系,增加编程复杂度;从外存装入覆盖文件,以时间延长换取空间节省。覆盖的实现方式有两种:以函数库方式实现或操作系统支持。
交换&(swapping)技术在多个程序并发执行时,可以将暂时不能执行的程序送到外存中,从而获得空闲内存空间来装入新程序,或读人保存在外存中而处于就绪&状态的程序。交换单位为整个进程的地址空间。交换技术常用于多道程序系统或小型分时系统中,与分区式存储管理配合使用又称作“对换”或“滚进/滚出”
(roll-in/roll-out)。其优点之一是增加并发运行的程序数目,并给用户提供适当的响应时间;与覆盖技术相比交换技术另一个显著的优点是不&影响程序结构。交换技术本身也存在着不足,例如:对换人和换出的控制增加处理器开销;程序整个地址空间都进行对换,没有考虑执行过程中地址访问的统计特&性。
3.页式和段式存储管理
在前面的几种存储&管理方法中,为进程分配的空间是连续的,使用的地址都是物理地址。如果允许将一个进程分散到许多不连续的空间,就可以避免内存紧缩,减少碎片。基于这一思&想,通过引入进程的逻辑地址,把进程地址空间与实际存储空间分离,增加存储管理的灵活性。地址空间和存储空间两个基本概念的定义如下:
地址空间:将源程序经过编译后得到的目标程序,存在于它所限定的地址范围内,这个范围称为地址空间。地址空间是逻辑地址的集合。
存储空间:指主存中一系列存储信息的物理单元的集合,这些单元的编号称为物理地址存储空间是物理地址的集合。
根据分配时所采用的基本单位不同,可将离散分配的管理方式分为以下三种
段式存储管理和段页式存储管理。其中段页式存储管理是前两种结合的产物。
(1)页式存储管理
1)基本原理。将&程序的逻辑地址空间划分为固定大小的页(page),而物理内存划分为同样大小的页框(pageframe)。程序加载时,可将任意一页放人内存中任意一&个页框,这些页框不必连续,从而实现了离散分配。该方法需要CPU的硬件支持,来实现逻辑地址和物理地址之间的映射。在页式存储管理方式中地址结构由两部&构成,前一部分是页号,后一部分为页内地址,如图4-2所示。
这种管理方式的优&点是,没有外碎片,每个内碎片不超过页大比前面所讨论的几种管理方式的最大进步是,一个程序不必连续存放。这样就便于改变程序占用空间的大小(主要指随着&程序运行,动态生成的数据增多,所要求的地址空间相应增长)。缺点是仍旧要求程序全部装入内存,没有足够的内存,程序就不能执行。
2)页式管理的数据结构。在页式系统中进程建立时,操作系统为进程中所有的页分配页框。当进程撤销时收回所有分配给它的页框。在程序的运行期间,如果允许进程动态地申请空间,操作系统还要为进程申请的空间分配物理页框。操作系统为了完成这些功能,必须记录系统内存中
实际的页框使用情况。操作系统还要在进程切换时,正确地切换两个不同的进程地址空间到物理内存空间的映射。这就要求操作系统要记录每个进程页表的相关信息。为了完成上述的功能,—个页式系统中,一般要采用如下的数据结构。
进程页表:完成逻辑页号(本进程的地址空间)到物理页面号(实际内存空间)的映射。
每个进程有一个页表,描述该进程占用的物理页面及逻辑排列顺序。
物理页面表:整个系统有一个物理页面表,描述物理内存空间的分配使用状况,其数据结构可采用位示图和空闲页链表。
请求表:整个系统有一个请求表,描述系统内各个进程页表的位置和大小,用于地址转换也可以结合到各进程的PCB(进程控制块)里。
3)页式管理地址变换
在 页式系统中,指令所给出的地址分为两部分:逻辑页号和页内地址。CPU中的内存管理单元(MMU)按逻辑页号通过查进程页表得到物理页框号,将物理页框号
与页内地址相加形成物理地址(见图4-3)。上述过程通常由处理器的硬件直接完成,不需要软件参与。通常,操作系统只需在进程切换时,把进程页表的首地址
装入处理器特定的寄存器中即可。一般来说,页表存储在主存之中。这样处理器每访问一个在内存中的操作数,就要访问两次内存。第一次用来查找页表将操作数的
逻辑地址变换为物理地址;第二次完成真正的读写操作。这样做时间上耗费严重。为缩短查找时间,可以将页表从内存装入CPU内部的关联存储器(例如,快表)&中,实现按内容查找。此时的地址变换过程是:在CPU给出有效地址后,由地址变换机构自动将页号送人快表,并将此页号与快表中的所有页号进行比较,而且这
种比较是同时进行的。若其中有与此相匹配的页号,表示要访问的页的页表项在快表中。于是可直接读出该页所对应的物理页号,这样就无需访问内存中的页表。由
于关联存储器的访问速度比内存的访问速度快得多。
(2)段式存储管理
1)基本原理。
在段式存储管理&中,将程序的地址空间划分为若干个段(segment),这样每个进程有一个二维的地址空间。在前面所介绍的动态分区分配方式中,系统为整个进程分配一个&连续的内存空间。而在段式存储管理系统中,则为每个段分配一个连续的分区,而进程中的各个段可以不连续地存放在内存的不同分区中。程序加载时,操作系统为&所有段分配其所需内存,这些段不必连续,物理内存的管理采用动态分区的管理方法。在为某个段分配物理内存时,可以采用首先适配法、下次适配法、最佳适配法&等方法。在回收某个段所占用的空间时,要注意将收回的空间与其相邻的空间合并。段式存储管理也需要硬件支持,实现逻辑地址到物理地址的映射。程序通过分段&划分为多个模块,如代码段、数据段、共享段。这样做的优点是:可以分别编写和编译源程序的一个文件,并且可以针对不同类型的段采取不同的保护,也可以按段为单位来进行共享。总的来说,段式存储管理的优点是:没有内碎片,外碎片可以通过内存紧缩来消除;便于实现内存共享。缺点与页式存储管理的缺点相同,进程&必须全部装入内存。
2)段式管理的数据结构。
为了实现段式管理,操作系统需要如下的数据结构来实现进程的地址空间到物理内存空间的映射,并跟踪物理内存的使用情况,以便在装入新的段的时候,合理地分配内存空间。
·进程段表:描述组成进程地址空间的各段,可以是指向系统段表中表项的索引。每段有段基址(baseaddress)。
·系统段表:系统所有占用段。
·空闲段表:内存中所有空闲段,可以结合到系统段表中。
3)段式管理的地址变换。
段式管理系统中,整个进程的地址空间是二维的,即其逻辑地址由段号和段内地址两部分组成。为了完成进程逻辑地址到物理地址的映射,处理器会查找内存中的段
表,由段号得到段的首地址,加上段内地址,得到实际的物理地址(见图4—4)。这个过程也是由处理器的硬件直接完成的,操作系统只需在进程切换时,将进程
段表的首地址装入处理器的特定寄存器当中。这个寄存器一般被称作段表地址寄存器。
4.页式和段式系统的区别
页式和段式系统有许多相似之处。比如,两者都采用离散分配方式,且都通过地址映射机构来实现地址变换。但概念上两者也有很多区别,主要表现在:
·页是信息的物理单位,分页是为了实现离散分配方式,以减少内存的外零头,提高内存的利用率。或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了更好地满足用户的需要。
·页的大小固定且由系统决定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的。段的长度不固定,且决定于用户所编写的程序,通常由编译系统在对源程序进行编译时根据信息的性质来划分。
·页式系统地址空间是一维的,即单一的线性地址空间,程序员只需利用一个标识符,即可表示一个地址。分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。
&&&&原理作业10.&页式存储管理和段式存储管理的工作原理特点、特点及优劣。
&&&&&&&&&答:页式管理的基本思想是:为了更好地利用分区存储管理中
&&&&&所产生的"零头"问题,允许把一个作业存放在不连续的内存块中,
&&&&&又可以连续运行,它允许只调入用户作业中常用部分,不常用部分
&&&&&不长期驻留内存,有效提高了内存的利用率。
&  页式存储管理的工作原理:
&  A、划分实页:将物理内存划分成位置固定、大小相同的"块"(实页
&&&&&&&&面)。
&  B、划分虚页:将用户逻辑地址空间也分成同样大小的页面,成为虚
&&&&&&&&拟空间的虚页面。
&  C、建立页表:有时称为页面表或页面映射表(PMT)。每个作业一
&&&&&&&&张,按虚页号进行登记,其基本的内容有特征位(表示该页是否
&&&&&&&&在内存、实页号以及对应外存的地址。&
&  D、地址变换:将虚页面的逻辑地址转化为实页面的物理地址,在程
&&&&&&&&序执行时改变为物理地址,属于作业的动态重定位,一般由地址
&&&&&&&&转换机构(硬件)完成。
&  特点:
&  允许一个作业存放在不连续的内存块中而又能保证作业连续得以运行
&&&&&&,既不需要移动内存中的信息,又可较好地解决零头。
&  优点:
&  a、不要求作业存放在连续的内存块中,有效地解决零头。
&  b、允许用户作业不是一次集中装入内存而是根据需要调入,作业中
&&&&&&&&不常用部分不长期驻留内存,而本次运行的不用部分根本就不装
&&&&&&&&入内存。
&  c、提供了虚存,使用户作业地址空间不再受内存可用空间大小的限
&&&&&&&&制。
&&&&&缺点:
&&&&&a、页式管理在内存的共享和保护方面还欠完善。
&&&&&b、页面大小相同,位置不能动态增加。
&&&&&c、往往需要多次缺页中断才能把所需的信息完整地调入内存。
&&&&&&&&&段式存储管理的基本思想是:把程序按内容或过程(函数)关系
&&&&&分成段,每段有自己的名字。一个用户作业或进程所包含的段对应于
&&&&&一个二维线性虚拟空间,也就是一个二维虚拟存储器。段式管理程序
&&&&&以段为单位分配内存,然后通过地址映射机构把段式虚拟存储地址转
&&&&&化为内存中的实际地址。和页式管理一样,段式管理也采用只把那些
&&&&&经常访问的段驻留内存,而把那些在将来一段时间内不被访问的段放
&&&&&在外存,待需要时自动调入内存的方法实现二维虚拟存储器。按照作
&&&&&业的逻辑单位--段,来分配内存,适合程序的逻辑结构,方便用户设
&&&&&计程序。
&&&&&段式存储管理的工作原理:
&&&&&A、采用二维地址空间,如段号(S)、页号(P)和页内单元号(D);
&&&&&B、系统建两张表格每一作业一张段表,每一段建立一张页表,段表
&&&&&&&&指出该段的页表在内存中的位置;
&&&&&C、地址变换机构类似页式机制,只是前面增加一项段号。
&&&&&特点:
&&&&&a、每一段分成若干页,再按页式管理,页间不要求连续;
&&&&&b、用分段方法分配管理作业,用分页方法分配管理内存;
&&&&&优点:
&&&&&便于段的共享和保护、段的动态增长以及动态连接。
&&&&&缺点:
&&&&&为了消除零头和允许段的动态增长,需要花费CPU的大量时间在内存
&&&&&中移动作业的分段,而且段的大小也给外存管理带来困难。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 iphone内存管理软件 的文章

 

随机推荐