《操作系统 内存管理》由会员分享,可在线阅读,更多相关《操作系统 内存管理(95页珍藏版)》请在金锄头文库上搜索。
1、内容提要,存储器的层次结构 程序执行的基础知识、程序的装入和链接 连续分配存储管理方式 分页存储管理方式 分段存储管理 段页式存储管理,存储器的层次结构,存储器是计算机系统的重要组成部分 容量、价格和速度之间的矛盾 内存、外存;易失性和永久性 内存,是稀缺资源 在现代计算机系统中,存储通常采用层次结构来组织 多级存储器结构 主存与寄存器 高速缓存和磁盘缓存,多级存储器结构,Storage systems in a computer system can be organized in a hierarchy Speed, access time Cost per bit Volatility,
2、主存 vs. 寄存器,Same: Access directly for CPU Register name Memory address Different: access speed Register, one cycle of the CPU clock Memory, Many cycles (2 or more) Disadvantage: CPU needs to stall frequently & this is intolerable Remedy Cache,高级缓冲技术caching,Caching Copying information into faster stor
3、age system When accessing, first check in the cache, if In: use it directly Not in: get from upper storage system, and leave a copy in the cache Using of caching Registers provide a high-speed cache for main memory Instruction cache & data cache Main memory can be viewed as a fast cache for secondar
4、y storage ,Magnetic disks 磁盘,Transfer time 传输时间 TT data size * Transfer rate Transfer rate (n M/s)-1 ( n Byte/us )-1 1/n us/Byte Positioning time 定位时间 Seek time 寻道 Ts Rotational latency 旋转延迟 TR TP Ts +TR m ms TT VS. TP Please Store data closely,内容提要,存储器的层次结构 程序执行的基础知识、程序的装入和链接 连续分配存储管理方式 分页存储管理方式 分段
5、存储管理 段页式存储管理,程序执行的基础知识,Von Neumann architecture 冯诺依曼体系结构 Program must be brought into memory Main memory is usually too small Process Program must be placed within a process for it to be executed 作业池 User programs Where to place the program several steps(图),地址的类型,Absolute address 绝对地址 Address seen b
6、y the memory unit Physical address 物理地址 Logical address 逻辑地址 Generated by the CPU Virtual address 虚拟地址 When can the absolute address can be decided?,Address binding 地址的绑定,Address binding 地址绑定, the binding of instructions and data to memory, 可以在三种时刻进行 Compile time If memory location known a priori, a
7、bsolute code can be generated; must recompile code if starting location changes. Load time Must generate relocatable code if memory location is not known at compile time. Execution time Binding delayed until run time if the process can be moved during its execution from one memory segment to another
8、. Need hardware support for address maps (e.g., base and limit registers),Memory-Management Unit (MMU),Hardware device, 逻辑地址 物理地址 Relocation register 重定位寄存器 Added to every address generated by a user process at the time it is sent to memory E.g. MS-DOS on 80x86 User program deals with logical addres
9、ses, it NEVER sees the real physical addresses.,是否需要将进程的所有代码和数据一次性装入?,Shall we put the entire program & data of a process in physical memory before the process can be executed? For better memory space utilization Dynamic loading Dynamic linking Overlays Swapping ,程序的装入,绝对装入方式 可重定位装入方式 动态运行时装入方式,绝对装入
10、方式,编译时,产生absolute code,即使用绝对地址的代码 装入时,必须装入到指定的地址 无需对程序和数据的地址进行修改 适用于单道系统,可重定位装入方式,大多数情况下,不能预知装入地址,只能在装入时确定 编译时,产生可重定位代码,即使用相对地址的代码 装入时,必须重定位 通常把在装入时对目标程序中指令和数据的修改过程称为重定位。 由于地址变换是在装入时一次性完成的,以后不再改变,故称为静态重定位 可用于多道系统,动态运行时重定位,有时候,程序会在内存中移动位置 例如对换 需要能支持在运行过程中动态改变程序在内存中的位置 方法:推迟重定位时机 即从相对地址到绝对地址的转换推迟到程序真正
11、执行时才进行 因此,装入内存中的代码和数据的地址仍然是相对地址 需要重定位寄存器的支持,动态运行时装入方式,根据程序运行的局部性,让程序及其数据在需要时才被装入 Better memory-space utilization; unused routine is never loaded. Useful when large amounts of code are needed to handle infrequently occurring cases Error routine No special support from OS is required implemented throu
12、gh program design Due to the users,程序的链接,多个源程序编译多个目标模块;库。 需要链接成可装入模块 根据链接时间的不同 静态链接方式:装入前很早就链接 装入时动态链接:边装入,边链接 运行时动态链接:运行时才链接,静态链接方式,静态链接方式: 在程序运行之前,先将各目标模块以及它们所需要的库函数,链接成一个完整的装配模块,以后不再拆开。 各目标模块内:相对地址 存在目标模块之间的调用关系 外部调用符号 要解决的问题: 修改相对地址: 多个相对地址空间一个统一的相对地址空间 变换外部调用符号,装入时动态链接,在装入时,根据外部模块调用事件,使用装入程序去寻找
13、相应的外部目标模块,并装入,在装入时,修改相对地址 优点: 便于修改和更新 便于实现对目标模块的共享,运行时动态链接,程序的每次运行,可能要执行的目标模块集是不同的 全部装入?按需装入? 运行时动态链接将对某些模块的链接推迟到程序执行时才进行 需要操作系统配合 优点:程序运行前的装入速度加快;省空间,作业:,从一个源程序到一个在内存中可执行的程序,一般需要哪几个步骤? 有哪几种地址类型? 有哪几种程序装入方式和链接方式?,内容提要,存储器的层次结构 程序执行的基础知识、程序的装入和链接 连续分配存储管理方式 分页存储管理方式 分段存储管理 段页式存储管理,连续内存分配方式(contiguous
14、 memory allocation),连续分配存储管理方式 单一连续 固定分区 动态分区 对换,内存通常被划分为两个分区(partitions): 系统区:常驻操作系统,通常位于内存低端 用户区:提供给用户(进程)使用,常位于内存高端 连续内存分配是指: 从用户区中为每个进程分配一个单独的、连续的内存空间。 主要有以下两种方式 单一连续分配方式 多分区式分配方式 固定分区式 动态分区式(可变分区式),单一连续分配方式,最简单 只能用于单用户、单任务系统,存储保护机制 存储管理单元,MMU 或者不采用任何存储保护机制 出于信任,或采用再启动方式,,多分区式分配方式,支持多道程序, 用户区被进一
15、步划分为若干个分区 每一个分区装载一个进程 多道程序度与分区的个数有关 根据分区大小是固定的还是可变的 固定分区方式 大小固定;等大小 or 不等大小 动态分区方式(可变分区方式) 动态&可变:内存的划分是动态的,分区的大小随进程的大小确定,分区的数目随系统的运行而不断变化,固定分区分配方式,支持多道程序,用于60年代IBM360的MFT中 分区的划分方法,两种 等大小 不等大小 但分区的大小一旦确定就不再发生变化 分配算法: 按大小顺序建立分区使用表,0,30K,45K,75K,125K,225K,固定分区使用表,分配算法,缺点 内存利用率低 定义:内部碎片和外部碎片 内部碎片:已经分配出去
16、但得不到利用的存储区域 外部碎片:不能被利用的小分区 解决方案:动态分区,动态分区分配方式,能根据进程实际需要的内存大小,动态分配 能减少内部碎片 关键 数据结构:记录内存的使用情况,特别是空闲内存 分配算法 分配和回收操作,数据结构,空闲分区表,占用额外的空间 空闲分区链,利用空闲分区,分区分配算法,在将一个新作业装入内存时,要从空闲分区表或空闲分区链中,选出一个分区分配给该作业,有三种常见的分配算法 首次适应算法FF:First Fit 循环首次适应算法 最佳适应算法:Best Fit=smallest 最差适应算法:Worst Fist largest,思考,在一个系统中内存有如下的空闲
17、区,10KB,4KB,20KB,18KB,7KB,9KB,12KB,以及15KB。在分别使用首次适应,最佳适应,最差适应以及循环首次适应算法,对下列3个连续空间分配,得到的空闲分区分别是什么? 12KB 10KB 9KB,分区分配操作,分配 设请求的分区大小为u.size; 利用某种分配算法,找到待分配的分区,大小为m.size 根据上述分区分配算法,有m.sizeu.size 判断m.size-u.size与min_size的大小 min_size为事先约定的最小分区大小 ,分割,分割出来的分配出去,余下的加入空闲数据结构 否则,直接分配 将分配到的分区的首地址返回 可以看出,动态分区分配方式中内部碎片最大不超过min_size,