【Linux操作系统】进程地址空间与动态库加载

当系统执行一个依赖动态库的可执行程序时,系统不仅要将该可执行程序加载到内存中还要由加载器将动态库加载到内存中(静态库没有),因此必须要让加载器知道该动态库的名称,系统会默认在/lib64路径下查找,解决动态库加载时加载器找不到库文件的问题在这篇文章的末尾有4种解决方案:http://t.csdnimg.cn/UH1AI

动态库被加载到内存中后,会被多个进程共享。也就是说当需要执行多个含同样的动态库的可执行程序时,只需要将该动态库加载一次到内存即可,不需要加载多次。系统会知道该动态库是否已经加载到了内存中。

编译器通过编译链接之后得到可执行程序,此时的可执行程序内部存储的其实已经是各语句和各数据对应以及它们对应的在进程地址空间里的虚拟地址,也就是说当可执行程序加载到内存的那一刻,可执行程序里的代码和数据把自己的虚拟地址全部填入了地址空间里,由于可执行程序一般将数据加载到物理内存中一般采取的是惰性加载机制,即不会一次性全部加载,会慢慢的将自己的代码和数据加载到内存中。当CPU指令执行到可执行程序里的动态库的虚拟地址指令时(即动态库里的函数数据的虚拟地址),CPU执行发生如下跳转:

同一动态库在不同进程中虚拟地址的虽然不同,但是可以通过页表映射得到该动态库的物理地址,进而实现多个进程共享一个动态库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/752199.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

I/O系统

1. I/O接口 接口可以看做两个系统或两个部件之间的交接部分,它既可以是两种硬设备之间的连接电路,也可以是两个软件之间的共同逻辑边界。 I/O接口通常是指主机与I/O设备之间设置的一个硬件电路及其相应的软件控制。 2. 程序查询方式 程序查询方式是一…

深圳比创达|EMC与EMI一站式解决方案:从源头解决,满足您的需求

随着科技的飞速发展,电子产品日益普及,电磁兼容性(EMC)与电磁干扰(EMI)问题也逐渐凸显。 一、EMC与EMI的概述 EMC(电磁兼容性)是指电子设备在共同的电磁环境中能执行各自功能的互不…

TTS x Hallo: 免费数字人头在线生成

是一个利用了百度 Hallo 和 Parler/WhisperSpeech TTS 项目实现的可说话、嘴型匹配的数字人头在线 Space

向日葵API集成服务:三大优势助力企业搭建专属远控方案

为了方便企业用户更加灵活的搭建满足各自需求的软件解决方案,降低开发和部署门槛,很多软件方案供应商提供了多样化的合作模式。 以贝锐向日葵远程控制为例,他们就向客户提供了基础的SaaS服务模式、私有化部署模式、SDK嵌入模式,以…

VUE模板语法(超详细讲解)

大家好,我是DX3906,坚持从工作和生活中不断学习,提炼,沉淀,最终建立自己的强势领域! Vue 使用一种基于 HTML 的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue…

设计模式原则——接口隔离原则

设计模式原则 设计模式示例代码库地址: https://gitee.com/Jasonpupil/designPatterns 接口隔离原则 要求程序员尽量将臃肿庞大的接口拆分为更小的和更具体的接口,让接口中只包含客户感兴趣的方法接口隔离原则的目标是降低类或模块之间的耦合度&…

文华财经7macd预警指标公式源码

文华财经7macd预警指标公式源码: DIFF:EMA(CLOSE,12) - EMA(CLOSE,26); DEA:EMA(DIFF,9); MACD:2*(DIFF-DEA),COLORSTICK; JC:CROSS(DIFF,DEA); SC:CROSSDOWN(DIFF,DEA); N1:BARSLAST(JC)1; N2:BARSLAST(SC)1; X:(HHV(H,N16)-LLV(L,N16))/LLV(L,N16)*100; …

D13005-ASEMI低频开关三极管D13005

编辑:ll D13005-ASEMI低频开关三极管D13005 型号:D13005 品牌:ASEMI 封装:TO-220 批号:2024 沟道:NPN 电流:4A 电压:400V 安装方式:直插式封装 特性&#xff1…

idea配置JAVA

