linux和windows的内存有哪些区别

56次阅读
没有评论

共计 2263 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要介绍“linux 和 windows 的内存有哪些区别”,在日常操作中,相信很多人在 linux 和 windows 的内存有哪些区别问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux 和 windows 的内存有哪些区别”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

linux 内存和 windows 内存的区别:1、linux 优先使用物理内存,内存不够时才放在交换分区上,而 windows 则是内存和虚拟内存一起使用;2、windows 总会给内存留下一定的空闲空间,启动新的程序比较快,而 linux 内存常处于全部被使用的状态,需要先清理出一块内存再分配给新的程序,启动新程序比较慢。

linux 和 windows 的内存区别

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

区别

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

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

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

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

扩展知识

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), 高端内存,是系统中预留的可用内存空间,不能被内核直接映射。(为了兼容热插拔以及内存碎片化的处理,内核引入一些逻辑上的内存区:

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

2、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 的内存有哪些区别”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-21发表,共计2263字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)