请问在linux上是个人都能用mlock给内存加锁么??我怎么看N本书上都是说只有root可以使用mlock(),而普通用户不能呢!?
但是我试验了一下,好像人人能使用mlock()。
以下是我试验过程,大家看看有什么不对?
[song@localhost ~]$ cat test.c
#include
by basten54188 - C/C++ - 2008-12-11 09:40:27 阅读(2025) 回复(0)
2007-12-23 mm/mlock.c 提供系统调用 sys_mlock,sys_munlock,sys_mlockall,sys_munlockall. man mlock.c获取更多信息. mlock提供一种让用户参与调整内核swap策略的一种方式.用户指定的地址范围 内核保证不交换到磁盘. 入口函数sys_mlock,sys_munlock,sys_mlockall,sys_munlockall效验参数,对 齐开始地址然后转交下级函数. 仅以sys_mlock为例,其余函数应该不在话下. sys_mlock->do_mlo...
运行结果 Testing with user 'bin' (uid: 1)
You have the right to call mlock
普通用户不是不能使用吗?求高手
#define _XOPEN_SOURCE 600
#include
如下代码来自于linux 2.4.18版本。中代码mlock.c [code] static int do_mlock(unsigned long start, size_t len, int on) { unsigned long nstart, end, tmp; struct vm_area_struct * vma, * next; int error; if (on && !capable(CAP_IPC_LOCK)) return -EPERM; len = PAGE_ALIGN(len); end = start + len; if (end < start) return...
如下代码来自于linux 2.4.18版本。中代码mlock.c [code] static int do_mlock(unsigned long start, size_t len, int on) { unsigned long nstart, end, tmp; struct vm_area_struct * vma, * next; int error; if (on && !capable(CAP_IPC_LOCK)) return -EPERM; len = PAGE_ALIGN(len); end = start + len; if (end < start) return...
二、 mlock系统调用简介 本组分析的系统调用包括mlock、munlock、mlockall、munlockall(分别对应sys_mlock、sys_munlock、sys_mlockall、sys_munlockall四个函数)四个有关内存加锁的系统调用。这四个系统调用代码基本上类似的,所以本组每个人(本组共四个人)分别取其中一个系统调用作为各自代码分析的重点,而本人分析的重点是系统调用mlock。 本文主要分析在LINUX中系统调用mlock的处理机制,包括初始化、处理过程、结束等。 2...
二、 mlock系统调用简介 本组分析的系统调用包括mlock、munlock、mlockall、munlockall(分别对应sys_mlock、sys_munlock、sys_mlockall、sys_munlockall四个函数)四个有关内存加锁的系统调用。这四个系统调用代码基本上类似的,所以本组每个人(本组共四个人)分别取其中一个系统调用作为各自代码分析的重点,而本人分析的重点是系统调用mlock。 本文主要分析在LINUX中系统调用mlock的处理机制,包括初始化、处理过程、结束等。 2...
一、 LINUX内存管理简介 1.1.LINUX的分页管理机制 在LINUX中,每一个用户进程都可以访问4GB的线性虚拟内存空间。其中从0到3GB的虚拟内存地址是用户空间,用户进程可以直接对其进行访问。从3GB到4GB的虚拟内存地址为核心空间,存放仅供核心态访问的代码和数据,用户进程不可访问。当用户进程通过中断或系统调用对其访问时,就会触发处理器的特权级转换(从处理器的特权级3切换到特权级0),即从操作系统的用户态切换到核心态。 所有...
一、 LINUX内存管理简介 1.1.LINUX的分页管理机制 在LINUX中,每一个用户进程都可以访问4GB的线性虚拟内存空间。其中从0到3GB的虚拟内存地址是用户空间,用户进程可以直接对其进行访问。从3GB到4GB的虚拟内存地址为核心空间,存放仅供核心态访问的代码和数据,用户进程不可访问。当用户进程通过中断或系统调用对其访问时,就会触发处理器的特权级转换(从处理器的特权级3切换到特权级0),即从操作系统的用户态切换到核心态。 所有...