Chapter 3: Computer Software and Operating System
Computer Software Overview
- System Software
- Operating System
- Utility Software
- Device Driver
- Language Translator
- Compiler
- Interpreter
- Assembler
- Application Software
- Package Software
- Tailored Software
Operating System
An operating system (OS) is a collection of software that manages computer hardware resources and provides common services for computer programs. The operating system is a vital component of the system software in a computer system.
An Operating System (OS) is an interface between a computer user and computer hardware and controls the execution of all kinds of programs. An operating system is software that performs all the basic tasks like file management, memory management, process management, handling input and output, and controlling peripheral devices such as disk drives and printers.
Some popular Operating Systems include UNIX, Linux, Mac OS, Windows, etc.
Architecture of Operating System
- OS Kernel: A main part of OS always remains in main memory during the running of a computer, called OS Kernel. It is the main controlling part of the OS which controls all running programs and the hardware resources. It is directly communicate with hardware as well as the upper layers.
- Utility Software: which are used as system management tools, also known as housekeeping work of OS. The main purpose of these tools is to make system up to date and efficient. Examples: Disk cleanup, Scan disk, disk defragmenter, device drivers, antivirus, file recovery, etc.
- Application Software: The software which are made on the request of user or organization in order to fulfil their requirements. Basic application software provided by windows OS are Notepad, WordPad, Paint and simple games.
The function of an operating system is described below:
- IO Management
- Command interpreter
- Data Management
- Memory Management
- Process Management
- Device Management
- File Management
- Security
- Deadlock prevention (IMP)
- Virtual memory management:
- Paging: In paging, primary memory is portioned into fixed size called frame and the job is also portioned into same size is called page. Instead of loading the entire job at once, a few pages are loaded into the page-frame of memory.
- Swapping: In this technique, high-priority process is swapped in the main memory and low-priority process from main memory is swapped out. When the high-priority process is completed, the low-priority process is swapped in again.
Input/output (IO) is an essential element for the operation of any computer. It allows the computer to interact with peripheral devices such as a keyboard, mouse, terminals (like modem, TV card, and NIC card), disks or tapes (CD, DVD, and Floppy disk), printer etc.
The command interpreter reads the commands that a user types at a terminal, interprets them, and translates them into a detailed set of instructions that the computer hardware can understand. It varies from one OS to another. Every OS must provide command interpreter of its operation.
Data management allows organizing their data into logical groupings called files. Earlier, only a few OS provided data management, containing limited flexibility and usefulness. At present, most of the OS provides this feature.
Memory management is the function responsible for managing the computer's primary memory. Memory is a large array of words or bytes, each with its own address. When the user requests the CPU for read/write operation, OS determines the amount of memory required for the program instructions and data. Then, OS allocates required memory to load the program and data into RAM. When a program terminates, its memory space is free and the same memory area can be allocated to another program.
Process management is the process by which operating systems manage processes, threads, enable processes to share information, protect process resources, and allocate system resources to processes that request them in a safe manner. It finds the status of processors and processes (Traffic controller), chooses a job (job scheduler), chooses the process in the job (process scheduler), allocates the processors to the process, and frees the processor when the process is executed.
The device management allocates a device to a process. It finds the status of the device, channels and control units, finds the answer to questions like which process, which device, how much, and allocates the device to the process (IO Scheduling), initiates the IO operation, and finally frees the device when the process is completed.
The file management keeps track of all information on files. It is an opens and closes files. It finds and records the following for all files: location, size, usage (attributes) status, etc. It also finds as to which process wants which files, checks through the protection routine, opens the file if allowed, and allocates it to the process. Finally, it closes the file when the process is executed. Processor management is at a low level which is very near to the machine whereas file management is at a higher level which is very near to the user.
The security feature protects one user from another and the OS as a whole from all users. Its main function is to make sure that only authorized users get access to the computer, and the users only do things they are authorized to do. Larger OS provides some kind of security but the degree varies from one OS to another.
During the processing, a situation can arise in which a resource (hardware or software) shared by two or more processes cannot continue because the resource required by a process is held by another. This situation is known as deadlock.
For example: if process 1 is allocated to resource A and later it requests resources B, and process 2 is allocated to resource B and later it requests resource A. in this situation, neither process 1 nor process 2 will be executed. Such a situation is known as deadlock. Such conditions are avoided by OS.
In a multiprogramming system, there can be many programs located in the memory along with the operating system. If the program is larger than the main memory of the computer, the entire job cannot be loaded at once inside the memory. So, in that case, the operating system uses free space of secondary memory which is termed as virtual memory.
For virtual memory management, following techniques are used:
Types of Operating Systems
Operating Systems can be classified into the following categories:
- Classification of OS based on the Processing Method
- Batch processing OS:
- Multi-programming OS:
- Multitasking OS:
- Pre-emptive multitasking: It allows CPU time slice to each program. Windows 95, Windows NT use preemptive multitasking.
- Non pre-emptive multitasking: Each program can control the CPU for as long as it needs. If a program is not using the CPU, however, it can allow another program to use it temporarily. It is also called cooperative multitasking. Windows 3.x and Multi Finder use non-preemptive multitasking.
- Multiprocessing OS:
- Multithreading OS:
- Online processing OS:
- Network Operating System:
- Real-time OS:
In batch processing environment, it requires grouping of similar jobs which consist of programs, data, and system commands. It is also known as offline processing. This type of processing is suitable for programs with large computation time with no need for user interaction and involvement. Examples are: Payroll, Forecasting, Statistical analysis, etc.
It does not allow interaction between users and program during execution. The time taken between job submission and job completion is very high. It is an older processing concept.
A multi-programming technique is used in the multi-user environment. It is the technique in which multiple users' programs are executed simultaneously by a single processor or CPU. Multi-programming means when two or more programs are provided to the CPU for processing or loaded into the internal storage of CPU at the same instant.
From the loaded programs, once the portion of one program is executed and after the completion of the previous program, the portion of another program is executed, and this process will go on until all the programs don't get executed. Thus, it refers to the concurrent execution of several programs. The main purpose of multi-programming is to increase the utilization of the computer and its resources.
A multitasking OS allows more than one program to run concurrently mainly in a single-user system. Multitasking computers are capable of running several tasks or programs at the same time. For executing several tasks, it can be single or multiprocessing system.
Presently, most of the operating systems like MS Windows, Linux, and Mac OS are multitasking operating systems. There are two types of multitasking OS:
A multiprocessing system has more than one processor linked together in a coordinated way. A multiprocessing OS is one that supports running a program in more than one Central Processing Unit (CPU). Server Systems and Super Servers are specially designed to support multiple processors. MVS and UNIX are the two examples.
It involves two or more processors (CPU) for controlling the different activities or execution of many programs / instructions simultaneously. Multiprocessing concept is known as parallel processing because parallel means solving one big task or many tasks at the same time. It helps to increase the program execution speed of the computer and it is a more costly and complex technique to employ.
A program in execution (process) can be divided into multiple smaller sub-processes. These sub-processes are known as threads. Multithreading OS has the ability to divide the process into threads and execute them concurrently. Threads are individual processes that execute simultaneously in multi-tasking OS.
Threads are individual processes that execute simultaneously in multi-tasking OS. The programmer must carefully design the program in such a way that all threads can execute at the same time without interfering with each other. Each processor can handle different tasks or different threads of execution for a single task and more processors can be added as necessary.
In online processing, transactions are processed as soon as they happen and at the place of origin. It is quite simple compared to real-time processing. In this type of processing OS, a user can interact or provide inputs during processing as well. The output is provided back to the users as soon as the processing is completed. It is the popular processing technique at present.
A Network Operating System runs on a server and provides the server the capability to manage data, users, groups, security, applications, and other networking functions. The primary purpose of the network operating system is to allow shared file and printer access among multiple computers in a network, typically a local area network (LAN), a private network or to other networks.
Examples of network operating systems include Microsoft Windows Server 2003, Microsoft Windows Server 2008, UNIX, Linux, Mac OS X, Novell NetWare, and BSD.
The real-time processing method is one that controls the environment by receiving data, processing them, and taking action or returning results sufficiently and quickly to affect the functioning of the environment at that time.
It is an online processing system in which the processing time is critical. The entire processing task has to be completed in the predefined time. The term real-time refers to the technique of updating files with the transaction data immediately after the event which it relates to, occur.
Real-time OS is suitable for Rocket launching systems, Airlines or flight reservations, Air traffic control systems, etc.
- Classification of OS based on the User Interface
- Graphical User Interface (GUI)
- GUI interface is easy to operate and user-friendly.
- Users don't have to understand the syntax.
- An amusing environment can be created because of a friendly environment.
- Users don't have to remember all the commands.
- It requires larger space and faster processors to operate.
- GUI-based OS are usually 32-bit or 64-bit.
- It supports a multimedia environment.
- It is capable of operating multitasking, multi-programming, and multi-user systems.
- Character User Interface (CUI)
- CUI is less user-friendly than GUI.
- Commands are used to instruct the computer.
- The user needs to remember the commands for operating this system.
- It cannot display graphics, icons, pictures, multimedia, etc.
- CUI-based OS are usually 8- or 16-bits OS.
- It is much faster than GUI-based systems.
- It is single-tasking and single-user OS.
- It does not support a multimedia environment.
- It can be used on low memory and low processing speed computers.
A graphical user interface allows a user to enter commands by pointing and clicking at objects that appear on the screen. It takes advantage of the computer's graphical capabilities to make the program easier to use for the users.
Well designed, GUI can free the user from learning complex command languages. On the other hand, many users find that they work more effectively with a command-driven interface, especially if they already know the command language.
As a Graphical User Interface, it needs a lot of RAM and hard disks for smoother execution.
Features of Graphical User Interface (GUI):
In a character/command-driven system, to communicate with the computer, the user has to instruct the computer in special commands (words). DOS is a very commonly used command-driven user interface. CUI is very difficult to use if the user is a beginner or doesn't know the correct commands.
Command-driven systems can be very unfriendly and confusing for non-computer experts to use. However, it can be used on other older systems with low processing capability and low memory.
Features of Character User Interface (CUI):
- Classification of OS based on the Mode of User
- Single User OS:
- Multi-user OS:
The majority of small microcomputer-based systems have a single-user OS, which allows a single user to operate the machine in an interactive mode but normally only allows one user program to be run in main storage and processed at a time.
A multi-user OS allows two or more users to run programs at the same time. Some permit hundreds or even thousands of concurrent users. Some of the examples are UNIX, LINUX, etc. The multi-user OS shares computer resources among these users, allowing each a small slice of the processor time.
Concept of Open Source Software (OSS)
Open-source software (OSS) is any computer software that's distributed with its source code available for modification. That means it usually includes a license for programmers to change the software in any way they choose: They can fix bugs, improve functions, or adapt the software to suit their own needs.
Some common examples of open-source software are: OpenOffice, VLC media player, Mozilla Firefox, Linux, Android by Google, Apache (web server), etc.
Advantages of OSS:
- Cheaper than commercially marketed products.
- Created by skillful and talented people.
- Highly reliable due to more independent programmers testing and fixing bugs.
- It is more flexible and easier to build custom interface or add new abilities.
- Help achieving greater penetration of the market.
Disadvantages of OSS:
- Can Be Risky.
- It’s not User Friendly.
- Less Personalized/ technical Support.
- You need to pay sometimes.
UNIX:
Unix is a powerful, stable, multi-user, multitasking operating system developed at Bell Labs in 1969 by Ken Thompson and Dennis Ritchie. It can be used in servers, desktops, and laptops or on a variety of platforms. It is available on both CUI and GUI format. It was one of the first operating systems developed in a high-level programming language, which allowed it to be easily ported between different hardware platforms.
Many organizations and companies developed their own system based on Unix implementation. For example, Apple’s Mac OS/X, GNU/Linux, IBM’s AIX, Solaris, IRIX, and FreeBSD.
There are both commercial such as Sun’s Solaris, IBM’s AIX, Mac OS/X, and non-commercial variants such as GNU/Linux, FreeBSD, NetBSD, and OpenBSD.
Components of UNIX:
- The Kernel:
- Utility Programs:
- System Configuration Files:
- The Shell:
The kernel is the core part of the UNIX operating system. It is a program loaded into main memory when the machine is turned on. It controls, allocates, and recognizes all the available hardware resources.
Utility programs include simple utility programs like file management, user management, process management, and complex utilities, like the shell that allows you to issue commands to the operating system.
System configuration files are read by the Kernel and some of the standard utilities. Examples of system configuration files are fstab (tells the kernel where to find all the files) and syslog.conf (tells the kernel how to record the various kinds of events and errors encountered).
The shell acts as an interface between the user and the kernel. It is a command-line interpreter (CLI). It interprets the commands the user types in and arranges for them to be carried out.
Features of UNIX:
- Multi-programming: Supports more than one program in memory at a time. It amounts to multiple user processes on the system at the same time.
- Multitasking: A user can also run multiple programs at the same time; hence Unix is a multitasking environment.
- Multi-user: Several people can use a Unix computer at the same time; hence Unix is called a multi-user system.
- Portability: It was one of the first operating systems developed in a high-level programming language, which allowed it to be easily ported between different hardware platforms. So, developers can develop suitable software for varieties of systems.
- Better system security: Security refers to preventing users from interfering with each other or data, programs. It provides security in several ways such as using username and password for logging in, working according to the permissions i.e. read/write files or stop programs.
- Supports Graphical User Interface (GUI).
- Supports both character user interface (CUI) and Graphical user interface (GUI).
Linux:
Linux is a free, open-source, UNIX-like operating system that has a wide following among developers and end users alike. Linux is similar to Unix in that it is a stable, multi-user, multitasking operating system that can be used as a server or desktop operating system.
Linux is very different from Windows. There is no "one" Linux operating system. Instead, Linux is developed by a number of independent developers and companies, with each contributing their own version of the operating system.
Linux comes in many different "distributions" or versions, but all share the same basic components. Some of the most popular Linux distributions are Ubuntu, Fedora, Debian, CentOS, and Red Hat Enterprise Linux.
Components of Linux:
- The Kernel:
- Shell:
- GUI:
- Utilities:
The Linux kernel is at the core of the Linux operating system. It manages hardware resources, schedules tasks, and handles communication between hardware and software components.
The shell is the command-line interface that allows users to interact with the Linux system by entering commands. There are various shells available, such as Bash (Bourne Again Shell), which is the default for many Linux distributions.
Linux also supports graphical user interfaces (GUIs) like GNOME and KDE, which provide a more user-friendly and visually appealing way to interact with the operating system.
Linux includes a wide range of utilities and software packages for various tasks, such as file management, text editing, and network configuration.
Advantages of Linux:
- Open-source: Linux is free and open-source, which means anyone can view, modify, or distribute its source code.
- Stability: Linux is known for its stability and reliability, making it a popular choice for servers and critical systems.
- Security: Linux has strong security features and is less vulnerable to malware and viruses compared to some other operating systems.
- Customizability: Users can customize Linux to suit their needs and preferences, thanks to its open nature.
- Community support: The Linux community is large and active, providing extensive documentation and support for users.
- Compatibility: Linux supports a wide range of hardware and software, making it versatile for various applications.
Disadvantages of Linux:
- Learning curve: Linux may have a steeper learning curve for users accustomed to other operating systems.
- Software availability: While Linux offers many open-source software options, some proprietary applications may not be available for Linux.
- Hardware drivers: Linux may require additional effort to find and install drivers for certain hardware components.
- Fragmentation: The variety of Linux distributions and desktop environments can lead to fragmentation, making it challenging to choose the right one.
Best Linux distributions
- Ubuntu
- Elementary OS
- Cent OS
- Linux Mint
- Open Source
- Arch Linux
- Fedora
Mobile Operating System (Mobile OS)
A mobile operating system, also called a mobile OS, is an operating system that is specifically designed to run
on mobile devices such as mobile phones, smartphones, PDAs, tablet and other handheld devices. The mobile
operating system is the software platform on top of which other programs, called application programs, can run
on mobile devices.
Some common examples of mobile operating system are: Android, iOS, KaiOS, Windows, Black Berry OS, etc.
Conclusion
Computer software and operating systems play a crucial role in the functionality and usability of modern computers. Understanding the different types of software and operating systems, their features, and their advantages and disadvantages is essential for computer users and professionals alike. Whether you're using a Windows PC, a Mac, a Linux machine, or any other device, having a basic knowledge of computer software and operating systems can help you make informed decisions and troubleshoot common issues.
As technology continues to evolve, the world of computer software and operating systems will also continue to change. New innovations and developments will shape the future of computing, and staying informed and adaptable will be key to navigating this ever-changing landscape.