idea项目用的gradle,配置项目java两个地方 1、project structure 菜单: file-》project structure,如图设置你要的java,如果没有,就点击Add SDK增加你要的版本并选择 2、settings 菜单: file-》settings

一站式AI服务平台:MaynorAI助您轻松驾驭人工智能

一站式AI服务平台:MaynorAI助您轻松驾驭人工智能 在当前的数字化时代,人工智能(AI)技术已经成为推动各行各业创新发展的核心动力。为了更好地满足企业和个人用户对AI服务的需求,MaynorAI 作为一个领先的一站式调用国内…

分享HTML显示2D/3D粒子时钟

效果截图 实现代码 线上体验&#xff1a;three.jscannon.js Web 3D <!DOCTYPE html> <head> <title>three.jscannon.js Web 3D</title><meta charset"utf-8"><meta name"viewport" content"widthdevice-width,ini…

【UE开发】游戏库存UI系统Demo

1.项目介绍 1.描述&#xff1a;一种用于存储记录玩家物品的游戏内可视化操作系统。 2.演示&#xff1a;https://www.bilibili.com/video/BV1f53neVEfW/?vd_source50dea901fd12253f417c48b937975b0d 3.大纲&#xff1a; 4.样式&#xff1a; 2.W_Inventory_Main_01&#xff08;…

DigiRL:让 AI 自己学会控制手机

类似于苹果此前发布的Ferret-UI 的安卓开源平替。主要用于在 Android 设备上识别 UI 和执行指令&#xff0c;不同的是它利用了离线到在线强化学习&#xff08;Offline-to-Online RL&#xff09;&#xff0c;能够快速适应应用更新或 UI 变化。

从移动切换到电信IP:详细介绍两种方法

在当前的互联网环境中&#xff0c;用户可能会因为各种原因需要切换网络服务提供商&#xff0c;比如从移动切换到电信。这种切换不仅涉及到网络服务的变更&#xff0c;还可能意味着IP地址的改变。那么&#xff0c;移动的怎么切换成电信的IP&#xff1f;下面一起来了解一下吧。 方…

技术突破:llamafile一键部署大模型,释放AI潜力

目录 一、引言二、什么是llamafile&#xff1f;1、设计目标2、技术构成3、与传统部署方式的对比4、一键部署的优势 三、核心特性1、一键部署的便捷性2、跨平台支持3、独立可执行文件4、简化的分发流程5、技术细节6、用户体验7、安全性和隐私 四、部署流程详解1、下载模型2、操作…

VUE 修改密码功能+密码强度校验

效果图 <template><el-dialogtitle"修改密码":visible.sync"dialog":before-close"cancel":close-on-click-modal"false"width"500px":modal"false"><el-form ref"form" :model"…

Java nio 的线程通信机制线程通信Pipe

Java的Pipe是一种新的线程通信机制&#xff0c;传统的线程通信可以是通过共享内存的方式&#xff0c;socket等方式&#xff0c;而Pipe是通过Java NIO 通信的方式实现共享内存&#xff0c;优点类似于go语言的管道 先上代码 public static void main(String[] args) throws IOEx…

智能充电桩网关,构建高效充电网络

近年来我国新能源汽车的增长速度出现明显的上升趋势&#xff0c;但是其充电桩的发展还比较缓慢。目前在充电桩系统设计期间仍存在一些问题&#xff0c;主要表现在充电设施短缺、充电难等问题&#xff0c;这些问题的发生均会在一定程度上限制新能源汽车的发展&#xff0c;这就需…

【papaparse插件】前端预览csv文件

需求&#xff1a;就是可以在前端直接预览csv文件的内容 1.了解csv文件 1.1 csv文件和xlsx、xls文件的异同 首先了解一下csv文件和excel文件&#xff08;xlsx&#xff0c;xls&#xff09;有什么异同&#xff0c;简单来说他们都是存储表格数据的文件&#xff0c;csv只能显示较…

【C++/STL】:优先级队列的使用及底层剖析仿函数

目录 &#x1f4a1;前言一&#xff0c;优先级队列的使用二&#xff0c;仿函数1&#xff0c;什么是仿函数2&#xff0c;仿函数的简单示例 三&#xff0c;优先级队列的底层剖析 &#x1f4a1;前言 优先队列(priority_queue)是一种容器适配器&#xff0c;默认使用vector作为其底层…