Linux操作系统:基础篇9基本功能之内存管理

简介: 基础篇9基本功能之内存管理

一、基本概念

1、地址

 (1)逻辑地址:指由程序产生的与段相关的偏移地址部分。在C语言指针中,读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址。

 (2)线性地址:段中的偏移地址(逻辑地址),加上相应段的基地址就生成了一个线性地址。

 (3)物理地址: 放在寻址总线上的地址。

 (4)虚拟地址:保护模式下段和段内偏移量组成的地址,而逻辑地址就是代码段内偏移量,或称进程的逻辑地址。

2、内存

 (1) 虚拟内存:计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易,对真正的物理内存(例如RAM)的使用也更有效率。

 (2) 物理内存:实际的内存。物理地址被分成离散的单元,成为页(page)。目前大多数系统的页面大小都为4k。

3、地址转换

 Linux采用段页式管理机制,有两个部件用于地址转换:分段部件和分页部件。

 (1) 分段部件:将逻辑地址转换为线性地址。分段提供了隔绝各个代码、数据和堆栈区域的机制,因此多个程序(任务)可以运行在同一个处理器上而不会互相干扰。

 (2) 分页部件:将线性地址转换为物理地址(页表和页目录),若没有启用分页机制,那么线性地址直接就是物理地址。

d1ba6a00dacd4802b386c361a14ca154.png

二、相关命令

1、free命令

 free命令用于显示内存状态。

 free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

(1)语法:

 free [参数]

(2)常用参数

98317e76aeb640b08787e61d577ca3dc.png

(3)输出项含义

6a5cbba5baa04e7db752ed8ea54f187a.png

 free 与 available 的区别:

 free 是真正尚未被使用的物理内存数量。

 available 是应用程序认为可用内存数量,available = free + buffer + cache

 (注:只是大概的计算方法)

 Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能。

 Buffer:缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输数据;通过buffer可以减少进程间通信需要等待的时间,当存储速度快的设备与存储速度慢的设备进行通信时,存储慢的数据先把数据存放到buffer,达到一定程度存储快的设备再读取buffer的数据,在此期间存储快的设备CPU可以干其他的事情。

 简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。

(4)示例

 <1>显示内存使用情况: # free

linux@b109199:$ free
total used  free  shared  buff/cache  available 
Mem:  7822340 5364752 2228236 17720 229352  2323856 
Swap: 13108028  136788  12971240  
1inux@b109199:~$

 <2>以总和的形式显示内存的使用信息:# free -t

inux@b109199:~$free-t
total used  free  shared  buff/cache  available 
Mem:  7822340 5385408 2207580 17720 229352  2303200 
Swap : Total:209303681310802855221601367521297127615178856

 <3>周期性的查询内存使用信息:# free -s 10 //每10s 执行一次命令

linux@b109199:~$free -s10
total used  free  shared  buff/cache  available 
Mem:  7822340 5383376 2209612 17720 229352  2305232 
Swap :  13108028  136724  12971304  
total used  free  shared  buff/cache  available 
Mem:  7822340 5285528 2307460 17720 229352  2403080 
Swap: 13108028  136664  12971364

2、vmstat工具

 vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。它能够对系统的整体情况进行统计,无法对某个进程进行深入分析。

(1)语法:

 vmstat [参数]

 常用参数:

9887a2ae126c4d9fa4f88c970f306f1d.png

(2)输出字段说明:

vpc@vpc:~$ vmstat 2 2
procs - --memory--  -Swap-- -----io-----system--------cpu---- 
r b swpd  free  buff cache  si so bi bo in  cs us sy id wa st 
0 0 400300 247968 107152 283068 29 124 1512 1489 227 761 8 4 86 1 
2 0 400300 247968 107152 283068 0 0 0 54  99 1 0990

550a944ac3644830aa09c4ccf5346d90.png

a42cb369e28c46a38a670a1cbed9b160.png

(3)示例:

 <1>每2秒执行一次vmstat,共执行6次

OOT T O 98  8T  0 0 89ETOT 190ZZ  ZTPOT8 0  
OOT 0 O LT  0 89ETOT 190ZZ  ZTFOT8 0  0 0 
0
0
0
OOT 0 0 : 8E  LT O  0 0 0 89ETOT 190ZZ  ZTFOT8 0  0 0 
OOT O O SE  T 0 0 0 89ETOT 190ZZ  ZTFOT8 0  0 0 
0
0 OOT O O SE  9T  0 0 0 89ETOT 79022  ZTpOT8 0  0 0 
0 0 
0
0 Z 968O LS OS E  99  89ETOT 190Z7  0ZFOT8 0  
0
Is em pr ks sn so uT  oq  Tq  TS  qOB3  Jjnq  eaIJ  pdms  9 工 
ndo.  waISAS  dems  Atowaw  soord 
9 Z 1B1SUA  #[~1utuoa1@100x]

 <2>输出带时间戳的vmstat命令

