为什么 Lubuntu 显示的 RAM 比安装的少?

为什么 Lubuntu 显示的 RAM 比安装的少?

我正在使用 Lubuntu 14.04

我有两根 4 GB 的内存,它们在 Windows 下运行良好。但是当我打开 LXTask 时,它显示我有 7868 MB,而它应该显示 8192 MB。

不使用集成显卡 (Radeon R9 270X)。Athlon X4 760K 根本没有集成显卡。

free -m输出:

david@lubuntu:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          7868       7118        750         11         36       2008
-/+ buffers/cache:       5073       2795
Swap:         8135          0       8135

更新

输出-h仍然报告少于 8GB:

david@lubuntu:~$ free -h
             total       used       free     shared    buffers     cached
Mem:          7.7G       7.1G       632M        11M        38M       2.0G
-/+ buffers/cache:       5.1G       2.6G
Swap:         7.9G         0B       7.9G

答案1

这是因为 Windows 和 Linux 对 1 KB 中有多少字节有不同的理解,因为本文解释道。

例如

在 Windows 中

Windows 假定 1 千字节单位有 1024 字节,1 兆字节单位有 1024 千字节,等等。

在 Ubuntu(GNU/Linux)中……

Ubuntu 假设,1000 个字节为 1 个千字节 (KB) 单位,1000 个千字节为 1 个兆字节 (MB) 单位,以此类推。


这种“混淆”在过去就已经存在了,因为各种计算机存储硬件设备,例如“RAM”和“ROM”,在单位(“字节”)之间转换时使用 1024 作为“单位前缀”(出于技术原因)。

但大多数其他存储设备(如 HDD 和闪存驱动器)在计算大小时使用 1000 作为基本“单位前缀”。因此,专家们对在以不同单位显示文件大小时应该使用哪种单位产生了一些困惑。

为了更好的解释,请阅读维基百科条目二进制前缀

目前,计算机行业以两种不同的方式使用千字节、兆字节和千兆字节等术语以及相应的符号 KB、MB 和 GB。在引用主内存或 RAM 容量时,千兆字节通常表示 1073741824 字节。这是 1024 的幂(具体为 10243),而 1024 是 2 的幂(具体为 210),因此这种用法称为二进制前缀。

在大多数其他情况下,业界使用千、兆、吉等的方式与国际单位制 (SI) 中的含义一致:作为 1000 的幂。例如,500 千兆字节硬盘可容纳 500000000000 字节,而每秒 100 兆比特的以太网连接以 100000000 比特/秒的速度传输数据。与“二进制前缀”相反,这种用法被称为“十进制前缀”,因为 1000 是 10 的幂。因此后来,为了避免混淆,IEC 和 NIST 对它们进行了标准化,并更改了符号……

在使用中,通常使用 1024 的幂来描述的产品和概念将继续使用,但会使用新的 IEC 前缀。例如,536870912 字节(512×1048576)的内存模块将被称为 512 MiB 或 512 兆字节,而不是 512 MB 或 512 兆字节。相反,由于硬盘驱动器过去一直使用 SI 惯例进行营销,即“千兆”表示 1000000000,因此“500 GB”硬盘驱动器仍将这样标记。

根据这些建议,操作系统和其他软件也将以相同的方式使用二进制和 SI 前缀,因此购买“500 GB”硬盘的用户会发现操作系统报告“500 GB”或“466 GiB”,而 536870912 字节的 RAM 将显示为“512 MiB”。

简单来说,如果操作系统使用术语“兆字节”(MB),那么它应该使用每千字节(KB)1000 字节、1000 千字节到 1 兆字节(“MB”)等感知值(“十进制前缀”),在单位之间进行转换。

如果它使用值 1024(“二进制前缀”),那么它应该将它们寻址为“千比字节”(KiB)、“兆比字节(MiB)”等。

因此从这个意义上来说,操作系统使用“二进制前缀”还是“十进制前缀”并不重要,重要的是它使用正确的符号来显示它们。

很明显,Windows 使用的是“二进制前缀”,如果你查看第一张图片,就会看到它列出的大小为“710,934,528 字节”。现在用计算器将其除以“1024”,结果应该会以“千字节”为单位。然后再除以一次,结果会得到 678 的值,单位是“兆字节 (MiB)”。

现在使用在 Ubuntu 中拍摄的第二张图片执行相同操作。但这次,使用值 1000 而不是 1024,您将获得以兆字节 (MB) 为单位的输出,即 710.9。

说实话,我不知道“IEC”和“NIST”法律以及它们的应用方式,但由于 Windows 使用“二进制前缀”,因此应该使用符号 KiB、MiB、GiB 等,而不是使用 KB、MB、GB 等,因此似乎也直接违反了规定(尽管论文只说“会”)。

答案2

要查看 RAM,请打开终端并发出命令free -h- 我的系统中有 2GB 的 RAM,我的输出如下,free -m(以“兆字节”为单位返回结果):

$ free -m
             total       used       free     shared    buffers     cached
Mem:          2005       1816        189        259        161        935
-/+ buffers/cache:        719       1285
Swap:          973         34        939

free -h返回(以人类可读的形式):

$ free -h
             total       used       free     shared    buffers     cached
Mem:          2.0G       1.8G       151M       253M       166M       931M
-/+ buffers/cache:       756M       1.2G
Swap:         973M        34M       939M

您可能会发现这种格式更符合您的喜好!

系统报告的 RAM 少于已安装 RAM 的另一个原因是系统为特定目的保留了 RAM,有时 BIOS 设置页面之一上会保留视频光圈。您可以通过减小该大小来释放一些。当您深入研究系统硬件时,会发现许多变量。您的主板制造商可能会为您提供更多有关此问题的说明。

您可以通过发出命令来获取系统保留的 RAM 的输出dmesg | grep BIOS | grep reserved,并且可以通过修改 BIOS 中的设置来减少它,但在现代系统上将其降至零的可能性很小。您可能还会发现信息丰富。

答案3

虽然关于 KiB/KB 等的描述shaddy 的回答是正确的,Linux 和 Windows 之间的差异是不正确的,它只是关于特定程序中的呈现。特别是,free以 KiB 为单位显示结果,这很容易在man页面上检查:

Show all output fields automatically scaled to shortest three digits and 
display the units of print out. The following units are used:

   B = bytes
   K = kibibyte
   M = mebibyte
   G = gibibyte
   T = tebibyte
   P = pebibyte

一般的经验法则通常是:HDD:乘数为 1000,RAM:乘数为 1024。但最好检查您正在使用的工具的文档。

对于实际问题:正如您所澄清的那样,您有集成显卡,正确的答案很可能是只是为它保留了一些内存。

相关内容