计算机:理解操作系统:内存篇(下)

news2024/12/26 9:33:16

内存

  • 1. 指针与引用
  • 2. 进程的内存模型
  • 3. 幻象大师---操作系统
  • 4. 总结

本篇是 关于计算机内存最后一篇文章
什么是内存
C/C++内存模型
堆区与栈区的本质
Java、Python等内存模型
Java内存模型
Jave中的堆区与栈区是如何实现的
Python内存模型

指针与引用
进程的内存模型
幻想大师-操作系统
总结

1. 指针与引用

  1. 在各种编程语言中我们经常听到两个词:指针或者引用,这两个词都是好内存相关的,指针和引用的作用都是“如何找到存放在内存上的数据”
  2. C++中有指针和引用的概念,Java、Python 只有引用的概念(指针强调位置,引用强调强调别名)
    由于Java/Pyhton 是通过解释器来查找对象的,也只有解释器知道这个对象在内存中的具体位置。C++是没有解释器的,所以需要指针来查找位置。

2. 进程的内存模型

  1. 我们知道不管是什么语言,最后操作系统看到的都是C程序,C程序在内存运行起来就是进程
  2. 下图是描述 32位操作系统下进程在内存中是什么样子
    在这里插入图片描述
  3. 在上图汇总多出一块内存,这块内存就是操作系统在运行时候所占用的内存
  4. 每个进程独占一个连续的4G大小的内存,内存从地址0开始,一直到 0xffffffff ,其中最上方的1G留给操作系统使用,下方的3G留给进程自己使用,程序员可以操作的区域就是堆区和栈区。
    🚘🚘🚘🚘🚘
    请思考下面两个问题
    🚀 为什么每个进程认为自己占用的是 4G内存了 ? 如果我的 计算机上只有2G内存,进程还会认为自己拥有4G内存吗?
    🚀 操作系统可以运行很多程序,但是内存是由限的,力图只有2G ,每个进程都认为自己拥有4G内存,这会不会有什么问题 ?
    要回答上面两个问题,下面就由我来带你了解下 操作系统 。

3. 幻象大师—操作系统

  1. 其实进程看到的内存是 操作系统制造的幻觉,操作系统让每个进程都认为内存只有两部分,一部分是操作系统的,一部分是自己的,这个就是 ------虚拟内存。
  2. 在虚拟内存上程序员分配内存不受真实物理内存限制。

4. 总结

要想学号操作系统,学号虚拟内存是必不可少的

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css tooltip (web.dev)

目录 版权介绍tool-tip在上居中动画效果宽度边界 tool-tip::after范围锥形渐变-webkit-mask尖角怎么来的? 附录完整代码 版权 本文为原创, 遵循 CC 4.0 BY-SA 版权协议, 转载需注明出处: https://blog.csdn.net/big_cheng/article/details/130262213. 介绍 https://web.dev…

【周末闲谈】AI作图,你真的了解它吗?

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录 系列目录前言AI绘画🤖🤖🤖工作…

[C++]:万字超详细讲解多态以及多态的实现原理(面试的必考的c++考点)

文章目录 前言一、多态的定义及实现1.多态的构成条件2.c11的override和final3.重载,重写,重定义的比较4.抽象类5.多态的原理6.多继承中的虚函数表7.动态绑定和静态绑定总结 前言 多态的概念: 多态的概念:通俗来说,就是…

【Linux】使用systemd设置开机自启动命令

目录 1 使用使用systemd实现开机自动运行命令1.1 新建一个.service文件1.2 编写.service文件1.2.1 [Unit]1.2.2 [Service]1.2.3 [Install] 1.3 启动服务并设置自启动 2 编写Systemd服务文件的要点2.1 Systemd服务文件的位置2.2 Systemd服务文件的格式2.3 Systemd服务文件的基本…

【基础】Kafka -- 基础架构及核心概念

Kafka -- 基础架构及核心概念 初识 KafkaKafka 基本架构Kafka 主题与分区主题与分区分区副本机制 Replica高水位 HW 生产者生产者客户端必要的参数配置消息的发送序列化分区器生产者拦截器 原理分析重要的生产者参数 消费者消费者与消费者组消费者客户端必要的参数配置订阅主题…

MySQL 按关键字进行截取

一、问题背景 取MySQL数据表中某个字段中的IP信息。 如:t_log 表中的 user_ip 字段值为 {“username”:“miracle”,“ip”:“110.230.128.186”},取出IP信息 110.230.128.186。 建表和初始化SQL语句,如下: SET NAMES utf8mb4…

