#渗透测试#SRC漏洞挖掘# 操作系统-Linux系统基础04之内存管理

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章阅读。 #陇羽sec#

目录

内存管理

内存使用量

磁盘使用量

文件或目录大小

查看硬盘分区

挂载分区


内存管理

内存管理是操作系统中的一个关键组件,特别是在Linux系统中。它涉及到如何有效地分配、使用和回收内存资源,以确保系统的稳定性和性能。Linux内存管理的核心思想是尽可能高效地利用内存,同时保证系统的安全性和稳定性。

内存管理的主要组成部分

  1. 物理内存的组织和管理:

    • 页(Page):内存的基本单位,通常是4KB。

    • 页框(Page Frame):物理内存中的页。

    • 伙伴系统(Buddy System):一种内存分配算法,用于管理页框的分配和回收。

  2. 虚拟地址和物理地址的映射:

    • 虚拟地址(Virtual Address):进程看到的内存地址。

    • 物理地址(Physical Address):实际的内存地址。

    • 页表(Page Table):用于将虚拟地址映射到物理地址。

  3. 内存区域的划分:

    • 用户态(User Space):用户进程使用的内存。

    • 内核态(Kernel Space):内核使用的内存。

  4. 内存的分类:

    • DMA区(ZONE_DMA):用于DMA操作的内存。

    • 正常区(ZONE_NORMAL):常规内存。

    • 高端内存(ZONE_HIGHMEM):高地址空间的内存。

内存管理的高级特性

  1. 缓存(Cache):

    • 页高速缓存(Page Cache):用于缓存文件数据,减少磁盘I/O操作。

    • 缓冲区(Buffers):用于缓存磁盘的元数据。

  2. 内存映射(Memory Mapping):

    • 直接映射(Direct Mapping):逻辑地址直接映射到物理地址。

    • 动态映射(Dynamic Mapping):逻辑地址可以动态映射到不同的物理地址。

  3. 内存回收和分配:

    • slab分配器:用于管理内核中的小对象。

    • 伙伴系统:用于管理大块内存的分配和回收。

内存使用量

查看内存使用量是系统管理和性能监控中的一个重要任务。不同的操作系统有不同的方法来查看内存使用情况。以下是针对不同操作系统的查看方法:

bash 复制代码
在Linux系统中,free 命令是一个非常常用的工具,用于显示系统中空闲和已用内存的大小。-m 选项表示以MB(兆字节)为单位显示内存信息。这个命令对于快速查看系统的内存使用情况非常有用。
如何使用 free -m
你只需要在终端中输入以下命令:
free -m 
执行上述命令后,你会看到类似以下的输出:
              total        used        free      shared  buff/cache   available 
Mem:          1595         328        1107          23         160        1130 
Swap:          2047           0        2047 
输出解释
    total: 总内存容量。
    used: 已使用的内存量。
    free: 空闲的内存量。
    shared: 被多个进程共享的内存量。
    buff/cache: 被缓冲区和缓存使用的内存量。
    available: 实际可用的内存量,这个值考虑了缓冲区和缓存的内存,因为这些内存可以迅速释放出来供应用程序使用。
示例
假设你执行了 free -m 命令并得到了以下输出:
              total        used        free      shared  buff/cache   available 
Mem:          1595         328        1107          23         160        1130 
Swap:          2047           0        2047 

从上面的输出可以看出:
    总内存容量是 1595 MB。
    已使用的内存量是 328 MB。
    空闲的内存量是 1107 MB。
    共享的内存量是 23 MB。
    缓冲区和缓存使用的内存量是 160 MB。
    实际可用的内存量是 1130 MB。
磁盘使用量

查看磁盘使用量是系统管理中的一个重要任务,无论是Linux、Windows还是Mac系统,都有不同的方法来实现这一目标。以下是针对不同操作系统的查看磁盘使用量的方法。

bash 复制代码
df -hT
    df:这个命令用于报告文件系统的磁盘空间使用情况。它显示了文件系统的总容量、已使用容量、可用容量、使用比例等信息。
    -h:这个选项表示以"人类可读"的方式显示结果,即自动选择合适的单位(如KB、MB、GB)来显示磁盘空间,以便于阅读。
    -T:这个选项表示显示文件系统的类型。例如,文件系统可能是ext4、xfs、btrfs等。

