another layer of abstraction allows us to partition users into groups, and apply the fair share algorithm to the groups as well. in this case, the available cpu cycles are divided first among the groups, then among the users within the groups, and then among the processes for that user. for example, if there are three groups (1,2,3) containing three, two, and four users respectively, the available cpu cycles will be distributed as follows: