Linux内存管理与信号机制详解
1. 内存锁定与解锁
在Linux系统中,内存锁定和解锁操作对于控制内存的使用和交换有着重要意义。大多数应用程序会指定两个值的按位或操作。当调用成功时返回0,失败则返回 -1,并将 errno 设置为以下错误代码之一:
- EINVAL :参数 flags 为负数。
- ENOMEM :调用者试图锁定的页面数量超过了 RLIMIT_MEMLOCK 资源限制所允许的数量。
- EPERM : RLIMIT_MEMLOCK 资源限制为0,且进程不具备 CAP_IPC_LOCK 能力。
若要从物理内存中解锁页面,允许内核根据需要将页面交换到磁盘,POSIX标准化了两个接口:
#include <sys/mman.h>
int munlock (const void *addr, size_t len);
int munlockall (void);
munlock() 系统调用用于解锁从 addr 开始、长度为 len 字节的页面,它会撤销 mlock() 的效果。 munlockall() 系统调用则会撤销 mlock
超级会员免费看
订阅专栏 解锁全文
3177

被折叠的 条评论
为什么被折叠?



