首页 > 系统相关 >内存的基础知识

内存的基础知识

时间:2024-11-29 09:13:53浏览次数:9  
标签:程序运行 装入 基础知识 物理地址 内存 模块 链接

内存的基础知识

image


一、存储单元

image

二、指令的工作原理

重点:区分物理地址和逻辑地址

image

三、从写程序到程序运行

image

四、链接的三种方式

(一)静态链接

在程序运行之前,先将各目标模块及它们所需的库函数连接成一个完整的可执行文件(装入模块),之后不再拆开

(二)装入时动态链接

将各目标模块装入内存时,边装入边链接的链接方式

(三)运行时动态链接

在程序执行中需要该目标模块时,才对它进行链接。其优点是便于修改和更新,便于实现对目标模块的共享

五、装入的三种方式

(一)绝对装入

重点:编译时就将逻辑地址转换成物理地址,只适用于单道程序环境

(二)可重定位装入(静态重定位)

重点:编译和链接后,装入时再将逻辑地址转换为物理地址

特点:在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。作业一旦进入内存后,在运行期间就不能再移动,也不能再申请内存空间

(三)动态运行时装入(动态重定位)

重点:编译、链接和装入后,需要执行时才将逻辑地址转换为物理地址

特点:

  • 需要一个重定位寄存器的支持(存放装入模块存放的起始位置
  • 可将程序分配到不连续的存储区中
  • 在程序运行前只需装入它的部分代码即可投入运行,然后在程序运行期间,根据需要动态申请分配内存
  • 便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间
  • 可将允许程序在内存中发生移动

标签:程序运行,装入,基础知识,物理地址,内存,模块,链接
From: https://www.cnblogs.com/Wind730/p/18575706/basic-knowledge-of-memory-nevyy

相关文章

  • 内存管理的概念
    内存管理的概念‍​​‍一、​​‍二、内存保护(一)方法一:设置上下限寄存器​​‍(二)方法二:设置重定位寄存器(基址寄存器)和界地址寄存器(限长寄存器)​​......
  • Linux物理内存管理
    1物理内存初始化——引导分配器memblock  Linux内核启动时,先要初始化物理内存,这个阶段的作用主要是确定物理内存大小,哪些是可用的?哪些是预留的?完成这一阶段工作的是memblock引导分配器。  内核启动时初始化物理内存的处理函数调用路径大概是(基于Linux5.10.1源码查看): ......
  • jvm-44-jvm 内存性能分析工具 Eclipse Memory Analyzer Tool (MAT) / 内存分析器 (MAT
    拓展阅读JVMFULLGC生产问题I-多线程通用实现JVMFULLGC生产问题II-如何定位内存泄露?线程通用实现JVMFULLGC生产问题III-多线程执行队列的封装实现,进一步抽象jvm-44-jvm内存性能分析工具EclipseMemoryAnalyzerTool(MAT)/内存分析器(MAT)jvm-45-jvmdump......
  • Listener内存马
    概述Listener是JavaWebApp中的一种事件监听机制,用于监听Web应用程序中产生的事件,例如,在ServletContext初始化完成后,会触发contextInitialized事件,实现了ServletContextListener接口的Listener就可以接收到事件通知,可以在内部做一些初始化工作,如加载配置文件,初始化数据库连接池......
  • Servlet内存马
    emmm.....本篇写的还不是很完善,学着后边的忘着后边的,后续边学边完善吧........概述如果你不了解IDEA调试Tomcat和Tomcat各组件概念可以参考我的博客:JAVAWEB环境搭建和Tomcat各组件解析由前边我们学习Tomcat知道了Container中的Context概念,Context负责管理一个Web应用程序......
  • [单片机]Keil编译内存信息
    单片机包含的存储空间有:片内Flash与片内RAM,其中RAM相当于内存,Flash相当于硬盘。编译器会将一个程序分类为好几个部分,分别存储在单片机不同的存储区。分区如下:Code:代码段,存放程序的代码部分;RO-data:只读数据段,存放程序中定义的常量;RW-data:读写数据段,存放初始化为非0......
  • 网络安全基础知识详解,看这一篇就够了!(内附学习笔记)
    一、什么是网络安全?百度上对“网络安全”是这么介绍的:“网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露、系统连续可靠正常地运行,网络服务不中断。”嗯…是不是感觉有点抽象。那么我们再换一种表述:网络安......
  • C++_内存模型和包
    C++内存堆(heap)和栈(stack)是两种用于存储数据的内存区域 stack栈内存是由操作系统自动管理栈是一种用于存储局部变量和函数调用信息的内存区域,通常采用LIFO(后进先出)结构。 heap堆内存是用于动态分配的内存区域,通过显式地使用new和delete C语言【malloc分配空间,free......
  • 新版idea编译项目内存溢出解决办法
    1.将idea安装bin目录下的配置文件内存设置调大安装目录bin目录下的.vmoptions文件修改-Xms512m-Xmx16384m-Xss4M-XX:MaxPermSize=16384m这里我电脑16g内存,调到最大了,可以视自己电脑情况调2.将Idea编译器构建进程的共享堆大小调3.将javacompiler的usecompiler修改为......
  • opensearch基础知识
    opensearch基础ClusterContainsoneormorenodesManagedbyamasternodeNodeSingleserverpartofaclusterTypes:Master-eligible,data,ingest,etc.IndexCollectionofdocumentswithsimilarcharacteristicsManagedbyshardsShard(分片):......