The OS is divided into different layers of abstraction. Hardware, Kernel Mode and User Mode. Each layers hides it’s own complexities and export API to the layer above.
The hardware as you know is the physical parts or components of a computer, such as the monitor, keyboard, computer data storage, graphic card, sound card and motherboard.
This is the layer where the OS works, also known as the Privileged Mode. It’s hides the hardware details from your applications. Code and access to operations at the kernel layer are restricted from user application, this is to enable coordination and allow the OS to manage the computer resources effectively. Any attempt by the user application to illegally cross directly into the kernel causes a trappable exception to be thrown. Most drivers runs in the kernel mode.
OS provides API for user applications to request services in the kernel, such requests are called System Calls. In Linux includes:
- fork() — use for creating new child processes
- execve() — executes the program pointed to by filename
- open() — opens the file specified by pathname.
- read() — read from a file descriptor
- write() — write to a file descriptor
A process is an instance of executing program
Each process has a virtual address space that is private, the virtual address contains the stack, heap, text and all of your application states. A process only have access to it’s own virtual address and cannot access that of others. This allow each application to run in isolation so that a crash in one application does not affect other applications.
Operating system is a voluminous topic but the knowledge is worth it for those who didn’t study Computer Science.
This was just a brief introduction to operating system, for a deeper understanding I will advice you take this course on Udacity. — Introduction to Operating System