第2节分段存储管理_第1页
第2节分段存储管理_第2页
第2节分段存储管理_第3页
第2节分段存储管理_第4页
第2节分段存储管理_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3单元 主存管理第2节 分段存储管理l 什么是段?什么是段?l 段如何放入内存段如何放入内存l 地址映射地址映射l 碎片问题碎片问题l 举例举例程序员眼中的程序n由若干部分由若干部分(段段)组成,每个段有各自的特点、用组成,每个段有各自的特点、用途:代码段只读,代码途:代码段只读,代码/数据段不会动态增长数据段不会动态增长主程序主程序main函数库函数库sin栈栈stack动态数组动态数组array变量集变量集data程序员眼中的一个程序程序员眼中的一个程序程序员怎么定位具体指令程序员怎么定位具体指令(数据数据): 如如mov es:bx, ax00000第3单元 主存管理第2节 分段存储管

2、理l 什么是段?什么是段?l 段如何放入内存段如何放入内存l 地址映射地址映射l 碎片问题碎片问题l 举例举例不是将整个程序,是将各段分别放入内存021301230K70K180K330K360K420K460K500K基址基址长度长度保护保护段号段号180K150KR0360K60KR/W170K110KR/W2460K40KR3进程段表进程段表接下来的问题是内存怎么分割接下来的问题是内存怎么分割? ?这样就可以将程序的各个段载这样就可以将程序的各个段载入到相应的内存分区中了入到相应的内存分区中了划分成一个个区划分成一个个区固定分区 与 可变分区分区分区1 操作系统操作系统 分区分区2 分区

3、分区3 段请求段请求段段1 操作系统操作系统 段段2 段请求段请求空闲空闲 固定分区:初始化的时候划分好分区固定分区:初始化的时候划分好分区可变分区:依据段的大小,可变分区:依据段的大小,每次从空闲区中划一块每次从空闲区中划一块数据结构Seg1 操作系统操作系统 Seg2 空闲空闲 空闲分区表空闲分区表每个进程都有一个段表每个进程都有一个段表始址始址长度长度250K250K始址始址长度长度标志标志100K100KSeg1200K50KSeg20K100K200K250K500K为一个段分配分区始址始址长度长度350K150KSeg1 操作系统操作系统 Seg2 空闲空闲 空闲分区表空闲分区表进

4、程段表进程段表始址始址长度长度250K250K始址始址长度长度标志标志100K100KSeg1200K50KSeg20K100K200K250K500KSeg3 空闲空闲 n段内存请求段内存请求: reqSize = 100K始址始址长度长度标志标志100K100KSeg1200K50KSeg2250K350KSeg3350K释放一个内存分区始址始址长度长度350K150KSeg1 操作系统操作系统 Seg2 空闲分区表空闲分区表段表段表始址始址长度长度350K150K200K50K始址始址长度长度标志标志100K100KSeg1250K100KSeg30K100K200K250K500KSe

5、g3 空闲空闲 n段段2不再需要,释放内存不再需要,释放内存始址始址长度长度标志标志100K100KSeg1200K50KSeg2250K100KSeg3350K空闲空闲 依申请者所要求的主存区的大小,分区分配程序在空闲主存中找一个满足用户需要的空闲块; 若找到了所需的空闲区,有两种情况空闲区与要求的大小相等,将该空闲区分配并从空闲区管理数据中中摘除;空闲区大于所要求的的大小,将空闲区分为两部分:一部分成 为已分配区,建立相应数据;剩下部分仍为空闲区。 返回所分配区域的首址;否则,告之不能满足要求。 检查释放分区(即为回收分区)在主存中的邻接情况 ; 若上、下邻接空闲区,则合并,成为一个连续的

6、空 闲区; 若回收分区不与任何空闲区相邻接,建立一个新的空 闲区, 修改空闲区数据结构。放置策略:多个空闲区选哪个?Seg1 操作系统操作系统 空闲分区表空闲分区表始址始址长度长度350K150K200K50K0K100K200K250K500KSeg3 空闲空闲 350K空闲空闲 n又一个段提出内存请求又一个段提出内存请求: reqSize=40K,怎么办,怎么办?首次适配首次适配: (200,50)最佳适配最佳适配: (200,50)最差适配最差适配: (350,150)第3单元 主存管理第2节 分段存储管理l 什么是段?什么是段?l 段如何放入内存段如何放入内存l 地址映射地址映射l 碎

7、片问题碎片问题l 举例举例分段的地址映射分段系统的地址变换过程 每个进程一个,段表每个进程一个,段表控制寄存器段表始址段表长度2100段号S越界1 K段长600段号01236 K4 K5002008 K9200基址位移量W82928K82928692主存物理地址有效地址放在放在PCB中中逻辑地址第3单元 主存管理第2节 分段存储管理l 什么是段?什么是段?l 段如何放入内存段如何放入内存l 地址映射地址映射l 虚存虚存l 碎片问题碎片问题l 举例举例分段的方案不太好提供虚存虚存实现虚存实现:部分放入,换出换入部分放入,换出换入换入换出比较困难!换入换出比较困难!分段方案还需要解决碎片问题分段方

8、案还需要解决碎片问题第3单元 主存管理第2节 分段存储管理l 什么是段?什么是段?l 段如何放入内存段如何放入内存l 地址映射地址映射l 虚存虚存l 碎片问题碎片问题l 举例举例可变分区造成的问题seg1 操作系统操作系统 空闲分区表空闲分区表始址始址长度长度350K150K200K50K0K100K200K250K500Kseg3 空闲空闲 350K空闲空闲 n发起请求发起请求reqSize=160K怎么办怎么办?总空闲空间总空闲空间160,但没有一个空,但没有一个空闲分区闲分区160,怎么办,怎么办?将空闲分区合并:内存拼接将空闲分区合并:内存拼接技术技术 这就是内存碎片问题这就是内存碎片

9、问题 20KB 54KB58KB135KB254KB256KB1主存138KB作业2 0os作业3作业拼接前20KB 0 54KB131KB247KB256KB1主存os作业作业2作业3拼接后拼接、碎片整理拼接、碎片整理第3单元 主存管理第2节 分段存储管理l 什么是段?什么是段?l 段如何放入内存段如何放入内存l 地址映射地址映射l 虚存虚存l 碎片问题碎片问题l 举例举例举例若段式存储管理提供用户使用的逻辑地址占24位,其中段内地址占16位,那么用户程序最多分多少段?当把程序转入主存时,每段占用主存的最大连续区域是多少?考虑段表如下,计算逻辑地址对应的物理地址(0,430)(2,88)段号基址段长0256600123001282112100 某基于动态分区存储管理的计算机,其主存容量为55mb(初始空间),采用最佳适配(Best fit)算法,分配和释放的顺序为:分配15mb,分配30mb,释放15mb,分配8mb,此时主存中最大空闲分区的大小是( )A 7mb B 9mb C 10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论