The defining characteristic of operating systems is the connection it provides between the hardware, the software and, in some cases, the user interface. Computers require an operating system in order to be used.
All modern computers require some software to control, and the operating system is the most basic software available. While operating systems used on small devices may be relatively small and simple, popular operating systems like Windows, OSX and Linux provide drivers for a wide range of devices and a user interface.
The core part of an operating system is its kernel. Today, monolithic kernels are the most popular. These kernels provide a way for different computer processes to send messages to each other, and they manage the RAM that stores program information. Most kernels also provide device drivers to control monitors, input devices, disk drives and other peripherals.
In the past, software could only target a specific operating system, and programs had to be adjusted and compiled to run on different platforms. However, modern programs are designed to run on a range of supported platforms. Java is largely crediting as starting this trend, but Python, Ruby and other high-level programming platforms make it simple to port programs to new systems.