首页 > 系统相关 >操作系统速成——3.内存管理

操作系统速成——3.内存管理

时间:2022-11-05 21:55:56浏览次数:43  
标签:操作系统 装入 分区 速成 地址 内存 分配 页面

三.内存管理

引入目的:更好的支持多道程序的并发执行,提高系统性能

主要功能:内存空间的分配与回收、存储的保护和共享、地址转换、内存扩充

 

存储的保护和共享就是说各道作业在各自的存储空间内运行,互不干扰

 

地址转换——在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致,因此存储管理必须提供地址变换功能,把逻辑地址转换成相应的物理地址。

内存的扩充——利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存

 

用户程序的主要处理阶段——

1.编译阶段:创建源文件

2.编译阶段:由编译程序将用户源代码编译成若干目标模块,生成目标文件

3.链接阶段:由链接程序将编译后形成的一组目标模块及所需的库函数链接在一起,形成一个完整的装入模块。生成可执行文件(形成逻辑地址)

4.装入阶段:由装入程序将装入模块装入内存运行

5.运行阶段:得到结果

 

相关概念

程序的装入——绝对装入(逻辑地址必须和实际的内存地址完全一样)、静态重定位(地址变换在装入时一次完成)、动态重定位(地址变换在执行程序的时候再完成)

程序的链接:静态链接、装入时链接、运行时链

 

地址空间

逻辑地址空间(地址空间从0开始)

物理地址空间(内存中物理单元的集合)

 

管理方式分为连续分配管理方式和非连续分配管理方式

连续分配管理方式:

单一连续分配   分配到内存固定的区域(有内部碎片,内部碎片就是有些内存空间没有被用上)

固定分区分配    分配到内存不同的固定区域,分区可以相等可以不等(内部碎片)

动态分区分配    是可变分区存储管理,按照程序的需要进行动态的划分。动态分区的分配策略算法——首次适应(最好空闲分区以地址递增的次序链接,分配内存时顺序查找,找到大小能满足要求的第一个空闲分区,缺点增大查找开销)、最佳适应(空闲分区按容量递增的方式形成分区链,找到第一个能满足要求的空闲分区,缺点外部碎片过多)、最坏适应(空闲分区以容量递增的次序链接,找到第一个能满足要求的空闲分区,既挑选出最大的分区,缺点对大进程不利)、领近适应(由首次适应算法演变而成。不同之处是,分配内存时从上次查找结束的位置开始继续查找) 

 

非连续分配管理方式:基本分页式存储管理、基本分段式存储管理、段页式

 

内存扩充

1.覆盖(同一程序或进程中) 

2.交换(不同进程/作业之间)

 

虚拟内存

引入原因:在逻辑上扩充内存

组成部分:页表机制、中断机制、地址变换机制、内存与外存

 

页面淘汰(置换)算法:

先进先出页面淘汰(置换)算法(FIFO)

最近最久未用页面淘汰(置换)算法(LRU)

最近最少用页面淘汰(置换)算法(clock)

最优(最佳)页面淘汰(置换)算法(OPT)

注意:页面淘汰是由缺页中断引起的,单缺页中断不见得一定引起页面淘汰

 

抖动:页面频繁的换进换出,原因分配给进程的进程快不足

页面分配策略:固定分区局部置换(物理块不变)、可变分区全局置换(动态增加物理块)、可变分区局部  置换(只允许从该进程的内存页面中挑选一页)

标签:操作系统,装入,分区,速成,地址,内存,分配,页面
From: https://www.cnblogs.com/romablog/p/16861434.html

相关文章

  • 三级指针动态分配/释放内存(C / C++)
    C语言版本#include<stdio.h>#include<stdlib.h>#definehigh2#definerow3#definecol4intmain(){inti,j,k;//p[2][3][4]int......
  • 测试工程师快速成长书单推荐
    转载:老张读书分类https://www.cnblogs.com/imyalost/category/923003.html 关于软件测试的思维和方法论《Google软件测试之道》 五星推荐《敏捷软件测试》 现在越来......
  • Linux共享内存通信的C语言Demo代码
    重点注明:本文代码来源于:https://blog.csdn.net/github_38294679/article/details/122360026  =====================================================  使用p......
  • 学习笔记-内存管理
    内存管理注:笔记中拓扑图drawio源文件在其图片目录下更多内存相关知识点可见内存笔记Windows内存管理可概括为三大机制:虚拟地址空间管理;物理页面管理;......
  • 操作系统复习错题集合
    操作系统复习错题集合​ 主要记一下这个写操作,是增删目录中的目录项​ 文件有逻辑结构和物理结构,逻辑结构有流式和记录式,物理结构有顺序式、索引式、链接式UNIX题目......
  • #yyds干货盘点#监控前端内存泄漏
    内存泄漏是可以分成两类的,一种是比较严重的,泄漏的就一直回收不回来了,另一种严重程度稍微轻点,就是没有及时清理导致的内存泄漏,一段时间后还是可以被清理掉不管哪一种,利用开发......
  • 从C#到Python手把手教你用Python实现内存扫描获取指定字符串
    ......
  • 操作系统速成——2.进程调度
    二.进程调度 2.1进程管理引入进程的目的:为了更好的描述和控制程序并发执行,实现操作系统的并发性和共享性(进程是动态的,程序是静态的)进程定义:是计算机中的程序关于某数......
  • tomcat内存配置及配置参数详解
    转自:https://zhuanlan.zhihu.com/p/43158214 JAVAWEB开发过程中经常需要使用到tomcat,而tomcat的内存配置又是一件影响性能的重要工作,经常在配置过程中搞不清在一台服务......
  • java内存分析
    java内存分为 堆:存放new的对象和数组 可以被所有线程共享,不会存放别的对象引用 栈:存放基本变量类型(会包含这个基本类型的具体数值) 引用对象的......