首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    谈下Linxu系统中虚拟内存的重要性

    我们知道程序代码和数据必须驻留在内存中才能得以运行,然而系统内存数量很有限,往往不能容纳一个完整程序的所有代码和数据,更何况在多任务系统中,可能需要同时打开子处理程序,画图程序,浏览器等很多任务,想让内存驻留所有这些程序显然不太可能。因此首先能想到的就是将程序分割成小份,只让当前系统运行它所有需要的那部分留在内存,其它部分都留在硬盘。当系统处理完当前任务片段后,再从外存中调入下一个待运行的任务片段。的确,老式系统就是这样处理大任务的,而且这个工作是由程序员自行完成。但是随着程序语言越来越高级,程序员对系统体系的依赖程度降低了,很少有程序员能非常清楚的驾驭系统体系,因此放手让程序员负责将程序片段化和按需调入轻则降低效率,重则使得机器崩溃;再一个原因是随着程序越来越丰富,程序的行为几乎无法准确预测,程序员自己都很难判断下一步需要载入哪段程序。因此很难再靠预见性来静态分配固定大小的内存,然后再机械地轮换程序片进入内存执行。系统必须采取一种能按需分配而不需要程序员干预的新技术。

    01

    Linux索引节点inode

    理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最常见的是4KB,即连续八个 sector组成一个 block。文件数据都储存在”块”中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点” 。

    03

    Linux系统中的Page cache和Buffer cache

    Mem:表示物理内存统计。 total:表示物理内存总量(total = used + free)。 used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。 free:未被分配的内存。 shared:共享内存。 buffers:系统分配但未被使用的buffers数量。 cached:系统分配但未被使用的cache数量。 -/+ buffers/cache:表示物理内存的缓存统计。 used2:也就是第一行中的used – buffers - cached也是实际使用的内存总量。 // used2为第二行 free2 = buffers1 + cached1 + free1 // free2为第二行,buffers1等为第一行 free2:未被使用的buffers与cache和未被分配的内存之和,这就是系统当前实际可用内存。 Swap:表示硬盘上交换分区的使用情况。

    04

    Linux系统中的Page cache和Buffer cache

    Mem:表示物理内存统计。 total:表示物理内存总量(total = used + free)。 used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。 free:未被分配的内存。 shared:共享内存。 buffers:系统分配但未被使用的buffers数量。 cached:系统分配但未被使用的cache数量。 -/+ buffers/cache:表示物理内存的缓存统计。 used2:也就是第一行中的used – buffers - cached也是实际使用的内存总量。 // used2为第二行 free2 = buffers1 + cached1 + free1 // free2为第二行,buffers1等为第一行 free2:未被使用的buffers与cache和未被分配的内存之和,这就是系统当前实际可用内存。 Swap:表示硬盘上交换分区的使用情况。

    02
    领券