前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内存简介

内存简介

原创
作者头像
陈不成i
修改2021-05-24 11:02:31
3780
修改2021-05-24 11:02:31
举报
文章被收录于专栏:ops技术分享ops技术分享

一.内存

物理内存也称为主存,大多数计算机用的主存都是动态随机访问内存(DRAM)。只有内核才可以直接访问物理内存。

Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样,进程就可以很方便地访问内存,更确切地说是访问虚拟内存。

通过这里可以看出,32位系统的内核空间占用 1G,位于最高处,剩下的3G是用户空间。而 64 位系统的内核空间和用户空间都是 128T,分别占据整个内存空间的最高和最低处,剩下的中间部分是未定义的。

进程在用户态时,只能访问用户空间内存;只有进入内核态后,才可以访问内核空间内存。虽然每个进程的地址空间都包含了内核空间,但这些内核空间,其实关联的都是相同的物理内存。这样,进程切换到内核态后,就可以很方便地访问内核空间内存。

每个进程都有整个虚拟空间可用,但只有实际应用了才分配物理内存。分配后的物理内存,是通过内存映射来管理的。那加起来所有进程的虚拟内存加起来,要比实际的物理内存大得多。

内存映射,其实就是将虚拟内存地址映射到物理内存地址。为了完成内存映射,内核为每个进程都维护了一张页表,记录虚拟地址与物理地址的映射关系,如下图所示:

页表实际上存储在 CPU 的内存管理单元 MMU中,这样,正常情况下,处理器就可以直接通过硬件,找出要访问的内存。

而当进程访问的虚拟地址在页表中查不到时,系统会产生一个缺页异常,进入内核空间分配物理内存、更新进程页表,最后再返回用户空间,恢复进程的运行。

二.内存占用

虚拟存储器的基本思想是:程序、数据和堆栈的总大小可能超过可用的物理内存的大小。由操作系统把程序当前使用的那些部分保留在主存中,而把其他部分保存在磁盘上。例如,对于一个16MB的程序,通过仔细地选择在每个时刻将哪4MB内容保留在内存中,并在需要时在内存和磁盘间交换程序的片段,这样这个程序就可以在一个4MB的机器上运行。

内存的最小单位是字节 1M=1024byte(字节) 1字节=8bit(比特) 所以一个字节最大存储值为255,就是8个1

具体占用几个字节,和解释器版本,系统版本有关。数字4字节 变量=100 1字节直接可以存储100 变量=100(字符串) 一个字符占用一个字节 汉子占用2个字节表示

这里的变量,就会占用内存,但是不大,一个int类型的变量占4个字节,一个字节是8个bit,每个bit里只能存放0或1

所以int类型的4个字节一共是4*8=32 bit

最大表示 1111111111…..(32个1)

转换为10进程,,就是int类型的在实际计算中的2的32次幂

如果程序很复杂,定义的变量很多,占用的内存空间就很大

从内存模型上,最简单的堆和栈

某些变量在栈中,某些变量在堆中。计算完成后(程序结束),变量销毁,内存空间回收,所以你能看到你的内存又降下来了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.内存
  • 二.内存占用
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档