Concurrency and asynchrony make operating systems very complicated pieces of software. Operating systems are fundamentally non-deterministic and event driven. On a multiprocessor multiple user processes execute in parallel. Multiple workstations execute concurrently and communicate by sending messages over a network. Protocol processing takes place asynchronously.
Operating systems are so large no one person understands whole system.
Outlives any of its original builders. The major problem facing computer science today is how to build large, reliable software systems. Operating systems are one of very few examples of existing large software systems, and by studying operating systems we may learn lessons applicable to the construction of larger systems.