Linux的内存管理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
total Mem: 256024 −/+ buffers/cache: Swap: 522072
used 192284 80604
free 63740 75420
shared 0
buffers 10676
cached 101004
0
522072
表8-1中第二行输出(Mem:)显示物理 中第二行输出(Mem:) 内存:total列显示共有的可用内存 列显示共有的可用内存( 内存:total列显示共有的可用内存(不显示 核心使用的物理内存,通常大约1MB), 核心使用的物理内存,通常大约1MB), used列显示被使用的内存总额 free列显示 used列显示被使用的内存总额,free列显示 列显示被使用的内存总额, 全部空闲的内存,shared列显示多个进程共 全部空闲的内存,shared列显示多个进程共 享的内存总额,buffers列显示磁盘缓存的当 享的内存总额,buffers列显示磁盘缓存的当 前大小。 前大小。 表8-1中第二行输出(Swap)显示交换 中第二行输出(Swap) 空间的信息,与上一行类似。 空间的信息,与上一行类似。如果该行为全 0,则没有使用交换空间。 则没有使用交换空间。
二、实验工具与设备
装有Linux系统的计算机 装有Linux系统的计算机。 系统的计算机。
三、实验预备知识
Linux的内存管理相当完善, Linux的内存管理相当完善,一般不需要 的内存管理相当完善 用户特别干预。 用户特别干预。 进程是运行于虚拟地址空间的程序。可 进程是运行于虚拟地址空间的程序。 以说,任何在Linux系统下运行的程序都是进 以说,任何在Linux系统下运行的程序都是进 大多数的进程都需要虚拟内存。 程。大多数的进程都需要虚拟内存。 对于典型的Linux应用系统 128MB内存 应用系统, 对于典型的Linux应用系统,128MB内存 是合理的选择。如果不运行X Windows系统 系统, 是合理的选择。如果不运行X Windows系统, 在一台特殊用途的计算机( 在一台特殊用途的计算机(如用于调试设备驱 动程序) 仅用8MB内存即可工作 内存即可工作。 动程序)上,仅用8MB内存即可工作。
1.实时监控内存使用情况 (1)在命令行用“free”命令监控内存使 在命令行用“ 用情况
在提示符后输入命令free:# 在提示符后输入命令free:#free :#free 表8-1所示为输出情况。 所示为输出情况。
表8-1
一个256MB的RAM和512MB交换空间的系统情况 的 一个 和 交换空间的系统情况
一般建议虚拟内存容量应当按物理内 存的两倍进行分配。 存的两倍进行分配。如果物理内存有 256MB或更多时 可以缩小虚拟内存。 256MB或更多时,可以缩小虚拟内存。 或更多时, Linux将把大量的内存用于 Linux将把大量的内存用于Cache,在资源 将把大量的内存用于Cache, 紧张时收回。只要看到swap为 紧张时收回。只要看到swap为0,或该数 很小即可放心, 很小即可放心,内存放着不用才是最大的 浪费。 浪费。
Linux虚拟内存的实现需要 Linux虚拟内存的实现需要6种机制的 虚拟内存的实现需要6 支持:地址映射机制、内存分配回收机制、 支持:地址映射机制、内存分配回收机制、 缓存和刷新机制、请求页机制、 缓存和刷新机制、请求页机制、交换机制 和内存共享机制。 和内存共享机制。
内存管理程序通过映射机制把用户程序的逻辑 地址映射到物理地址。当用户程序运行时,如果发现 地址映射到物理地址。当用户程序运行时, 程序需要的虚地址没有对应的物理内存, 程序需要的虚地址没有对应的物理内存,即发出请求 页要求。如果有空闲的内存可供分配, 页要求。如果有空闲的内存可供分配,就请求分配内 用到内存的分配和回收), ),并把正在使用的物理 存(用到内存的分配和回收),并把正在使用的物理 页记录在缓存中(用到缓存机制)。 )。如果没有足够的 页记录在缓存中(用到缓存机制)。如果没有足够的 内存可供分配,则调用交换机制,腾出一部分内存。 内存可供分配,则调用交换机制,腾出一部分内存。 另外,在地址映射中要通过TLB(翻译后援存储器) 另外,在地址映射中要通过TLB(翻译后援存储器) 寻找物理页;交换机制中用到交换缓存, 寻找物理页;交换机制中用到交换缓存,并且把物理 页内容交换到交换文件中, 页内容交换到交换文件中,也要修改页表来映射文件 地址。Linux虚拟内存实现原理如图 所示。 虚拟内存实现原理如图8 地址。Linux虚拟内存实现原理如图8-1所示。
Linux的内存管理 Linux的内存管理
一、实验目的 二、实验工具与设备 三、实验预备知识 四、实验内容和步骤 五、实验总结
一、实验目的
1.理解虚拟内存、磁盘缓存的概念。 理解虚拟内存、磁盘缓存的概念。 2.掌握基本的内存管理知识。 掌握基本的内存管理知识。 3.掌握查看实时查看内存、内存回收的方 掌握查看实时查看内存、 法。
Biblioteka Baidu
缺省状态下,free命令以千字节 命令以千字节( 缺省状态下,free命令以千字节(即 1024字节为单位 显示内存使用情况。 1024字节为单位)显示内存使用情况。若使 字节为单位) 参数, 用-h参数,则以字节为单位显示内存使用情 若使用- 参数, 况;若使用-m参数,则以兆字节为单位显示 内存使用情况。 内存使用情况。 若命令带- 参数, 若命令带-s参数,则不间断地监视内存 使用情况:# :#free s5。 使用情况:#free -b -s5。 该命令在终端窗口中连续不断地报告内 存的使用情况, 秒钟更新一次。 存的使用情况,每5秒钟更新一次。
五、实验总结
1.思考:什么是虚拟内存? 思考:什么是虚拟内存? 2.思考:如何查看内存的使用情况? 思考:如何查看内存的使用情况? 3.思考:回收内存的方法是什么?举例说 思考:回收内存的方法是什么? 明。
四、实验内容和步骤
1.监控内存使用情况 free”命令监控内存使用情况 命令监控内存使用情况: 用“free”命令监控内存使用情况: #free #free -b -s5
2.检查和回收内存
用命令ps列出所有正在运行的程序名称、 用命令ps列出所有正在运行的程序名称、对 列出所有正在运行的程序名称 应的进程号(PID)等信息: 应的进程号(PID)等信息: #ps v kill命令回收泄漏的内存 命令回收泄漏的内存: 用kill命令回收泄漏的内存: # kill -9 <PID>
2.虚拟内存实现的机制
由于人们需要的内存容量远远大于物理 内存容量,因而有各种策略来解决这个问题, 内存容量,因而有各种策略来解决这个问题, 其中最成功的是虚拟内存技术。 其中最成功的是虚拟内存技术。 Linux支持虚拟内存 Linux支持虚拟内存,即用磁盘作为 支持虚拟内存, RAM的扩展 相当于扩大了可用内存。 RAM的扩展,相当于扩大了可用内存。运行 的扩展, Linux的程序只看到大量的可用内存 的程序只看到大量的可用内存, 于Linux的程序只看到大量的可用内存,而 不关心哪些在磁盘上。 不关心哪些在磁盘上。读写硬盘比读写内存 大约为读写内存速度的千分之一), ),因 慢(大约为读写内存速度的千分之一),因 而程序运行较慢。 而程序运行较慢。用于虚拟内存的硬盘空间 称为交换空间。 称为交换空间。
交换空间swap的使用 交换空间swap的使用
1、创建swap交换空间 创建swap交换空间 mkdir /data dd if=/dev/zero of=/data/swapfile bs=1024 count=65536 2、激活和使用swap 激活和使用swap mkswap /data/swapfile //设置swapfile文件为虚拟内存文件 设置swapfile文件为虚拟内存文件 swapon /data/swapfile 3、查看 free 4、移除swap 移除swap swapoff /data/swapfile