进程的那些事——了解进程(虚拟地址空间)

目录

前言

一、程序地址空间(虚拟地址空间)

二、虚拟地址寻找物理内存

1.页表

总结


前言

提示:这里可以添加本文要记录的大概内容:

程序和进程之间的区别:

        进程:对用户而言,进程是运行中的程序,但实际是进程是对程序动态运行的描述。当程序被加载到内存中并由操作系统执行就变成了进程。进程有独立的内存空间。它的生命周期到进程结束或操作系统终止。

        程序:是一系列静态的,有序执行的指令集合。用于指定计算机来完成特定的任务。通常储存在硬盘中。它的生命周期直到数据被删除或覆盖。

虚拟地址和物理地址的区别:

        虚拟地址:CPU在程序运行的时候生成的地址,是操作系统为进程提供的抽象层。每个进程都有自己独立的虚拟地址空间

        物理地址:内存模块的实际地址,硬件通过物理地址来之间访问内存数据。物理地址空间是全局的


提示:以下是本篇文章正文内容,下面案例可供参考

一、程序地址空间(虚拟地址空间)

1.程序本身不会有地址空间,程序在不在硬盘中运行,而是在内存中运行的,当程序被执行成为进程时占用地址空间。

2.进程中的变量地址都是虚拟地址。

3.系统为每个进程通过 mm-struct 结构体描述一个虚拟地址空间。

 为什么需要给进程提供一个虚拟地址空间,并让进程内部数据都使用虚拟地址?

        一个高级语言程序(指令)在链接生成可执行程序后,这个程序中的各个指令及数据在内存中的位置都已经被安排好了(这样安排对编译器比较友好,所以的数据都安排好之后,当编译器在运行程序的时候,只需要在指定位置拿数据,不用再找数据了),若运行进程时所需要的内存被占用,就会造成冲突。所以操作系统为了防止这种情况出现,不让进程之间访问物理内存,在程序运行的时候,给这个正在运行的程序虚拟出一个完整的,线性的虚拟地址空间,并且每个运行的程序都拥有自己独立的虚拟地址,即使两个相同的运行中的程序(进程)使用相同的虚拟地址也不会访问到同一个物理内存。这时这个进程就能随意的使用虚拟地址

        进程中有一个全局变量,g_val,这个变量指向虚拟地址空间,这个虚拟地址空间保存指向物理内存的地址,通过页表映射来找到物理内存中指定的位置,将全局变量的数据放到物理内存中。 

 

 

二、虚拟地址寻找物理内存

1.页表

        虚拟地址是通过页表来找到物理内存。

        页表:记录了每一个虚拟地址于物理地址之间的映射关系。

作用

        使用虚拟地址空间和页表之后,程序中的数据可以实现物理内存中离散式存储,在页表可以记录内存的访问权限。并且提高了内存访问、控制的安全性。提高了内存置换功能这样就算内存不够用依然能够进行大量的数据处理--将物理内存中暂时不用的数据放到磁盘中存储起来,腾出空间给新的进程使用。

        离散式存储,当一个16k的内存再中间占据了8k左右分别有4k的大小,如果是离散式存储,那么5k的内存就可以分开来存贮再左右两边,提高了内存利用率。 

 

页表关键元素
        1.虚拟地址与物理地址的映射关系
        2.访问权限
        3.缺页中断标志

如何通过虚拟地址找到物理地址

        分段式:将地址空间分为一个一个不同属性的段(对于编译器进程程序管理最友好);

        分页式:将地址空间分为大量的小的分页,提高内存的使用率。(默认小分页为4096);

        段页式:将地址空间进行分段,在每个段内使用分页式进程管理--上面二者的结合;

        

转换过程

        分段式

                分段式虚拟地址组成:段号+段内偏移

                    操作系统针对分段式内存管理构造了一个段表:段号,物理内存段的起始地址

      物理内存起始地址+偏移量=数据的存储空间=虚拟地址

        分页式

                分页式虚拟地址的组成:页号+页内偏移

        页号解析

            以32位操作系统为例:4G虚拟地址

                默认页面大小:4096-4k 4k = 4*1024

                页面个数:4*1024*1024*1024/4*1024 = 102*1024 = 2^20

                因此对页面进行编号:0~2^20-1

                因此再虚拟地址组成中,页号占了高20个bit位,低12bit位就是页内偏移

