Establish communication between user and the computer
Manage files; opening, deleting, rename, create
Handle interrupts/errors
Manage peripherals and drivers
Manage memory - manage RAM and HDD/SSD during program execution, manage movement of data to/from RAM, manage transfer of pages between virtual memory and RAM, managing multitasking/timeslicing, share hardware resources/memory with each of the processes
Provide system security - manage access levels, antivirus, system updates
Manage user accounts - allow multiple users to customise acc individually