linux进程管理-----进程资源限制

本文详细介绍了Linux系统中进程资源限制的概念,包括CPU时间、文件大小、堆大小、栈大小、内存转储文件大小等16个限制类型。通过`rlimit`结构体,用户可以使用`getrlimit`和`setrlimit`系统调用来查看和调整进程的资源限制。超限将导致系统发送信号,如SIGXCPU和SIGXFSZ。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

资源限制一般在task_struct->singal->rlim结构体数组内

struct rlimit {
        __kernel_ulong_t        rlim_cur; //当前限制值
        __kernel_ulong_t        rlim_max; //最大限制值
};

一共存在16组资源

#define RLIMIT_CPU              0      进程每秒使用的cpu时间,如果超过了这个值内核会给进程发送一个SIGXCPU信号如果还不终止则再发送一个SIGKILL信号
#define RLIMIT_FSIZE            1       文件大小的最大值,如果进程试图把一个文件的大小扩充到大于这个值则内核会发送SIGXFSZ信号
#define RLIMIT_DATA             2      堆大小的最大值,在扩充进程堆之前检查这个值
#define RLIMIT_STACK            3      栈大小的最大值,内核扩充进程的用户态堆栈之前检查这个值
#define RLIMIT_CORE             4       异常退出进程内存转储文件的大小,当一个进程异常终止时内核在进程的当前目录下创建内存信息转储文件之前检查这个值

#ifndef RLIMIT_RSS
# define RLIMIT_RSS             5       进程所能拥有的页框最大数
#endif

#ifndef RLIMIT_NPROC
# define RLIMIT_NPROC           6       用户所能拥有的进程最大数
#endif

#ifndef RLIMIT_NOFILE
# define RLIMIT_NOFILE          7       打开文件描述符最大数

#ifndef RLIMIT_MEMLOCK
# define RLIMIT_MEMLOCK         8      非交换内存的最大值,当进程试图调用mlock、mlockall系统调用锁住一个页框时内核检查这个值
#endif

#ifndef RLIMIT_AS
# define RLIMIT_AS              9       进程地址空间的最大数,当进程使用malloc等相关函数扩充进程自己的地址空间时,内核检查这个值
#endif

#define RLIMIT_LOCKS            10     文件锁最大值
#define RLIMIT_SIGPENDING       11      进程挂起信号的最大值
#define RLIMIT_MSGQUEUE         12      posix消息队列中的最大值
#define RLIMIT_NICE             13      对应进程的优先级nice值最大值
                                           
#define RLIMIT_RTPRIO           14    为 SCHED_RR 和 SCHED_FIFO 策略定义了非特权线程的静态优先级的上限
#define RLIMIT_RTTIME           15       指定根据实时调度策略调度的进程在不进行阻塞系统调用的情况下可能消耗的CPU时间(以微秒为单位)的限制
#define RLIM_NLIMITS            16

用户可以调用getrlimit和setrlimit调整进程的rlim_cur限制增加到rlim_max。只有超级用户能够改变rlim_max值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值