While you may consider Graphical User Interface (GUI) as a prime role of an OS that would be in error (some Embedded OS’s have no GUI). The following is the list to use.
Scheduling
Multiple processes are required to run on an Operating System, both application software processes and utility software processes. The Operating System manages the priority of those processes and schedules when they need to run to ensure a stable system.
Managing concurrency
While it seems that all software is running smoothly without delay on a computer system, in reality processes (in a multiprocessor system) are running on a finite number of cores. Therefore, the processes are constantly stopping and starting so multiple processes can execute seemingly in real time – as modern CPUs are running in the billions of cycles per second. The concept of interleaving processes is known as managing concurrency.
Managing Memory
Processes and data need to be stored in primary storage. The Operating System manages how memory is allocated and keeps track of memory addresses and how they allocated (or unallocated). If a system runs out of physical memory modern Operating Systems can create virtual memory using secondary storage (known as paging) – this is much slower than cache or RAM.
Managing devices
Operating Systems provide an interface between application and utility software (processes) and input and output devices (mice, keyboard, graphics card, printer, etc), with the use of drivers (to provide detail of how to interface between the OS and the device).