在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同位数的系统,地址 空间的范围也不同。比如最常⻅的 32 位和 64 位系统,如下所示:
32 位系统的内核空间占用 1G ,位于最高处,剩下的 3G 是用户空间;
64 位系统的内核空间和用户空间都是 128T
进程最多可以创建多少线程
进程的虚拟空间上限:创建一个线程,操作系统会为其分配一个栈空间,线程数量越多,需要的栈空间越大,虚拟内存占用的就会越多。
系统参数限制:linux没有内核参一个数限制单个进程的创建的最大线程数,但是有系统级别的参数控制系统的最大线程数。
总之
- 32 这个系统,用户态的虚拟空间只有 3G,如果创建线程时分配的栈空间是 10M,那么一个进程最多只能创建 300 个左右的线程。
- 64 系统,用户态的虚拟空间大到有 128T,理论上不会受虚拟内存大小的限制,而会受系统的参数或性能限制。大概2.3万