挂起状态的前提条件
当 内存资源严重不足 时,操作系统会考虑将部分进程换出到磁盘上的交换空间(swap 分区)。这通常发生在以下几种情况下:
-
内存不足:
- 当物理内存接近耗尽时,操作系统会选择将一部分暂时不需要执行的进程或页面换出到磁盘上的交换空间。
- 当物理内存接近耗尽时,操作系统会选择将一部分暂时不需要执行的进程或页面换出到磁盘上的交换空间。
-
进程阻塞:
- 当内存资源不足时,若有进程处于阻塞状态(如等待 I/O 操作完成),这些进程在短时间内不会占用 CPU 资源,因此可以暂时从内存中移出,释放内存空间。
注意前提:当内存资源不足时,才会启动挂起,否则没必要,因为和磁盘的IO交互较为耗时,频繁的换入换出操作会对系统性能产生影响。
Swap 分区的概念和作用
1、Swap 分区通常是一块磁盘空间,用于临时存储被换出的内存页或进程状态。
2、Swap 分区的大小一般建议设置为物理内存的大小,或者是物理内存的 1.5 倍到 2 倍,以应对不同场景下的内存需求。
换出换回的过程
- 换出(Swap Out):
- 当内存紧张时,操作系统会选择将一部分阻塞状态的进程或空闲的内存页换出到磁盘上的 swap 分区。
- 换出的过程涉及将进程的状态和数据写入磁盘,这会消耗一定的 I/O 时间。
- 换回(Swap In):
- 当阻塞的进程需要恢复执行(例如,当外设有数据响应时),操作系统会将该进程从 swap 分区换回到内存中。
- 换回的过程涉及从磁盘读取进程的状态和数据,同样会消耗一定的 I/O 时间。
阻塞挂起状态
当一个阻塞状态的进程被换出到 swap 分区时,它的状态会从“阻塞”转变为“阻塞挂起”状态。
时间换取空间的过程
时间换取空间:进程和磁盘swap分区之间的 换出换回的过程 确实会消耗一定的时间,但它可以腾出宝贵的内存空间,使系统能够在有限的物理内存条件下支持更多的进程运行。
在真实的生产环境中
在实际的生产环境中,特别是在高性能和关键业务的应用场景下,通常会权衡时间和空间的成本,一般会将该 swap分区功能关闭掉,优先选时间,而不是这一点点内存
此时,可能会通过直接增加服务器的物理内存容量,或者采用分布式架构,将负载分散到多个服务器上(分担运行压力)