主要观点总结
本文回顾了Linux虚拟内存知识,介绍了32位和64位系统中虚拟内存空间的分布和特点。同时,文章还探讨了创建线程所需的虚拟内存空间大小,以及影响一个进程可创建线程数量的条件,包括虚拟内存空间上限、系统参数限制等。最后,总结了32位和64位系统在创建线程方面的差异和限制。
关键观点总结
关键观点1: Linux虚拟内存空间分布
在Linux操作系统中,虚拟地址空间分为内核空间和用户空间两部分。不同位数的系统,地址空间的范围也不同。比如32位系统的内核空间占用1G,用户空间为3G;而64位系统的内核空间和用户空间都是128T。
关键观点2: 虚拟内存空间中的内存段
用户空间内存分为多个不同的内存段,如代码段、数据段、BSS段、堆段、文件映射段和栈段等。其中,堆和文件映射段的内存是动态分配的。
关键观点3: 创建线程所需的虚拟内存
创建一个线程需要占用一定的虚拟内存空间,通常是固定的栈空间。在32位系统中,默认栈空间大小为8M,而在64位系统中,理论上的栈空间大小没有明确的限制。
关键观点4: 影响创建线程数量的因素
一个进程可创建的线程数量受到虚拟内存空间上限、系统参数限制等因素的影响。在32位系统中,由于虚拟内存空间有限,创建的线程数量也相对较少;而在64位系统中,理论上的虚拟内存空间很大,可以创建更多的线程,但实际操作中仍受到系统参数的限制。
文章预览
转自:网络 前言 话不多说,先来张脑图~ linux 虚拟内存知识回顾 虚拟内存空间长啥样 在 Linux 操作系统中,虚拟地址空间的内部又被分为 内核空间和用户空间 两部分,不同位数的系统,地址空间的范围也不同。比如最常见的 32 位和 64 位系统,如下所示: 通过这里可以看出: 32 位系统的内核空间占用 1G,位于最高处,剩下的 3G 是用户空间; 64 位系统的内核空间和用户空间都是 128T,分别占据整个内存空间的最高和最低处,剩下的中间部分是未定义的。 32 位虚拟内存空间 通过这张图你可以看到,用户空间内存,从 低到高 分别是 6 种不同的内存段: 0x0000 0000 到 0x0804 8000 这段虚拟内存地址是一段不可访问的保留区,因为在大多数操作系统中,数值比较小的地址通常被认为不是一个合法的地址,这块小地址是不允许访问的。比如在 C 语言中我们通
………………………………