您的位置: 翼速应用 > 业内知识 > 运维 > 正文

简析linux与windows的内存之区别

关于linux与windows的内存之区别解析来了,大致有两个方面的不同,如下所示:


1、linux优先使用物理内存,内存不够时才放在交换分区上,而windows则是内存和虚拟内存一起使用;

2、windows总会给内存留下一定的空闲空间,启动新的程序比较快,而linux内存常处于全部被使用的状态,需要先清理出一块内存再分配给新的程序,启动新程序比较慢。


简析linux与windows的内存之区别


本文适用于windows10&&linux7.3系统、Dell G3电脑。


简析linux与windows的内存之区别


在Linux 中优先使用的是物理内存,当物理内存还有空闲时,linux是不会释放内存的,即时占用内存的程序已经被关闭了(这部分内存就用来做缓存了)。也就是说,即时你 有很大的内存,用过一段时间后,也会被占满。这样做的好处是,启动那些刚开启过的程序、或是读取刚存取过得数据会比较快,对于服务器很有好处。


windows则总是给内存留下一定的空闲空间,即时内存有空闲也会让程序使用一些虚拟内存,这样做的好处是,启动新的程序比较快,直接分给它些空闲 内存就可以了,


两者之主要区别:


linux:linux由于内存经常处于全部被使用的状态,则要先清理出一块内存,再分配给新的程序使用,因此,新程序的启动会慢一些。


linux内核基本是先把数据都放在内存上的,内存不够才放到交换分区(虚拟内存)上,细节是,只有频繁使用的数据才会放到内存上,不频繁操作的数据会渐渐放到交换分区上,适当时写回硬盘里。


windows:windows的处理方式则是内存和虚拟内存一起使用,不是以内存操作为主,这样的结果是IO的负担比较大,有时会拖慢处理速度。linux的哲学是,尽可能使用内存,因为内存的速度比硬盘速度快100多倍。


扩展知识


Linux把物理内存划分为三个层次来管理:


linux物理内存划分为三个层次


系统的物理内存被划分成几个节点(node),一个node对应一个内存簇bank,即每个内存簇被认为是一个节点。(可以使用NODE_DATA(node_id)来查找系统中编号为node_id的节点)


内存被划分成节点,每个节点关联到系统的一个处理器,内核中用pg_data_t来实例,系统中每个节点被链接到一个以NULL为结尾的pgdat_list链表中,其中每个节点使用pg_data_tnode_next字段链接到下一个节点。对于UMA结构,只使用contig_page_data的静态pg_data结构,此时NODE_DATA直接指向全局的contig_page_data.


节点被划分成内存管理区。一个内存管理区使用struct zone_struct描述,zone_t,用以表示内存的某个范围,低端范围的16MB被描述为ZONE_DMA,然后是可直接映射到内核的普通内存域ZONE_NORMAL,最后是超出内核段的物理地址域ZONE_HIGHMEM(0xF8000000~0xFFFFFFFF),高端内存,是系统中预留的可用内存空间,不能被内核直接映射。(为了兼容热插拔以及内存碎片化的处理,内核引入一些逻辑上的内存区:


●  内核定义一个伪内存区ZONE_MOVEABLE,在防止物理内存碎片的机制mmeory mirgation中需要使用该内存区域以供内存碎片的极致使用


●  ZONE_DEVICE:为支持热插拔设备而分配的Non Volatile Memory,非易失性内存)。


页帧(page frame):代表内存的最小单元,堆内存中每个页都会创建一个struct page的实例。传统上,把内存视为连续的字节,即内存为字节数组,内存单元的编号(地址)可作为字节数组的索引。分页管理时,将若干字节试为一页,比如4K byte,此时内存变成连续页,即内存为页数组,每一页物理内存为页帧,以页为单位对内存进行编号,该编号可作为页数组的索引,称为页帧号。 (页的数据结构对象都保存在mem_map全局数组中,该数组通常被存放在ZONE_NORMAL的首部,或者就在小内存系统中装入内核映像而预留的区域之后,在载入内核的低地址至内存区域的后面内存区域,也就是ZONE_NORMAL开始的地方的内存的页的数据结构的对象,都保存在这个全局数组中)。


分页单元可以实现把线性地址转换成物理地址,线性地址被划分成固定长度大小的组,称为页,页内部的线性地址被映射到连续的物理地址。这样内核可以指定一个页的物理地址和其存储权限,而不用指定页的全部线性地址的存储权限。


分页单元把所有RAM分成固定长度的页帧(也叫页框,page frame),每一个页帧包含一个页,也就是说页帧和页的长度是一样的。页框属于内存的一部分,因此也是一个存储区域。 ----mm_types.h struct page结构体中的mapping,不只保存一个指针,还保存一些额外的信息,用于判断页是否属于未关联地址空间的某个匿名内存区。 通过mapping恢复anon_vma的方法:anon_vma=(struct anon_vma *)(mapping-PAGE_MAPPING_ANON)。


关于linux与windows的内存之区别解析到这里就结束了,翼速应用平台内有更多相关资讯,欢迎查阅!


我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题