The Operating System is the most important software on a computer. It is the one that manages hardware resources and provides services to other applications. It also performs different functions of vital importance to be able to use the equipment.
Operating system usage block diagram
Operating systems can be present not only on computers. We can also find them in mobile devices such as tablets, phones or smart watches, also in routers, switches, Wi-Fi access points, televisions, multimedia playback equipment, medical equipment, ATMs, smart cars, and in an endless number of devices. the ones we use very often in our daily lives. In almost all computers that include microprocessors in one form or another we will have operating systems.
The operating system provides functions to user applications to interact with it, with other applications or with the hardware, these functions are known as “System Calls” or “System Calls” and these are typical of each operating system.
In general, operating systems work in two modes, user mode and privileged mode. In user mode or restricted mode the microprocessor can execute a reduced set of instructions and in privileged mode or kernel mode the entire set of instructions of the microprocessor is available. Applications run in restricted mode and when they need to access some privileged function, a system call is made and a context switch occurs. The kernel starts running in privileged mode, resolves the system call request and switches back to restricted mode. And returns the result to the application. This process can occur hundreds of times per second.
General components of an operating system
- Bootloader, Program that loads the OS, Examples: GRUB, NTLDR, Lilo
- Kernel, Main part of the operating system Examples: Linux kernel, ntoskrnl.exe
- Hardware Drivers
- Libraries or function libraries
- Shell or Application Launcher (special application that serves as an interface to interact with the system, it can be in text mode or graphical mode)
- System applications (OS-specific programs, configuration software, etc.)
- Utilities included (user utility programs, example: editors, calculator, players, etc.)
According to the kernel architecture, they are classified as:
- Microkernel (characterized by a very small kernel with only the primitive functions and system calls for basic address space services, inter-process communication, and basic scheduling)
- Monolithic Kernel : Everything is included in the same logical space or program in which all functions or subroutines are intertwined.
- Hybrid Kernel (Modified microkernel that includes more functionalities and inserts them within the kernel)
- Hierarchical Kernels, Multilayers or rings (There are different layers or rings depending on the kernel components and each one has a hierarchical level, with the most external being those with the least privileges)
- Distributed Kernel (It separates its components into servers that are distributed in one or several nodes and the reduced kernel is simply responsible for the communication of the components)
- ExoKernel (does not provide hardware abstractions, but allows the use of libraries that provide greater functionality due to direct or almost direct access to the hardware.)
And what does the operating system do that is so important?
- Manage hardware resources and keep statistical control of their use. The operating system is the one that controls which application accesses which resource, if it can do so, and if so, the usage statistics.
- Provide additional functions to user applications.
- Control the security of the system as a whole
- Provide hardware abstractions for applications
- Make efficient use of resources
- Enables multitasking and multiprogramming
- Allow jobs to run in batches
- Facilitate interaction between the user, applications, and hardware
- Create a common interface to use different hardware equipment
In a more technical and specific way, we can summarize some of the main functions of a modern operating system in the following list:
Main functions of the operating system:
- Management of processing units and their use (Microprocessor, Cores)
- Physical RAM and Virtual Memory Management (Paging)
- Hardware or Software Outage Management
- Entry and exit management
- Device management (physical or virtual hardware used in the system) and its abstractions (Drivers)
- Disk and file system (partition) management (Mount, Check, Format, Resize, Delete)
- Management of directories (Folders), files (archives), links
- Process and thread management
- Short, medium or long term process planning
- Management of communications between processes (IPC Mechanisms)
- Management of communications between devices (TCP IP Stack, Routes, etc.)
- Queue management for the use of exclusive use devices (Printer, Disc Burners, Tape Recorders, etc.)
- Configuration Management
- Event management (logs)
- User and group management
- Security management (Permissions, authorizations, policies)
- Service Management (daemons) (Background Services)
- Application management
- Energy management
- Management of the startup and loading process of the system and applications itself
In the context of modern operating systems, a fundamental entity is the process, which is the logical form that represents a task (machine code or binary program) in execution and the assigned resources with which said task interacts.
The operating system allows you to manage hardware resources and controls which application can access a resource and, if so, keeps all the statistics regarding their use.
It is the one that controls security, users, groups, privilege levels, security policies, file system permissions, etc.
It also provides hardware and software abstractions for applications and offers simpler and more generic user interfaces for devices. So a programmer of a user application does not have to worry about having to write code to access the disk or partitions according to their operating system. In files, the programmer simply in his code specifies that a file be opened and all the complexity behind that is handled by the operating system, thus facilitating application development.
The operating system makes efficient use of resources which are finite and scarce (Microprocessor, RAM, Hard disk space, hard disk access bus bandwidth, network access and use of available network bandwidth. , etc.)
The OS is in charge of executing the tasks (Processes). For this, it uses techniques such as multiprogramming and multitasking that exchange resources hundreds of times per second between the different tasks, achieving progress little by little in all of them. Concurrently, to simulate that all tasks are being executed at the same time and thus take advantage of the computer’s computing capabilities over time.
It also allows the execution of jobs in batches (script execution)
The operating system facilitates the interaction between the user and the applications through the Shell, which can be in the form of command interpreters or in graphical mode.
Operating system classifications
Depending on their mode of execution, tasks can be:
- Monotasking (Only one task can be executed at a time)
- Multitasking (Can execute multiple tasks concurrently)
Taking into account the end user, they are classified into:
- Monousuary (capable of being used by a single user)
- Multi-user (capable of being used by multiple users)
Taking into account your way of managing resources:
- Centralized (the entire system is on a single computer)
- Decentralized (the system is distributed across several computers)
Some examples of operating systems for personal computers or servers
- Microsoft Windows (XP, Vista, 7, 8,8.1, 10, etc.)
- Mac OS X
- GNU Linux (Debian, Ubuntu, Mint, Fedora, Centos, Suse, etc.)
- Unix
- The BSD family (FreeBSD, OpenBSD, Pfsense)
- Solaris
- Android
- Google Chome OS
- ReactOS
- Hummingbirds
- Haiku OS
Examples of operating systems for mobile devices
- Android
- iOS
- Microsoft Windows Phone
- Google Chome OS
- FirefoxOS
- BlackBerryOS
- Symbian
- HP webOS
- Free Phone
- Harmony OS from Huawei
Operating Systems for Smart Televisions (Smart TV)
- Android TV on many televisions (Sony, for example)
- WebOS on LG
- Firefox OS on Panasonic TVs, for example
- My Home Screen on some Panasonic TVs
- Harmony OS from Huawei
- Tizen on Samsung
- Year
- Amazon Fire TV for Amazon Fire TV Stick, Cube…
Operating systems for smart watches:
- Android
- WatchOS
- Android Wear
- WearOS9
- OpenWatch
Real-time operating systems
A special category of Operating Systems are the so-called Real-Time Operating Systems. They are those in which the user is not important, but the processes. For the most part, their resources are underutilized in order to pay attention to the processes when they require it. They are used in environments where a large number of events are processed. Many real-time Operating Systems are built for very specific applications.
Examples
These systems are those used for air traffic control, stock exchanges, refinery control, train control, telecommunications, integrated manufacturing systems, production and distribution of electrical energy, building control and multimedia systems, among others.
Some examples of real-time Operating Systems are: VxWorks, Solaris, Lyns OS and Spectra.
To delve a little deeper into the topic, we recommend the articles listed below.