GORM操作mysql数据库

对象就是程序的数据结构,关系是数据库。就是将程序的数据结构与数据库表对应起来。 在GORM是Go语言的ORM框架,将go的数据结构转化为数据库表,例如将结构体转化为数据库表。 引入gorm框架 远程下载gorm框架 go get -u gorm.io/driver/mysq…

HTTP中的Content-type详解

Content-Type Content-Type(MediaType),即是Internet Media Type,互联网媒体类型,也叫做MIME类型。在互联网中有成百上千中不同的数据类型,HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签&#x…

关于java.io的学习记录(写入文本)

可以通过字节流(FileOutputStream)、字符流(OutputStreamWriter)、字符缓冲流(BufferedWriter)读取文本中的数据。 FileOutputStream写入文本 public void write(){String path "writeTest.txt"…

【是C++,不是C艹】 什么是C++ | C++从哪来 | 学习建议

💞💞欢迎来到 Claffic 的博客 💞💞 👉专栏:《是C,不是C艹》👈 前言: 我知道你急着学C,但你先别急,薛之谦认识认识C还是很有必要的。本期跟大家聊…

文件夹改名,如何在改名之后批量复制文件夹名称

在日常时候中会遇到给文件夹改名的时候,那么我们又如何在改名之后批量复制文件夹名称?今天就由小编来给大家分享一下操作办法。 首先第一步,我们要进入文件批量改名高手,并在板块栏里选择“文件夹批量改名”板块。 第二步&#xf…

SpringBoot 接入chatGPT API

SpringBoot 接入chatGPT API 一、准备工作二、补全接口示例三、申请API-KEY**四、JavaScript调用API**五、SpringBoot整合ChatGPT六、使用curl模拟请求ChatGPT平台已经为技术提供了一个入口了,作为一个Java程序员,我们第一时间想到的就是快速开发一个应用,接入ChatGPT的接口…

第十四天本地锁、Redis分布锁、Redisson锁三者的区别

一、为什么要有redis分布式锁,它解决了什么问题? 在传统单体架构的项目下,使用本地锁synchronized和lock锁就可以锁住当前进程,保证线程的安全性,但是本地锁解决不了分布式环境下多个服务资源共享的问题,而…

产品研发流程管理

先看一张图,该图适应绝大部分的产品的 研发流程 (需要的可以去下 产品研发流程| ProcessOn免费在线作图,在线流程图,在线思维导图) 该图详细描述了,不同阶段应该做什么,具体的来说,是确定了什么时候 “开会…

高精度人员定位系统源码,采用vue+spring boot框架,支持二次开发

智慧工厂人员定位系统源码,高精度人员定位系统源码,UWB定位技术 文末获取联系! 在工厂日常生产活动中,企业很难精准地掌握访客和承包商等各类人员的实际位置,且无法实时监控巡检人员的巡检路线,当厂区发生灾…

【Python】实战:生成无关联单选问卷 csv《精神状态评估表》

目录 一、适用场景 二、业务需求 三、Python 文件 (1)创建文件 (2)代码示例 四、csv 文件 一、适用场景 实战场景: 问卷全部为单选题问卷问题全部为必填问题之间无关联关系每个问题的答案分数不同根据问卷全部问…

使用pandas和seaborn绘图

使用pandas和seaborn绘图 matplotlib实际上是一种比较低级的工具。要绘制一张图表,你组装一些基本组件就行:数据展示 (即图表类型:线型图、柱状图、盒形图、散布图、等值线图等)、图例、标题、刻度标签以及其他注解型…

【远程开发】VSCode使用Remote SSH远程连接Linux服务器

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转发自CSD…

【Unity】创建一个自己的可交互AR安卓程序

目录 1 创建一个AR场景2 配置AR Camera为前置摄像头3 配置打包场景4 下载官方提供的InteractiveFaceFilterAssets资源5 配置AR Face Manager6 创建眼镜预制件7 设置AR面部追踪8 测试效果8.1 在Unity中测试8.2 在安卓设备上测试 9 在该AR场景的基础上添加自己的想法9.1 改变眼镜…

【Java|golang】1042. 不邻接植花---邻接表着色

有 n 个花园,按从 1 到 n 标记。另有数组 paths ,其中 paths[i] [xi, yi] 描述了花园 xi 到花园 yi 的双向路径。在每个花园中,你打算种下四种花之一。 另外,所有花园 最多 有 3 条路径可以进入或离开. 你需要为每个花园选择一…