内存置换:

        当进程进行数据处理的时候,物理内存不够用,这时就会将物理内存中的某些数据拷贝到磁盘交换分区中存储起来,腾出内存给需要使用的数据 


总结

进程虚拟地址空间是什么:

        操作系统通过mm_struct给进程描述的虚拟地址空间

虚拟地址空间有什么用:

        实现数据再物理内存的离散式存储

        提高内存访问、控制的安全性

        通过内存置换再内存不够用的时候可以继续处理数据

如何通过虚拟地址找到物理地址:

        操作系统的三种内存管理方式:分段式、分页式、段页式。

物理地址、物理内存、物理地址空间:

        物理地址:二进制地址是计算机硬件内存中实际存在的地址,物理地址由内存管理单元或内存控制器转换为实际可访问的硬件地址。

        物理内存:通过物理内存条获得的内存空间。是计算机的主要存储区域。

        物理内存空间:是物理地址的集合,每个物理地址都对应内存中的一个存储单元。

        物理地址是物理内存中每个存储单元的标识,物理内存是存储这条存储单元的介质,物理地址空间是物理地址的集合,物理内存决定物理地址空间的大小。

 虚拟地址与虚拟地址空间的关系

        虚拟地址空间的包含虚拟地址的实际,在这个空间中进程通过虚拟地址来访问数据和指令。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web群集--nginx常见的几种负载均衡调度算法的配置过程和效果展示

文章目录 前言环境前置配置httpd主机tomcat主机 负载均衡调度算法1.轮询配置过程效果展示 2.加权轮询配置过程效果展示 3. IP哈希(IP Hash)配置过程效果展示 4. 最少连接(Least Connections)配置过程效果展示 5.加权最小连接这个在…

25考研人数预计下降?这一届考研有哪些新趋势?

2025年考研时间线: 2024年9月:公共课及各院校考试大纲公布; 2024年9月下旬:预报名; 2024年10月:正式报名; 2024年11月:线上/线下确认; 2024年12月中下旬&#xff1a…

如何批量修改图片的名称,高效修改图片名的软件

图片存在我们电脑上,有的时候由于某些原因,可能需要对图片进行大批量的名称修改,这个时候如果我们使用系统的重命名来做的话,它只能一个一个修改,想要批量修改,只能使用专门的命令,不仅复杂&…

虚幻5|C++第三人称射击(1)添加摄像机

一.在C类创建一个一个角色类蓝图,命名为BasePlayer 1.得到cpp和h文件 2.打开BasePlayer.h,定义摄像机内容 编译以下代码,定义摄像机和摄像机组件 private: //定义摄像机 UPROPERTY(VisibleAnywhere,BlueprintReadOnly,Category"…

深入学习电路基础:从理论到实践

引言 电路是电子学的核心,也是现代科技的基石。从简单的灯泡开关到复杂的计算机处理器,电路在各类电子设备中都起到了至关重要的作用。深入学习电路知识不仅有助于理解电子设备的工作原理,还能够为实际设计和开发电子产品打下坚实的基础。 …

qt配合halcon深度学习网络环境配置

1.开发环境qt6,编译器MSCV2019,网络是halcon的对象检测,halcon用20. 2.建立qt项目 3.到halcon安装目录下复制include,lib这两个文件夹到qt项目中进行引用 4.引用到halcon静态库后,到halcon运行目录下找到静态库对应dll文件&…

STM32-PWM驱动舵机——HAL库

什么是舵机? 舵机,也叫伺服电机,在嵌入式开发中,舵机作为一种常见的运动控制组件,具有广泛的应用。 舵机型号介绍: 市面上常见的舵机型号有 SG90、MG90S、MG995、MG996R 等等,主要是扭矩大小…

低代码平台赋能:烟花鞭炮企业数字化转型新篇章

随着数字化转型的浪潮席卷全球,传统制造业正面临着前所未有的变革机遇。烟花鞭炮行业,作为承载深厚文化底蕴与独特工艺的传统产业,也不例外。近年来,我国政府高度重视中小企业数字化转型,出台了一系列扶持政策&#xf…

