DATA



Operating Systems (general)

The operating system (OS) is the central system software that manages all computer hardware resources.

It provides a uniform interface and common services necessary to run application software. For example, an operating system grants access to the CPU and allocates memory to every program. It monitors all running software and can withdraw resources when required, even without the consent of an application. The operating system also ensures that programs do not interfere with each other and that data is reliably and securely stored.

Multitasking, Multiuser

All modern operating systems used on desktop, laptop and server computers as well as the ones on smartphones are multi-tasking systems, meaning they can concurrently execute multiple programs at once. When the CPU hardware features multiple cores programs can truely execute in parallel. All desktop-class systems implement the concept of a user with a unique identity and are thus able to manage multiple user accounts. A typical mobile OS for smartphones and tablets lacks this feature.

Components

Kernel: The central component of an OS is its kernel. The kernel directly controls access to physical memory and CPU, ensuring isolation, security and offering a controlled way of communication for all running processes. When you as a user start a program, the kernel creates a new process and loads the executable code of that program together with some initial data into memory. Processes are strictly isolated from each other. That way the OS makes it impossible for one process to read or corrupt another processes' data. When a process requires more memory than physically available, the kernel can stop the process, attempt to compress data in memory or temporarily offload parts of the data to disk. This process, called paging (because memory is moved in blocks, so called pages), is part of the virtual memory management. It may slow down execution, but it allows you to run jobs that would otherwise be impossible to execute.

Memory Mangement: When programs require more memory than physically available the OS offloads data from DRAM to slower disk storage. When a program requires the data again it is reloaded into DRAM which may take a considerable amount of time during which the program or even the entire system seem unresponsive. Some operating systems (OSX) have started to compress unused data in memory, trading a few CPU cycles for lower memory pressure which results in an overall percieved performance improvement. To avoid high memory pressure you should monitor the memory requirements of the software you use and try not to run multiple memory-heavy programs in parallel.

Device Driver: To access and manage hardware such as disks, network interfaces, I/O ports, displays, keyboards, etc an OS kernel makes use of device drivers. A driver is a software module that embeds specialized instructions to directly communicate with a hardware module. Hardware may be so special that operating it requires a particular driver version made exactly for the hardware revision in question. Sometimes drivers are more generic, especially when hardware interfaces have been standardized as is the case for disks. In any case, the driver software must match the operating system's type and kernel version to be loaded.

Network Stack: The network stack is a software module inside the OS kernel that implements and manages all network protocols and network adapters. Today, every operating sytem supports at least the Internet protocol family IP/TCP/UDP and several link-level protocols to access features of at least WLAN and Ethernet network adapters. Most operating systems also support additional protocols for accessing networked storage and networked printers (SMB, AFP, NFS, IPP, etc.).

User interface: For human interaction, operating systems contain some form of user interface. Mobile and desktop systems feature graphical user interfaces, while servers and network appliances are usually delivered with a text-based interface, a so called shell, only. Some networked systems such as NAS or WLAN routers come with a web-based user interface for remote configuration and control. Some systems allow the user to choose between different graphical interfaces (Linux, other UNIX-based systems), while others offer a pre-defined look only (Windows, OSX, mobile).

Applications: Application software is usually written for a particular operating system and user interface. Portability between systems is often very limited because of the vastly different programming interfaces, libraries and even user design philosophies. Hence, portable software is difficult to find and usually only available from very large vendors with a big user base.