670 likes | 891 Views
第七讲 存储器管理. 中国科学技术大学计算机系 陈香兰 xlanchen@ustc.edu.cn 2013Fall. 内容提要. 存储器的层次结构 程序执行的基础知识、程序的装入和链接 连续分配存储管理方式 分页存储管理方式 分段存储管理 段页式存储管理. 连续内存分配方式 ( contiguous memory allocation ). Reading : Operating System Concepts , p284- 连续分配存储管理方式 单一连续 固定分区 动态分区 对换. 内存通常被划分为两个分区( partitions ) :
E N D
第七讲 存储器管理 中国科学技术大学计算机系 陈香兰 xlanchen@ustc.edu.cn 2013Fall
内容提要 • 存储器的层次结构 • 程序执行的基础知识、程序的装入和链接 • 连续分配存储管理方式 • 分页存储管理方式 • 分段存储管理 • 段页式存储管理
连续内存分配方式(contiguous memory allocation) • Reading: • Operating System Concepts,p284- • 连续分配存储管理方式 • 单一连续 • 固定分区 • 动态分区 • 对换
内存通常被划分为两个分区(partitions): • 系统区:常驻操作系统,通常位于内存低端 • 用户区:提供给用户(进程)使用,常位于内存高端 • 连续内存分配是指:从用户区中为每个进程分配一个单独的、连续的内存空间。 • 主要有以下两种方式 • 单一连续分配方式 • 多分区式分配方式 • 固定分区式 • 动态分区式(可变分区式)
单一连续分配方式 • 最简单 • 只能用于单用户、单任务系统
存储保护机制 • 存储管理单元,MMU • 或者不采用任何存储保护机制 • 出于信任,或采用再启动方式,
多分区式分配方式 • 支持多道程序, • 用户区被进一步划分为若干个分区 • 每一个分区装载一个进程 • 多道程序度与分区的个数有关 • 根据分区大小是固定的还是可变的 • 固定分区方式 • 大小固定;等大小 or 不等大小 • 动态分区方式(可变分区方式) • 动态&可变:内存的划分是动态的,分区的大小随进程的大小确定,分区的数目随系统的运行而不断变化
固定分区分配方式 • 支持多道程序,用于60年代IBM-360的MFT中 • 分区的划分方法,两种 • 等大小 • 不等大小 但分区的大小一旦确定就不再发生变化 • 分配算法: • 按大小顺序建立分区使用表
分配算法 0 30K 45K 75K 固定分区使用表 125K 225K
缺点 • 内存利用率低 • 定义:内部碎片和外部碎片 • 内部碎片:已经分配出去但得不到利用的存储区域 • 外部碎片:不能被利用的小分区 • 解决方案:动态分区
动态分区分配方式 • 能根据进程实际需要的内存大小,动态分配 • 能减少内部碎片 • 关键 • 数据结构:记录内存的使用情况,特别是空闲内存 • 分配算法 • 分配和回收操作
数据结构 • 空闲分区表,占用额外的空间 • 空闲分区链,利用空闲分区
分区分配算法 • 在将一个新作业装入内存时,要从空闲分区表或空闲分区链中,选出一个分区分配给该作业,有三种常见的分配算法 • 首次适应算法FF:First Fit • 循环首次适应算法 • 最佳适应算法:Best Fit=smallest • 最差适应算法:Worst Fist =largest
分区分配操作 • 分配 • 设请求的分区大小为u.size; • 利用某种分配算法,找到待分配的分区,大小为m.size • 根据上述分区分配算法,有m.size>u.size • 判断m.size-u.size与min_size的大小min_size为事先约定的最小分区大小 • >,分割,分割出来的分配出去,余下的加入空闲数据结构 • 否则,直接分配 • 将分配到的分区的首地址返回 可以看出,动态分区分配方式中内部碎片最大不超过min_size
回收,要考虑合并 • 向前合并 • 只需修改前一个空闲分区表项中的大小 • 向后合并(图) • 只需修改后一个空闲分区表项中的起始地址和大小 • 与前后同时合并 • 修改前一个空闲分区表项中的大小,并取消后一个分区表项 • 无相邻空闲分区,无需合并 • 建立一个新的表项,填写相关信息,插入 • 上述过程中,根据链表的维护规则,可能需要调整相应表项在空闲链表中的位置
OS OS OS OS process 5 process 5 process 5 process 5 process 9 process 9 process 8 process 10 process 2 process 2 process 2 process 2 动态分区分配分析 • 随着分配的进行,空闲分区可能分散在内存的各处 • 尽管有回收,但内存仍然被划分的越来越碎,形成大量的外部碎片
解决方案之一:紧凑Compaction • 针对外部碎片:采用紧凑的方法 • 紧凑:通过移动进程在内存中的位置,把多个分散的小分区拼成大分区 • 需要动态重定位技术支持
动态重定位分区分配算法:引入紧凑和动态重定位技术的动态分区分配算法动态重定位分区分配算法:引入紧凑和动态重定位技术的动态分区分配算法 • 基本与动态分区分配算法相同
Swapping 对换 • 最早用于MIT的CTSS中 • 单用户+时间片+对换 • 对换是指把内存中暂时不能运行的进程,或暂时不用的程序和数据,换出到外存上,以腾出足够的内存空间,把已具备运行条件的进程,或进程所需要的程序和数据,换入内存 • 能提高内存利用率 • 对换的单位: • 进程:整体对换;进程对换 • 页、段:部分对换
对换技术需要实现三个方面的功能 • 对换空间的管理 • 进程的换出 • 进程的换入
Backing store,对换空间 • Fast disk, large enough to accommodate copies of all memory images for all users; must provide direct access to these memory images. • 为提高速度,考虑连续分配方式,忽略碎片问题 • 需提供数据结构对空闲盘块进行管理 • 方法类似动态分区分配方法
进程的换出 • 第一步:选择被换出的进程 • Some approaches • RR scheduling: swapped out when a quantum expires • Priority-based scheduling: Roll out, roll in • Lower-priority process is swapped out so higher-priority process can be loaded and executed. • 第二步:换出 • 确定要换出的内容 • 非共享的程序和数据段的换出 • 共享的程序和数据段的换出:计数器 • 申请对换空间,换出,并修改相关数据结构
进程的换入 • 第一步:选择被换入的进程 • 考虑“静止就绪状态”的进程 • +其他原则 • 第二部:申请内存并换入 • 申请成功 • 申请失败:利用对换技术腾出内存
Swapping (cont.) • Context switch • Swapped in & out cost too much • Assume: process size 1MB, disk transfer rate 5MB/sec, average latency 8ms • Transfer time =1MB / (5MB/sec) = 1/5 sec = 200 ms • Swap time = 208 ms • Swap out & in = 416 • Major part of swap time is transfer time • For RR scheduling, time quantum should >> 416ms • Problems exist for pending I/O processes swapping
内容提要 • 存储器的层次结构 • 程序执行的基础知识、程序的装入和链接 • 连续分配存储管理方式 • 离散分配方式(Discrete Memory Allocation) • 分页存储管理方式 • 碎片<页 • 分段存储管理 • 从逻辑上进行分段 • 段页式存储管理
内容提要 • 存储器的层次结构 • 程序执行的基础知识、程序的装入和链接 • 连续分配存储管理方式 • 离散分配方式(Discrete Memory Allocation) • 分页存储管理方式 • 碎片<页 • 分段存储管理 • 从逻辑上进行分段 • 段页式存储管理
分页存储管理方式 1)将一个进程的地址空间分成若干个大小相等的片,称为页面或页(pages) 2)内存空间也分成与页大小相同的若干个存储块,称为物理页或页框(page frames) 序号:0,1,……,n 大小:取2的幂, 512~8192B
地址结构 • 页内偏移:相对于页(页框)的起始地址的相对地址 • 页(页框)号 • 对于32位地址长度 • 若页(页框)的大小为4KB,则需要使用低端12位表示页内偏移 • 剩余的高端20位可以表示220个页(页框),1M个 31 12 11 0 页(页框)号p 页(页框)内偏移d
计算页(页框)号和页(页框)内偏移的方法:计算页(页框)号和页(页框)内偏移的方法: • 地址:A • 页(页框)大小:L 页(页框)号p= A 整除 L 页(页框)内偏移d= A mod L • 考虑L是2的幂,不妨设为2N,则 • p = A 右移N位,即取A的高(32-N)位 • d=A的低端N位
必须在进程的逻辑地址空间和内存的物理地址空间之间建立一个映射关系必须在进程的逻辑地址空间和内存的物理地址空间之间建立一个映射关系 • 使用页表 • 每个进程都拥有各自的页面映射表,即页表 • 按序号,进程地址空间中的每个页在页表中都有一个页表项表示 • 页表项中记录的对应的物理页框的序号 • 可以实现从页号到页框号的映射
Page size = 4B Physical memory = 32B 8 frames Logical memory = 16B 4 pages Logical address 9 = 2*4+1 p=2, d=1 Page 2 is stored in frame 1 Physical address = 1*4+1 = 5 页表的例子
地址变换机构 • 使用专门的(软)硬件将用户地址空间中的逻辑地址转换为内存空间中的物理地址 • 基本的地址变换机构 • 具有块表的地址变换机构
基本的地址变换机构 Page table is kept in main memory, & • Page-Table Base Register (PTBR) • Points to the page table currently used • Page-table length register (PRLR) • Indicates size of the page table • Context switch
> + 3 b
Effective memory-access time, time needed for every data/instruction access • 需要2次访存 • Access the page table & Access the data/instruction • Solution: • A special fast-lookup hardware cache called associative registers or translation look-aside buffers (TLBs)
联想存储器,快表 • Associative registers • Each register : a key & a value • Parallel search (high speed) • Expensive, typically 8~2048 entries • Address translation (A´, A´´) • If A´ is in associative register, get frame # out. • Otherwise get frame # from page table in memory
联想存储器,快表 • TLB miss(TLB缺失) • If the page number is not in the associative registers • Get & store • Hit ratio(命中率) • The percentage of times that a page number is found in the associative registers • Context switch TLB flushed • TLB replacement algorithm
> + 具有块表的地址变换机构
Effective Access Time 有效存取时间 • 设: Associative Lookup = time unit;memory cycle time = t time unit;Hit ratio = • Effective Access Time (EAT) EAT = (t + ) + (2t + )(1 – ) = 2t + – t • If (20 ns), t(100 ns), 1(80%),2(98%): • TLB hit: 20+100=120 ns • TLB miss: 20+100+100=220 ns • EAT1 = 120*0.8 + 220 * 0.2 = 140 ns • EAT2 = 120*0.98 + 220 * 0.02 = 122 ns
Memory Protection 内存保护 • If page size 2n, page & frame is aligned at 2n, so … • Memory protection implemented by associating protection bit with each frame • Provide read only, read-write, execute-only protection or… • Valid-invalid • “valid”: the associated page is in the process’ logical address space, and is thus a legal page. • “invalid”: the page is not in the process’ logical address space.
Address space 214 Page size 2KB Process size (0~10468) Page 5 has internal fragmentation PTLR=6 Page 6 & 7 are invalid Valid/invalid bit example 10240 10486 12287
两级和多级页表 • 考虑:地址空间:32位;页大小4KB;有220即1M个页需要页表项:1M个设,每个页表项使用32位表示,需要4MB的空间 • 解决方案: • 进一步离散
page offset page number p1 p2 d 10 10 12 两级页表 • 对页表分页,建立外层页表(页目录) • 则上述4MB的页表,进一步分为1K个页需要1K个页目录项假设每个页目录项使用32位表示,需要4KB • 因此,逻辑地址wherep1 is an index into the outer page table, and p2 is the displacement within the page of the outer page table.
+ + 具有两级页表的地址变换机构
多级页表及其性能 • Level number = L, effect memory accesses time = (L+1)t 考虑高速缓存技术: • Cache hit rate of 98 percent yields: effective access time = 0.98 ×120 + 0.02 × 520 = 128 nanoseconds.which is only a 28 percent slowdown in memory access time.
内容提要 • 存储器的层次结构 • 程序执行的基础知识、程序的装入和链接 • 连续分配存储管理方式 • 离散分配方式(Discrete Memory Allocation) • 分页存储管理方式 • 碎片<页 • 分段存储管理 • 从逻辑上进行分段 • 段页式存储管理