首页 > 系统相关 >内存管理知识的简单介绍

内存管理知识的简单介绍

时间:2023-08-23 19:22:39浏览次数:33  
标签:简单 知识 地址 区域 内存 寄存器 进程 节点

  • 计算机用于存储的设备
高速缓存(临时存储) 内存,进程(临时存储) 磁盘(永久存储)

从下往上缓存速度越来越快,价格逐渐升高,存储大小越来越小。

  • 内存管理的简单发展

早期的内存管理采取的是运用物理地址存储。

但如果是遇到多进程的话,容易造成问题。

  • 地址空间

管理多进程的内存时:

  1. 要想让进程地址独立,需要采用进程内部的相对地址
  2. 当有进程访问不是自己范围的地址话,需要操作系统进行干预保护。

因此出现了一种存储器抽象形式,称为地址空间。

在CPU中配置了两个寄存器,分别为基址寄存器和界限寄存器。

  • 动态重定位(需要保证程序地址在内存中是连续的):

在将进程装载到内存时,需要将进程的起始地址传到基址寄存器,作为当前进程的起始地址,该进程占内存的长度则需要存到界限寄存器。

在对进程进行操作时,CPU会根据界限寄存器查询跳转是否超出进程长度,如果没有超出,则将其与基址寄存器进行相加,变成实际的物理地址,跳转。

  • 交换技术(swapping)

当内存大小有限,但进程数量有很多时,进程是如何工作的呢?

这时候需要内存的交换技术

先把一部分进程放入磁盘,需要先把内存中暂时用不到的进程移到磁盘,把需要工作的进程放入内存,以此类推。

  • 内存紧缩

在进程交换中会产生进程之间的间隙,要想利用这些碎片化的内存区域,需要将所有进程尽可能向下移动,以留出大块的空闲区域。

缺点:会消耗大量的CPU时间

  • 内存管理
  1. 位图

          将内存划分成单位小区域,每个区域由0或1表示它的状态,空闲或者被占用。当进程需要加载到内存当中的时候,内存需要扫描连续为0的区域,作为进程的内存区域。

缺点:当单位数量较多时,查找比较耗时。

          2.链表

          每一块连续的区域,分别由一个节点表示,有四个值。第一个值若为P,表示这块区域是有进程的,若为H表示空闲区。第二个值指向对应区域的起始位置,第三个值对应的是区间长度,最后的是指针,指向下一个节点。

内存分配:

①首次适配算法(first fit):

如果有进程想要加载到内存,需要从头扫描,直到找到一块足够大小的空闲区。

②最佳适配算法(best fit):

找出大小最适合的空闲区,因为链表中的节点代表连续空间的区域数量,所以远远比位图的单位小区域小得多,也快得多。这时候需要移除某个进程,只需要找到对应的节点,把它的前面节点和后面的节点连接起来。为了节点方便,最好使用双向链表。

 

以上内容为个人学习所用,如有错误,请给予指正。谢谢!

 

标签:简单,知识,地址,区域,内存,寄存器,进程,节点
From: https://www.cnblogs.com/memoblog/p/17652570.html

相关文章

  • 计算机基础知识
    一,计算机基础知识(了解)1,概述-计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。2,组成-由硬件系统和软件系统所组成,没有安装任何软件的计算机称......
  • 性能测试没那么难!RunnerGo,简单、好用
    在当前软件测试行业,熟练掌握性能测试已经是测试工程师们面试的敲门砖了,当然还有很多测试朋友们每天的工作更多的是点点点,性能方面可能也只是做过简单的并发测试,对于编写脚本,搭建环境方面也比较陌生。今天这篇文章就给大家梳理一下如何去做性能测试,和怎么熟练掌握性能测试。文章结构......
  • 性能测试没那么难!RunnerGo,简单、好用
    在当前软件测试行业,熟练掌握性能测试已经是测试工程师们面试的敲门砖了,当然还有很多测试朋友们每天的工作更多的是点点点,性能方面可能也只是做过简单的并发测试,对于编写脚本,搭建环境方面也比较陌生。今天这篇文章就给大家梳理一下如何去做性能测试,和怎么熟练掌握性能测试。文章结......
  • Heikin Ashi最简单的一种烛台移动平均线
    是不是每次进行交易的时候,市场上的各种新闻真真假假,搞的交易者每次都分不清楚,今天FPmarkets澳福给各位投资者推荐一种交易策略——“Heikin  Ashi”“Heikin  Ashi”只通过四个参数构建:开盘价、收盘价、最高价和最低价(最大和最小价格数据值)。换句话说,标准的日本条形图被重新......
  • 软件测试 | 一个简单的Java范例
    下面给出一个简单的Java程序范例,观察Java成都基本结构及相同点。范例:定义一个简单类publicclassTestJava{publicstaticvoidmain(String[]args){//Java操作的一个简单范例,输出和乘方intnum=10;......
  • 01.Linux基础知识及常用命令
    1.linux的文件系统:根目录:/bin目录(常用可执行文件命令)etc目录var目录lib目录(安装包,头文件)home目录(所有用户的家目录)....特殊的:.表示当前目录,..表示上层目录,~/表示家目录; 2.绝对路径与相对路径:绝对路径:从根目录开始描述;相对路径:从当前位置开始描述的路......
  • HUMAnN与PCoA的一个简单综述
    摘要宏基因组分析在现代生态学和农业科学中扮演着重要的角色,通过深入研究土壤微生物群落功能组成的变化,可以为农作物种植提供有益的指导和决策依据。HUMAnN和PCoA在宏基因组学的研究中相辅相成,为我们深入了解微生物群落提供了有力工具。HUMAnN功能组成分析帮助我们理解微生物群落......
  • Django-CKEditor富文本编译器相关知识介绍
    安装pipinstalldjango-ckeditorpipinstallpillow注册富文本编译器在settings中的INSTALLED_APPS代码块中加入ckeditor和ckeditor_uploader(可支持图片上传)配置富文本编译器在settings中增加以下代码:#指定富文本编辑器或其他上传文件的根目录,这里为/test_blog/media......
  • Java简单实现大数相加
    Java简单实现大数相加publicclassBigNumberAdd{/***假设两个都是正数*@paramnum1*@paramnum2*@returnnum1+num2*/publicstaticStringadd(Stringnum1,Stringnum2){intm=num1.length();intn=......
  • python必坑知识点(网络编程)
    1基础1.1作业题1#1.简述二层交换机&路由器&三层交换机的作用。"""二层交换机:构建局域网并实现局域网内数据的转发。路由器:实现跨局域网进行通信。三层交换机:具备二层交换机和路由的功能。"""#2.简述常见词:IP、子网掩码、DHCP、公网IP、端口、域名的作用。""......