Multiple processes share one processor. Multiple users and files share one disk. Abstractions often work well - for example, timesharing, virtual memory and hierarchical and networked file systems. But, may break down if stressed. Timesharing gives poor performance if too many users run compute-intensive jobs.
Abstractions often fail for performance reasons.
Abstractions also fail because they prevent programmer from controlling machine at desired level. More recently, existing OS schedulers fail to adequately support multimedia and parallel processing needs, causing poor performance. 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.