> For the complete documentation index, see [llms.txt](https://www.theprogrammershandbook.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.theprogrammershandbook.com/operating-systems/intro.md).

# Introduction

## Why have an Operating System?

While we can run applications directly on hardware without an operating system (think of [Arduino](https://www.arduino.cc/)), as computers have become more powerful we have wanted to run more and more complicated software on our machines, often alongside other applications. If we wanted to run more than one application on an Arduino, not only would there be no mechanism for the applications to share resources but if you wanted to run the same applications on different hardware you would need to rewrite a lot of code. Operating systems provide an **abstraction** for hardware, allowing both [portability](https://en.wikipedia.org/wiki/Software_portability) and the efficient sharing of resources.

## What is an Operating System?

The operating system is the **software layer** between user applications and computer hardware.
