freezer子系统用于挂起和恢复cgroup中的进程。freezer有一个控制文件:freezer.state,将FROZEN写入该文件,
可以将cgroup中的进程挂起,将THAWED写入该文件,可以将已挂起的进程恢复。通过遍历cgroup中的进程,对其freeze或者wake_up。
freeze操作通过freeze框架实现,设置进程的TIF_SIGPENDING函数(伪信号),唤醒进程,然后进程在返回用户态时,信号处理入
口get_signal_to_deliver中通过try_to_freeze冻结进程(设置进程为TASK_UNINTERRUPTABLE,然后重调度)
参考博客:
时间: 2024-10-22 05:57:06