因此,df -hT 命令会以易于阅读的方式显示每个文件系统的磁盘使用情况及其类型。这对于系统管理员来说是一个非常有用的工具,可以帮助他们监控和管理磁盘空间。
文件或目录大小
bash 复制代码
sudo du ./* -hsc
sudo du ./* -hsc 是一个用于计算当前目录下所有文件和目录的磁盘使用情况的命令。以下是对该命令中各个选项的解释:
sudo
sudo 是 "superuser do" 的缩写,用于以超级用户(root)权限执行命令。使用 sudo 可以确保你有足够的权限访问和操作文件系统中的所有文件和目录。
du
du 是 "disk usage" 的缩写,用于估算文件和目录的磁盘使用空间。
./
. 表示当前目录。./ 表示当前目录下的所有文件和子目录。
*
* 是通配符,表示当前目录下的所有文件和目录。
-h
-h 选项表示 "human-readable",即以人类可读的格式显示文件大小(例如,使用 KB、MB、GB 等单位)。
-s
-s 选项表示 "summarize",即只显示每个文件或目录的总大小,而不是详细列出每个子目录的大小。
-c
-c 选项表示 "total",即在最后显示所有文件和目录的总大小。
示例输出
执行该命令后,你可能会看到类似以下的输出:
4.0K    ./file1.txt  
8.0K    ./directory1 
12K     ./directory2 
24K     total 
查看硬盘分区
bash 复制代码
sudo fdisk -l
sudo fdisk -l 是一个用于列出所有磁盘分区信息的命令。以下是对该命令中各个部分的解释:
sudo
sudo 是 "superuser do" 的缩写,用于以超级用户(root)权限执行命令。使用 sudo 可以确保你有足够的权限访问和操作文件系统中的所有文件和目录。
fdisk
fdisk 是一个用于分区管理的命令行工具。它可以用来创建、删除、修改和列出磁盘分区。
-l
-l 选项表示 "list",即列出所有磁盘的分区信息。
示例输出
执行该命令后,你可能会看到类似以下的输出:
Disk /dev/sda: 500 GB, 50010781400 bytes 
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors 
Units = sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disk identifier: 0x00000000 
   Device Boot      Start         End      Blocks   Id  System 
/dev/sda1   *        2048      209919      103936   83  Linux 
/dev/sda2          209920    976773167    488386124   8e  Linux LVM 
挂载分区
bash 复制代码
sudo  mount /dev/sdb1 /mnt/usb
命令解释
    sudo: 以超级用户权限执行命令。
    mount: 挂载文件系统的命令。
    /dev/sdb1: 这是要挂载的设备,通常是一个USB设备或硬盘分区。
    /mnt/usb: 这是挂载点,即设备将被挂载到的目录。
注意事项
    挂载点目录必须存在:在执行挂载命令之前,确保 /mnt/usb 目录已经存在。如果目录不存在,可以使用以下命令创建它:
    sudo mkdir -p /mnt/usb 
    设备识别:确保 /dev/sdb1 是正确的设备。可以使用 lsblk 或 fdisk -l 命令来列出所有设备和分区,以确认正确的设备名称。
    权限问题:挂载点目录通常需要有适当的权限。如果挂载后无法访问,可能需要调整目录的权限。
sudo mkdir -p /mnt/usb 
sudo mount /dev/sdb1 /mnt/usb 
卸载命令
如果需要卸载设备,可以使用以下命令:
sudo umount /mnt/usb 

未完待续!!!!!!

相关推荐
滴水之功8 分钟前
VMware OpenWrt怎么桥接模式联网
linux·openwrt
saynaihe12 分钟前
安全地使用 Docker 和 Systemctl 部署 Kafka 的综合指南
运维·安全·docker·容器·kafka
星河梦瑾23 分钟前
SpringBoot相关漏洞学习资料
java·经验分享·spring boot·安全
ldinvicible27 分钟前
How to run Flutter on an Embedded Device
linux
黑客Ela42 分钟前
对安全的认知
安全
YRr YRr1 小时前
解决Ubuntu 20.04上编译OpenCV 3.2时遇到的stdlib.h缺失错误
linux·opencv·ubuntu
认真学习的小雅兰.1 小时前
如何在Ubuntu上利用Docker和Cpolar实现Excalidraw公网访问高效绘图——“cpolar内网穿透”
linux·ubuntu·docker
zhou周大哥2 小时前
linux 安装 ffmpeg 视频转换
linux·运维·服务器
不想起昵称9292 小时前
Linux SHELL脚本中的变量与运算
linux
loong_XL2 小时前
服务器ip:port服务用nginx 域名代理
服务器·tcp/ip·nginx