码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
什么是内存和进程的运行原理
文章目录
什么是内存
存储单元
进程运行的基本原理
逻辑地址和物理地址
从写程序到程序运行—编译、链接、装入
装入的三种方式
绝对装入
静态重定位
动态重定位
三种链接方式
静态链接
装入时动态链接
什么是内存
内存是一种硬件,我们的程序必须进入内存,才能被CPU执行,我们的CPU只能跟内存交互
存储单元
为了知道我们的数据存储在什么地方,那么就需要给我们的内存进行分区 编号,比如我们的酒店,就分为一间间客房,然后给客房编号,我们的住户就知道应该住在酒店的什么区域
我们的内存中将这种小房间称为
存储单元
如果计算机按照字节编址(一个房间的大小为一个字节)
如果按字编制,那么每个存储单元的大小为一个字,如果计算机的字长是16位,那么每个存储单位的大小位16位
数量单位和内存地址
进程运行的基本原理
指令就是操作码和若干参数(包括地址码)
因为这种特性,所以造成我们的代码中的原子性的问题
因为要获得数据,所以我们必须要得到数据的地址,在上面的例子中,指令中给的变量x的实际地址(物理地址),但是在实际生成机器指令的适合并不知道该进程的数据会被放到什么位置,所以在编译生成的指令一般是使用逻辑地址
逻辑地址
和物理地址
从写程序到程序运行—编译、链接、装入
编译:就是将我们的高级语言编程成机器语言
链接:由链接程序将
编译后形成一组目标模块
,
以及将所需的库函数链接在一起
,形成一个完成的的装入模块
装入:也就是将装入模块装入内存运行
装入的三种方式
绝对装入
这种方式只适合我们的单道程序环境 也就是我们程序中的地址必须是物理地址,不然就会出错
可以由我们的程序员直接赋予,但是一般是在编译或者汇编的时候给出
静态重定位
我们的装入模块的地址加上物理上的初始地址,然后在装入内存
这种需要在装入内存的时候,必须要分配其要求的全部内存空间,而且这种方式一旦进入了内存,在运行期间就不能在移动,也不能再神奇内存空间
动态重定位
编译,链接后的装入模块的地址是我们的逻辑地址,装入内存后也还是我们的逻辑地址
当我们的程序真正要执行的时候,才会利用重定位寄存器来得到真正的物理地址
好处就是
我们允许我们的程序在内存中发生移动
并且可以将程序分配到不连续的存储区,我们在程序允许的时候装入它的部分代码就可以进行运行,然后再程序运行期间根据需求动态申请分配内存(这样可以想用户提供一个比存储空间更大的地址空间)
三种链接方式
静态链接
在程序运行之前,就是还没有装入内存就将各目标模块以及它们所需的库函数连接成一个完整的可执行文件(装入模块),之后不再拆开
装入时动态链接
在装入的时候动态链接,各目标模块装入内存的时候,边装入边链接的链接方式
也就是在程序执行的时候当需要该目标模块的时候,才对它进行链接
相关阅读:
Chat GPT 使用教学,文字创作、学习
2022第二届中国高校大数据竞赛A题思路
Html5的新增特性
怒冲GitHub榜首,京东T8幕后打造高并发面试手册,狂虐阿里面试官
css3中有哪些新属性(特性)?
智慧大棚——用科技让大棚“开口说话”
学生静态HTML个人博客主页【Web大学生网页作业成品】HTML+CSS+JavaScript
openEuler 亮相全球顶级开源盛会 OSSUMMIT 2023,持续推动智能化未来的实现
SP22 BEACON :Directed Grey-Box Fuzzing with Provable Path Pruning
【 C++ 】特殊类设计
原文地址:https://blog.csdn.net/qq_50985215/article/details/127604196
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号