The most important is probably resource allocation, meaning quotas and scheduling. Unfortunately, quotas are rarely if ever implemented. And the few places they are implemented, they're extremely coarse-grained. For example, quotas for entire filesystems or for users. What's really needed is fine-grained quotas.
Some people may question the need for quotas, but then again, they've never used a system which allows sharing of objects between users. Unix doesn't and neither Mac nor Windows are even multi-user. And then there's the rarely considered fact that scheduling is a form of resource allocation, and that process priorities are a form of quota. Bad quotas.
The proper way to do quotas is to make them dynamic and event-driven. The essential features of the system are:
each node of the graph has a size, an allocated quota and a reserved quota
each node's size + reserved quota can't be greater than its allocated quota
each node can ask its parent nodes for more reserve