DZST U8:L9:BT 20-60-ZTOZ  0 0 969 0 Z69 68T 0 0 FZZ6T Z661Z 999T89 0  0 I 
0
0
LSI TZ:LS:FT Z0-60-ZTOZ 0 0 969 01ZS  99T 0 FZZ6T Z661Z 08LTE9 0  
0
0
0
0
0
LSI 0Z:L9:TT Z0-60-ZT0Z 0 0 969 0 009 96T 0 0 0 FZZ6T Z6678 币0O6TE9 0 0 T 
0
LSI 6T:LS:FT Z0-60-ZT0Z 0 0 P69 I PTS TLT O 0 0 ZZ6T Z664Z  8ZOZE9 0  0 I 
0
LSI 8T:L9:PT ZO-60-ZT0Z O I 96E I 8L  99 S  OL  0 FZZ6T Z661Z 8Z0ZE9 0  00  
0
Is em pT As sn so uT  0q  Tq  os  TS  aqoeo Jjnq  pdms  9 I 
dueisauti ndo.  -w1sAS_ Arowau. soord 
IBISUA  Jutuoarorutuoa1]

 <3>输出各种事件计数器和内存的统计信息

#vmstat –s

 <4>输出所有磁盘的统计信息

#vmstat –d

 <5>输出以MB为单位输出统计信息

#vmstat -S M 1 5

3、iostat工具

 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

(1)用法:

 iostat [选项] [<时间间隔>] [<次数>]

(2)常用参数:

0c97ab391a2b4d9ca216652bfb6d7b61.png

(3)输出字段说明:

 #iostat

avg" cpu:号user
0.78名nice
0.00名system
0.05名iowait
0.01号steal
0.00号idle99.16
Device: tps Blk read/s  Blk wrtn/s  Blk read  Blk wrtn  
sda 1.08  15.87 9.58  497398  300018  
dm-1  dm-0  0.72  4 .22 4.87  132186  152560  
0.01  0.08  0.00  2496  0 
dm-2  0.83  11.36 4.71  355842  147440  
sdb 0.03  1.15  0.08  35922 2560  
sdc sdd dm-3  0.11  0.03  0.03  1.05  1.08  0.08  0.10  33704 32952 3152  2552  
4.30  0.35  134738  11064 
sde 0.03  1.11  0.09  34880 2800

 cpu属性值说明:

e1bb2515c2d54bf98fa320a41ff50dd9.png

 备注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲;

 如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。

 %idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU

 disk属性值说明:

83ae2d2ff2174abaa77d35afacc609f4.png

(4)示例:

<1>间隔1秒,总共显示5次
     #iostat 1 5
  <2>每隔2秒,显示一次设备统计信息
    #iostat -d 2
  <3>每隔2秒显示一次sda, sdb两个设备的扩展统计信息,共输出3次
    #iostat -x sda sdb 2 3


相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
12天前
|
缓存 Linux
linux 手动释放内存
在 Linux 系统中,内存管理通常自动处理,但业务繁忙时缓存占用过多可能导致内存不足,影响性能。此时可在业务闲时手动释放内存。
65 17
|
14天前
|
存储 弹性计算 NoSQL
os-copilot安装与多项功能测评
本文介绍了os-copilot的安装及多项功能测评。首先,通过xShell连接服务器并使用`rpm -q os-copilot`检查是否已安装,若未安装则用`yum install`命令安装。接着,配置ACCESS_KEY信息以连接阿里云服务。深入测试部分展示了-t参数用于环境健康检查、-f参数处理复杂任务、|参数解释代码等功能,还演示了编写shell脚本创建和启动Redis的便捷性。这些功能对基础运维和开发人员有较大帮助。
104 12
|
1天前
|
人工智能 Linux 数据安全/隐私保护
OS Copilot功能测评
作为一名开发者,我首次尝试了阿里云的OS Copilot,主要用于人工智能应用开发。安装过程简单,只需按官方教程操作,支持Alinux、CentOS等系统。使用中,通过在指令前加“co”唤醒AI助手,-t/-f/管道功能显著提升效率,尤其对不熟悉Linux指令的用户帮助很大。然而,上下文记忆和命令连续执行方面仍有改进空间,例如在多步操作时容易中断。总体体验新颖且实用,但希望未来能增强交互连续性和命令执行的灵活性。
|
12天前
|
弹性计算 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
81 2
OS Copilot-操作系统智能助手-Linux新手小白的福音
|
1天前
|
弹性计算 运维 自然语言处理
测评OS Copilot,深度体验其功能
作为一名大数据方向的学生,我参与了阿里云OS Copilot的测评活动,体验其对Linux操作系统的优化效果。OS Copilot结合自然语言处理技术,通过简单命令实现系统健康检查等高效管理任务。测评中,我发现`-t`参数能快速精准地调用agent模式,显著提高运维效率,节省至少80%的时间。整体而言,OS Copilot自动化功能强大,操作简便,特别适合不熟悉命令行的用户,极大提升了云服务器管理效率,是一款值得推荐的工具。
32 12
|
14天前
|
消息中间件 Linux
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
77 20
|
4天前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
44 7
|
12天前
|
弹性计算 运维 数据可视化
OS Copilot安装与多项功能测评报告
OS Copilot安装与多项功能测评报告
72 15
|
5天前
|
存储 运维 安全
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功能和优势。
28 5
|
6天前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享

热门文章

最新文章