扫码阅读
手机扫码阅读

基于Linux系统聊聊关于进程和内存的一些事儿

9 2024-10-18

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:基于Linux系统聊聊关于进程和内存的一些事儿
文章来源:
光荣之路
扫码关注公众号

进程的概念和特点

进程是操作系统中正在运行的程序的实例,它包括程序代码、数据以及执行所需的资源。进程具有以下特点:

  • 程序代码:包含指令序列,定义程序逻辑和功能。
  • 数据:包括全局变量、静态变量等,存储执行过程中的信息。
  • 执行环境:每个进程有独立环境,包括内存、CPU寄存器等。
  • 资源管理:操作系统负责进程资源的分配和调度。
  • 状态转换:进程有多种状态,如运行、就绪和阻塞状态。
  • 进程标识符:每个进程有唯一的PID。
  • 父子关系:进程可形成树状的父子关系结构。

地址空间

地址空间是进程可用的内存地址范围,为每个进程提供独立的内存空间,包括以下组成部分:

  • 代码段:存放机器代码,通常只读。
  • 数据段:存放已初始化的全局变量等,可读写。
  • 堆:动态内存分配区域。
  • 栈:存放局部变量和函数调用信息。
  • 内核空间:仅内核访问的代码和数据结构。

地址空间的划分确保进程间内存隔离,提高系统安全性和稳定性。进程使用内存的工作流程包括分配、管理、释放和回收。

如何查看和判断内存使用情况

通过命令行工具如 freetop 可查看内存使用情况,其中:

  • Total:系统物理内存总量。
  • Used:系统当前已使用内存量。
  • Free:系统当前未使用内存量。
  • Shared:多个进程共享的内存量。
  • Buff/Cache:用于缓存数据的内存量。
  • Available:系统当前可用于新进程的内存量。

内存指标间的关系为 Total = Used + Free + Buff/Cache 和 Available = Free + Buff/Cache。

Linux内存不足可能表现为内存使用率高、交换分区使用率高、进程被杀、程序反应慢等。通过命令 free -mswapon -s、日志检查和 top 命令可判断内存是否耗尽。

想要了解更多内容?

查看原文:基于Linux系统聊聊关于进程和内存的一些事儿
文章来源:
光荣之路
扫码关注公众号