Overview of Operating System
An Operating System (OS) is the most important software that runs on a computer. It manages the computer’s memory and processes, as well as all of its software and hardware. It also allows you to communicate with the computer without knowing how to speak the computer’s language. Without an operating system, a computer is useless.
In this blog post, we will explore some of the basic and advanced concepts of operating systems, such as:
Introduction to Operating System
An operating system (OS) is a software program that manages computer hardware resources and provides common services for computer programs. The primary function of an operating system is to act as an interface between the user and the computer hardware. It is responsible for managing the various components of a computer system, including the central processing unit (CPU), memory, input/output (I/O) devices, and storage devices.
The operating system provides a set of services to applications and users, such as file management, memory management, process management, and device management. It also provides a platform for running other software applications, including system utilities, programming languages, and user applications.
Operating systems are typically designed to be multi-user, multitasking, and multi-processing. This means that they can support multiple users simultaneously, allow users to run multiple applications at the same time, and manage multiple CPU cores for efficient processing.
The Operating System is a system software which brings the system hardware into working condition.
Functions of an Operating System
An operating system has two main purposes: to control the allocation and use of the computing system’s resources among the various users and tasks, and to provide an interface between the computer hardware and the programmer that simplifies and makes it feasible for coding and debugging of application programs.
Some of the main functions of an operating system are:
- Bootstrapping: This is the process of starting up a computer from a powered-off state. The operating system loads itself into memory and initializes various hardware components.
- User interface: This is the part of the operating system that allows users to interact with it using graphical icons, menus, windows, etc. (GUI), or text commands (CLI).
- Process management: This is the part of the operating system that creates, executes, suspends, resumes, terminates, and schedules processes (programs in execution).
- Thread Management: This is the part of the operating system that creates, executes, suspends, resumes, terminates, and schedules threads (subtasks within a process).
- Memory Management: This is the part of the operating system that creates, executes, suspends, resumes, terminates, and schedules threads (subtasks within a process).
- Memory management: This is the part of the operating system that allocates memory space for processes and files, and frees it when no longer needed.
- Filesystem Management: This is the part of the operating system that stores, organizes, and retrieves files on disks or other storage devices.
- Device Management: This is the part of the operating system that controls input/output devices such as keyboards, mice, printers, displays, etc., and communicates with device drivers (software modules that interface with specific hardware devices).
Processes and Threads of an Operating System
One basic concept of an operating system in the process. If we think of the program as the file stored on the hard disk or floppy and the process as that program in memory, we can better understand the difference between a program and a process. Although these two terms are often interchanged or even misused in “casual” conversation, the difference is very important for issues that we talk about later. Often one refers to an instance of that command or program.
A process is a program in execution. It consists of one or more threads, a set of instructions, data, and other resources such as open files, network connections, etc.
For example, when we write a program in C or C++ and compile it, the compiler creates a binary code. The original code and Binary code, both are programs. When we actually run the binary code, it becomes a process. A process is an ‘active’ entity as opposed to a program that is considered to be a ‘passive’ entity. A single program can create many processes when
A process is more than just a program. Especially in a multi-user, multi-tasking operating system such as UNIX, there is much more to consider. Each program has a set of data that it uses to do what it needs. Often, this data is not part of the program. For example, if you are using a text editor, the file you are editing is not part of the program on disk but is part of the process in memory. If someone else were to be using the same editor, both of you would be using the same program. However, each of you would have a different process in memory. See the figure below to see how this looks graphically.
What does a Process looks like in Memory Stack?
Attributes or Characteristics of a Process:
A process has the following Attributes:
- Process ID: An unique identifier assigned by the operating system.
- Process State: The process state can be ready, running, etc.
- CPU Registers: The CPU registers like as Program counters (
- CPU registers must be saved and restored when a process is swapped out and in of CPU)
- Accounts information: Processing accounts information refers to managing user accounts and permissions on the system. This involves creating and deleting user accounts, assigning permissions and privileges, and monitoring user activity on the system.
- I/O status information: For example devices allocated to process, open files, etc.
- CPU scheduling information: For example Priority (Different processes may have different priorities, for example, a short process may be assigned a low priority in the shortest job first scheduling).
All the above attributes of a process are also known as the Context of the process. Every Process has its known Program Control Block(PCB) i.e each process will have a unique PCB. All the Above Attributes are the part of the PCB.
Different States of a Process
A process is having 7-states are described below.
- New: Newly Created Process (or) being created process.
- Ready: After the creation of a process, it moves to Ready state, i.e. the process is ready for execution.
- Run: Currently running process in CPU (only one process at a time can be under execution in a single processor).
- Wait (or Block): When process request for I/O request.
- Complete (or Terminated): Process Completed its execution.
- Suspended Ready: When the ready queue becomes full, some processes are moved to suspend the ready state.
- Suspended Block: When the waiting queue becomes full.
Threads of a Process
Threads of a process refer to the individual execution paths within a single program or process. A process is an executing instance of a program, while threads are the smallest units of execution within that process.
Each thread within a process shares the same memory space and system resources, but has its own stack and registers for storing its execution state. Multiple threads within a process can run concurrently, allowing the program to perform multiple tasks simultaneously.
Threaded programming can be used to improve the performance and responsiveness of applications that perform multiple tasks, as well as to simplify complex programming tasks by breaking them down into smaller, more manageable parts. However, threaded programming also introduces new challenges, such as synchronization and communication between threads, that must be carefully managed to ensure correct program behavior.
How does an Operating System work?
n operating system works by using various components such as:
- Kernel: The shell is a program that runs in user mode (has limited access to hardware) and provides an interface for users and programmers to communicate with the kernel and other programs. The shell can be either graphical or text-based depending on the type of user interface used by an operating system.
- Shell: The shell is a program that runs in user mode (has limited access to hardware) and provides an interface for users and programmers to communicate with the kernel and other programs. The shell can be either graphical or text-based depending on the type of user interface used by an operating system.
- Utilities: Utilities are programs that perform specific tasks such as file manipulation, networking, security, backup etc. Utilities can be either built-in or external depending on whether they are part of an operating system or installed separately by users.
Some examples of Operating Systems?
There are many types and versions of operating systems available for different kinds and models of computers. Some of the most common ones are:
- Microsoft Windows: Windows is a family of proprietary graphical operating systems developed by Microsoft Corporation since 1985. Windows dominates the personal computer market with more than 80% share according to StatCounter Global Stats. Some examples of Windows versions include:
- Windows 10 (2015).
- Windows 8 (2012).
- Windows 7 (2009).
- Windows Vista (2007).
- macOS: macOS is a line of proprietary graphical operating systems developed by Apple Inc since 2001. macOS comes preloaded on all Macintosh computers or Macs. macOS accounts for less than 10% share according to “StatCounter” Global Stats. Some examples of macOS versions include:
- Mojave (2018).
- High Sierra (2017).
- Sierra (2016).
- Linux: Linux is a family of open-source Unix-like operating systems based on the Linux kernel created by Linus Torvalds in 1991. Linux can be modified and distributed by anyone around the world under various licenses such as GNU General Public License.
- Red Hat Enterprise Linux.
- Arch Linux.
- Kali Linux.
- Elementary OS.
- Zorin OS.
Advantages of Operating Systems
Operating systems provide a number of advantages, some of which include:
- Resource Management: One of the primary functions of an operating system is to manage system resources such as memory, CPU time, and I/O devices. This ensures that all processes have fair access to system resources and prevents any one process from monopolizing them.
- User Interface: Operating systems provide user interfaces that allow users to interact with the computer and its software. This includes graphical user interfaces (GUIs) that use windows, menus, and icons, as well as command-line interfaces (CLIs) that use text-based commands.
- File Management: Operating systems provide file management capabilities that allow users to create, delete, and modify files, as well as organize them into directories or folders. This makes it easier to store and manage data and programs.
- Security: Operating systems provide various security features such as access control, authentication, and encryption to protect the system and its data from unauthorized access and attacks.
- Multitasking: Operating systems support multitasking, which allows multiple programs or processes to run concurrently. This enables users to perform multiple tasks simultaneously and improves overall system efficiency.
- Device Drivers: Operating systems provide device drivers that allow hardware devices such as printers, scanners, and sound cards to communicate with the system and its software. This ensures that hardware devices can be easily installed and used with the system.
- Compatibility: Operating systems provide a platform for software developers to create and distribute applications that can run on multiple computer systems. This enables users to choose from a wide range of software options and ensures that software can be easily ported between systems.
Disadvantages of Operating Systems
While operating systems provide many advantages, they also have some disadvantages, including:
- Complexity: Operating systems are complex pieces of software that require specialized knowledge to develop and maintain. This complexity can make it difficult for users to understand and use the system effectively.
- Cost: Operating systems can be expensive to develop and license, which can increase the cost of computer systems for users and limit the availability of certain software and hardware options.
- Compatibility Issues: Different operating systems may not be compatible with each other, which can make it difficult to share files and collaborate between different systems.
- Security Vulnerabilities: Operating systems can be vulnerable to security threats such as viruses, malware, and hacking attempts. This requires ongoing security updates and maintenance to protect the system and its users.
- Resource Intensive: Operating systems require significant system resources such as memory and processing power, which can limit the performance of older or lower-powered computer systems.
- Vendor Lock-in: Some operating systems may tie users to specific software or hardware vendors, limiting their flexibility and choice in the long term.
- Learning Curve: Operating systems can have a steep learning curve, particularly for users who are not familiar with computer systems or technology. This can make it difficult for new users to get started and may require additional training and support.
Future Development and Enhancement of Operating Systems
The future development and enhancement of operating systems is likely to focus on several key areas, including:
- Security: As cyber threats continue to evolve, operating system developers will need to focus on developing more advanced security features to protect against a wide range of attacks, including malware, phishing, and hacking attempts.
- Artificial Intelligence: Operating systems are expected to incorporate more advanced AI and machine learning capabilities to improve system performance, automate repetitive tasks, and enhance user experience.
- Cloud Integration: Operating systems will increasingly be designed to work seamlessly with cloud-based applications and services, allowing users to access their data and applications from anywhere and on any device.
- IoT Support: With the growth of the Internet of Things (IoT), operating systems will need to support an increasing number of connected devices and sensors, enabling users to interact with and control their devices from their computer systems.
- User Experience: Operating systems will continue to focus on improving user experience by providing intuitive interfaces, faster and more efficient performance, and personalized settings and preferences.
- Open Source: Open-source operating systems are likely to continue to gain popularity as more developers contribute to their development and customization, providing users with more options and flexibility.
- Sustainability: Operating systems will need to become more environmentally sustainable by reducing energy consumption and carbon emissions, and by incorporating more eco-friendly features and technologies.