Chinaunix首页 | 论坛 | 博客
  • 博客访问: 325104
  • 博文数量: 100
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 665
  • 用 户 组: 普通用户
  • 注册时间: 2015-02-02 12:43
文章分类

全部博文(100)

文章存档

2015年(100)

我的朋友

分类: LINUX

2015-05-28 21:02:27

freezer子系统用于挂起和恢复cgroup中的进程。freezer有一个控制文件:freezer.state,将FROZEN写入该文件,

可以将cgroup中的进程挂起,将THAWED写入该文件,可以将已挂起的进程恢复。通过遍历cgroup中的进程,对其freeze或者wake_up。

freeze操作通过freeze框架实现,设置进程的TIF_SIGPENDING函数(伪信号),唤醒进程,然后进程在返回用户态时,信号处理入

口get_signal_to_deliver中通过try_to_freeze冻结进程。

关于子系统,Cgroups 层次结构与任务之间的关系,有以下几条规则:

1. A single hierarchy can have one or more subsystems attached to it.
一个层次结构可以关联一个或多个子系统。

2. Any single subsystem cannot be attached to more than one hierarchy if one of those hierarchies has a different subsystem attached to it already.
任何单个子系统不可以被关联到一个以上的层次结构,如果其中一个层次结构已经关系到一个不同的子系统。

3. A task cannot be a member of two different cgroup in the same hierarchy.
一个任务不能同时属于同一个层次结构中的两个 cgroup。

4. A forked task inherits the exact same cgroups as its parent task.
当 cgroups 中的一个任务 fork 出一个新任务时,新任务自动继承其父任务的 cgroup 关系。但是,新任务与父任务之间是完全独立的,新任务可以被移动到其他的 cgroups 。

阅读(1324) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~