一、Linux 系统 & 进程管理 🐧
-
查看内存使用情况
free -h
total
/used
/free
/shared
/buff/cache
/available
-m
可按 MB 显示,更精确
top
/htop
- 按
%MEM
排序:Shift + M
- 查看 RES(常驻集大小)、VIRT(虚拟内存)、SWAP
- 按
vmstat 1 5
r
(运行队列)、b
(不可中断睡眠)、si
/so
(Swap 进出)
ps aux --sort=-%mem | head
:查看最耗内存进程
-
物理内存 vs 虚拟内存
- 物理:直接读写 DRAM
- 虚拟:CPU + MMU 分页,将虚拟地址映射到物理页框 + Swap
- 页表:记录映射关系
- 缺页中断:访问未映射页 → 内核加载或 Swap 交换
-
Swap 交换内存
- 用途:RAM 不够时,非热数据移到磁盘
- 优点:避免 OOM,临时“超配”
- 缺点:磁盘 I/O 慢 → 卡顿
- 调优:
swappiness
参数(0–100,越低越少用 Swap)
-
用户 & 用户组管理
useradd -m username
:同时创建家目录usermod -aG wheel username
:追加到 wheel 组(sudo)passwd -l username
/passwd -u username
:锁/解锁账户groupdel groupname
:删除组
-
用户态 vs 内核态
- 用户态:只能执行受限指令,APP 崩溃不拖垮内核
- 内核态:全权限,管理调度、中断、I/O
- 切换:通过软中断(系统调用)或硬中断
- 面试点:STI/CLI 指令、特权级(Ring 0/3)
-
进程间通信(IPC)
- 匿名管道
|
:仅限父子进程 - 命名管道
mkfifo /tmp/f
:任意进程打开读写 - 共享内存
shmget()/shmat()
:最快,需配信号量同步 - 消息队列
msgget()/msgsnd()/msgrcv()
:按消息类型过滤 - 信号量
semget()
:用于保护临界区 - Socket:支持本地(UNIX Domain)与网络通信
- 匿名管道
-
管道 vs 重定向
- 管道:无中介文件,直接内存传输。例:
ps aux | grep nginx
- 重定向:与文件交互。例:
grep error log.txt > errors.txt
- 管道:无中介文件,直接内存传输。例:
2024年4月17日大约 5 分钟