What subjects and concepts go into resource management in an OperatingSystem (the most general case)?
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
- a node can grant requests to its children
- a node can unilaterally revoke reserves granted