# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.theprogrammershandbook.com/operating-systems/intro.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
