Linux操作系统提供了资源限制机制,对进程使用系统资源施加了一些限制。
设想,不做一些限制,进程想用多少资源就有多少吗?那是不可能的!
这些资源限制的信息在task_struct里面,使用一个叫做rlimit的数组保存着。系统把不同的资源对应着数组的不同下标位置,也就是说每个资源都有对应的包含资源限制信息的结构体
这个数组用来存储上图中的结构体类型的对象。
看看这个结构体里面包含的成员:
10 struct rlimit
11{
12 unsigned long rlim_cur;
13 unsigned long rlim_max;
14};
rlim_cur
:进程当前的资源限制,可以叫做软限制(Soft limit)。
rlim_max
:这个限制的最大值,也就是说资源限制的上限是多少,这种也可以叫做硬限制(Hard limit)。
【注意】
系统对这些资源的代数限制使用预定义的宏常数来表示,以下《深入理解Linux内核架构》中所列出来的。
如果没有使用限制,那么会默认将rlim_max设置成RLIM_INFINITY
,它的值表示对资源不做限制,这几乎是所有资源的默认设置。但是还有特殊的:
1】一个进程所能打开的文件个数。默认限制在1024个
2】每个用户的最大进程个数。
在Linux查看当前进程的资源限制,使用命令
cat /proc/self/limits