pdf在线转换成word免费版,一键免费转换

在日常的学习和办公中,PDF文件和Word文档是我们离不开的两种最常见的文件,而PDF与Word文档之间的转换成为了我们日常工作中不可或缺的一部分。无论是为了编辑、修改还是共享文件,掌握多种PDF转Word的方法都显得尤为重要。很多小伙伴关心能不能…

基于大数据的电商平台电脑销售数据分析系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 随着电子商务的蓬勃发展,各大电商平台积累了海量的商品数据。如何从这些数据中提取有价值的信息,对于商家来说至关重要。本项目利用网络爬虫技术从京东电商平台采集各类品牌…

Flink优化之--旁路缓存和异步IO

Apache Flink 是一个开源流处理框架,以其高吞吐量、低延迟和事件驱动的处理能力著称。随着大数据和实时处理需求的不断增加,Flink 在许多行业和应用场景中得到了广泛应用,如金融风控、物联网数据处理、实时数据分析等。然而,随着数…

【基础算法总结】BFS_拓扑排序问题

目录 一, 拓扑排序简介1. 有向无环图(DAG图)2. AOV 网3. 拓扑排序4. 如何实现拓扑排序 二,算法原理和代码实现207.课程表201.课程表IILCR114.火星词典 三,算法总结 一, 拓扑排序简介 1. 有向无环图(DAG图) 入度:针对一…

详解GPU服务器与普通服务器之间的差异

GPU服务器与普通服务器之间的差异,犹如赛车与家用车的对比,不仅在于表面的速度与力量,更深入到其核心技术与应用场景的广泛适应性。以下是对这些差异的深度剖析与美化呈现: 一、硬件配置:架构的革新 普通服务器&#…

Linux下的MySQL8.0报错:[Err]1055

Linux下的MySQL8.0报错:[Err]1055 报错信息解决办法 报错信息 在Linux环境下的MySQL里执行SQL语句报如下错误:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column information_schema.PROFIL…

Linux下使用crontab配置定时任务

文章目录 Linux使用crontab安装crontab启动crontab查看定时任务创建定时任务配置案例配置语法位置含义符号含义 注意 取消定时任务 Linux使用crontab crontab为Linux下的计划任务程序,对应的服务为crond。crond是一个守护进程,每分钟会定期检查是否有要…

涨幅超过了90%,心动网络股价成V字后,TapTap找到流量源了吗?

心动公司发布了截至2024年6月30日止六个月的中期业绩。 在2024年上半年(24H1),公司实现总营收22.21亿元,较去年同期增长了26.7%。归属于母公司的净利润达到2.05亿元,同比激增127.4%。经调整后,归属于母公司…

# 利刃出鞘_Tomcat 核心原理解析(十)-- Tomcat 性能调优--1

利刃出鞘_Tomcat 核心原理解析(十)-- Tomcat 性能调优–1 一、Tomcat专题 - Tomcat性能调优 - 性能测试 1、tomcat 性能测试: 对于系统性能,用户最直观的感受就是系统的加载和操作时间,即用户执行某项操作的耗时。从…

10 先序遍历创建二叉树

这个代码是使用手动输入的方式创建二叉树 比较直观 #include "stdio.h" #include "stdlib.h"typedef int ElemType; typedef struct node {ElemType data;struct node *lchild;struct node *rchild; } Node;Node *create_node(int value) {Node *node (N…

HTTP代理支持UDP协议吗?

在网络通信中,HTTP代理和UDP协议是两个常见但功能和用途不同的技术。本文将详细探讨HTTP代理是否支持UDP,以及在什么情况下可以实现两者的结合。 HTTP代理的基本概念 HTTP代理是一种代理服务器,用于处理HTTP请求和响应。它在客户端和目标服…

element table 表格 span-method 某一列进行相同合并 支持树结构表格

须知 这是 vue2 版本&#xff0c;不过理论上 vue3 也能参考使用 可以直接打开 codepen 查看代码 效果图 代码 打不开 codepen 或者codepen 失效&#xff0c;查看下面代码参考 <script src"//unpkg.com/vue2/dist/vue.js"></script> <script src&…