Download as pdf or txt
Download as pdf or txt
You are on page 1of 34

What is Software? Type of Software?

Definition of Software
What is Software: Computer software, or only software, is a kind of program that
enable a user to perform some specific task or used to operate a computer. It directs
all the peripheral devices on the computer system – what to do and how to perform a
task. PC Software plays the role of mediator between the user and computer hardware.
Without software, a user can’t perform any task on a digital computer.
A computer system can be divided into three components: the hardware, the software,
and the users. Software can be further divide into mainly two parts: Application
software and System Software. Bare use of hardware is not easy, so to make it easy,
software created.
Type of Software
The software has mainly divided into two categories: Application software and System
software.

Application Software

Applications software also called end-user programs or merely an application. It


resides above system software. The end-user uses applications software for a specific
purpose. It programmed for simple as well as complex tasks. It either be installed or
access online. It can be a single program or a group of small programs that referred to
as an application suite.
Application software can be used by the user to complete specific tasks, such as
creating word processors documents, spreadsheets, presentations, graphics,
CAD/CAM, sending the email, etc.
Examples of Application software are following
 Payroll Software
 Student Record Software
 Inventory Management Software
 Income Tax Software
 Railways Reservation Software
 Microsoft Office Suite Software
 Microsoft Word
 Microsoft Excel
 Microsoft Powerpoint

Features of Application Software are following


 It is close to user.
 It is easy to design.
 More interactive.
 Slow in speed.
 Generally written in high level language.
 Easy to understand.
 Easy to manipulate and use.
 Bigger in size and requires large storage space.

System Software

System Software (the type of computer program) provides a platform to run a


computer’s hardware and computer application to utilize system resources and solve
their computation problem. It is written in a low-level language, like assembly language,
so it can easily interact with hardware with the primary level. It controls the working of
peripheral devices. System software act as a scheduler for the execution of the
processes and arrange the sequence according to their priority and I/O devices
requirement and creation of the process. The best-known example of system software
is the operating system (OS). It responsible for manages all the other programs on a
computer.
The operating system creates an interface between user and hardware and also in
application software and hardware. Examples of software are Windows 7, Windows
XP, and Windows 10.

Generally, the user does not interact with the System Software directly. The user
interacts with the GUI created by System Software. Through this, GUI user interacts
with applications installed in the system.

Some examples of system software are Operating System, Compilers, Interpreter, and Assemblers
etc.

Features of System Software are following


 Close to system.
 Fast in speed.
 Difficult to design.
 Difficult to understand.
 Less interactive.
 Smaller in size.
 Difficult to manipulate.
 Generally written in low level language.

Hardware
Hardwar represents the physical and tangible components of the computer i.e. the components that
can be seen and touched.

Examples of Hardware are following.


 Input devices -- keyboard, mouse etc.
 Output devices -- printer, monitor etc.
 Secondary storage devices -- Hard disk, CD, DVD etc.
 Internal components -- CPU, motherboard, RAM etc.

Relationship between Hardware and Software


 Mutually dependent. Both of them must work together to make computer produce a useful
output.
 Software cannot be utilized without supporting hardware.
 Hardware without set of programs to operate upon cannot be utilized and is useless.
 To get a particular job done on the computer, relevant software should be loaded into the
hardware
 Hardware is a onetime expense.
 Software development is very expensive and is a continuing expense.
 Different software can be loaded on hardware to run different jobs.
 Software acts as an interface between the user and the hardware.
 If hardware is the 'heart' of a computer system, then software is its 'soul'. Both are
complimentary to each other.

Definition of Multiprogramming
Operating System
To overcome the problem of under utilization of CPU and main memory, the multi-
programming was introduced. The multi-programming is interleaved execution of
multiple jobs by the same computer.
In multi-programming system, when one program is waiting for I/O transfer; there is
another program ready to utilize the CPU. So it is possible for several jobs to share the
time of the CPU. But it is important to note that multi-programming is not defined to be
the execution of jobs at the same instance of time. Rather it does mean that there are a
number of jobs available to the CPU (placed in main memory) and a portion of one is
executed then a segment of another and so on. A simple process of multi-programming
is shown in figure
As shown in fig, at the particular situation, job’ A’ is not utilizing the CPU time because
it is busy in I/ 0 operations. Hence the CPU becomes busy to execute the job ‘B’.
Another job C is waiting for the CPU for getting its execution time. So in this state the
CPU will never be idle and utilizes maximum of its time.

A program in execution is called a “Process”, “Job” or a “Task”. The concurrent


execution of programs improves the utilization of system resources and enhances the
system throughput as compared to batch and serial processing. In this system, when a
process requests some I/O to allocate; meanwhile the CPU time is assigned to another
ready process. So, here when a process is switched to an I/O operation, the CPU is
not set idle.
Multi-programming is a common approach to resource management. The essential
components of a single-user operating system include a command processor, an input/
output control system, a file system, and a transient area. A multi-
programming operating system builds on this base, subdividing the transient area to
hold several independent programs and adding resource management routines to the
operating system’s basic functions.

Time Sharing Operating System


A time sharing system allows many users to share the computer resources
simultaneously. In other words, time sharing refers to the allocation
of computer resources in time slots to several programs simultaneously. For example
a mainframe computer that has many users logged on to it. Each user uses the
resources of the mainframe -i.e. memory, CPU etc. The users feel that they are
exclusive user of the CPU, even though this is not possible with one CPU i.e. shared
among different users.
The time sharing systems were developed to provide an interactive use of the
computer system. A time shared system uses CPU scheduling and multi-programming
to provide each user with a small portion of a time-shared computer. It allows many
users to share the computer resources simultaneously. As the system switches rapidly
from one user to the other, a short time slot is given to each user for their executions.

The time sharing system provides the direct access to a large number of users where
CPU time is divided among all the users on scheduled basis. The OS allocates a set of
time to each user. When this time is expired, it passes control to the next user on the
system. The time allowed is extremely small and the users are given the impression
that they each have their own CPU and they are the sole owner of the CPU. This short
period of time during that a user gets attention of the CPU; is known as a time slice or
a quantum. The concept of time sharing system is shown in figure.

In above figure the user 5 is active but user 1, user 2, user 3, and user 4 are in waiting
state whereas user 6 is in ready status.

As soon as the time slice of user 5 is completed, the control moves on to the next
ready user i.e. user 6. In this state user 2, user 3, user 4, and user 5 are in waiting
state and user 1 is in ready state. The process continues in the same way and so on.
The time-shared systems are more complex than the multi-programming systems. In
time-shared systems multiple processes are managed simultaneously which requires
an adequate management of main memory so that the processes can be swapped in
or swapped out within a short time.

Definition Multiprocessor Operating


System
Multiprocessor Operating System refers to the use of two or more central processing
units (CPU) within a single computer system. These multiple CPUs are in a close
communication sharing the computer bus, memory and other peripheral devices.
These systems are referred as tightly coupled systems.
These types of systems are used when very high speed is required to process a large
volume of data. These systems are generally used in environment like satellite control,
weather forecasting etc. The basic organization of multiprocessing system is shown in
fig.

Multiprocessing system is based on the symmetric multiprocessing model, in which


each processor runs an identical copy of operating system and these copies
communicate with each other. In this system processor is assigned a specific task. A
master processor controls the system. This scheme defines a master-slave
relationship. These systems can save money in compare to single processor systems
because the processors can share peripherals, power supplies and other devices. The
main advantage of multiprocessor system is to get more work done in a shorter period
of time. Moreover, multiprocessor systems prove more reliable in the situations of
failure of one processor. In this situation, the system with multiprocessor will not halt
the system; it will only slow it down.

In order to employ multiprocessing operating system effectively, the computer system


must have the followings:
1. Motherboard Support: A motherboard capable of handling multiple processors.
This means additional sockets or slots for the extra chips and a chip-set capable of
handling the multiprocessing arrangement.
2. Processor Support: processors those are capable of being used in a
multiprocessing system.
The whole task of multiprocessing is managed by the operating system, which
allocates different tasks to be performed by the various processors in the system.
Applications designed for the use in multiprocessing are said to be threaded, which
means that they are broken into smaller routines that can be run independently. This
allows the operating system to let these threads run on more than one processor
simultaneously, which is multiprocessing that results in improved performance.

Multiprocessor system supports the processes to run in parallel. Parallel processing is


the ability of the CPU to simultaneously process incoming jobs. This becomes most
important in computer system, as the CPU divides and conquers the jobs. Generally
the parallel processing is used in the fields like artificial intelligence and expert system,
image processing, weather forecasting etc.
In a multiprocessor system, the dynamically sharing of resources among the various
processors may cause therefore, a potential bottleneck. There are three main sources
of contention that can be found in a multiprocessor operating system:

Locking system: In order to provide safe access to the resources shared among
multiple processors, they need to be protected by locking scheme. The purpose of a
locking is to serialize accesses to the protected resource by multiple processors.
Undisciplined use of locking can severely degrade the performance of system. This
form of contention can be reduced by using locking scheme, avoiding long critical
sections, replacing locks with lock-free algorithms, or, whenever possible, avoiding
sharing altogether.
Shared data: The continuous accesses to the shared data items by multiple
processors (with one or more of them with data write) are serialized by the cache
coherence protocol. Even in a moderate-scale system, serialization delays can have
significant impact on the system performance. In addition, bursts of cache coherence
traffic saturate the memory bus or the interconnection network, which also slows down
the entire system. This form of contention can be eliminated by either avoiding sharing
or, when this is not possible, by using replication techniques to reduce the rate of write
accesses to the shared data.

False sharing: This form of contention arises when unrelated data items used by
different processors are located next to each other in the memory and, therefore, share
a single cache line: The effect of false sharing is the same as that of regular sharing
bouncing of the cache line among several processors. Fortunately, once it is identified,
false sharing can be easily eliminated by setting the memory layout of non-shared
data.
Apart from eliminating bottlenecks in the system, a multiprocessor operating system
developer should provide support for efficiently running user applications on the
multiprocessor. Some of the aspects of such support include mechanisms for task
placement and migration across processors, physical memory placement insuring most
of the memory pages used by an application is located in the local memory, and
scalable multiprocessor synchronization primitives.

Definition of Multitasking Operating


System
In earlier days, Computers was programmed to solve the problem. More prior
day’s computer could perform only one job at a time. This computation resulted
least CPU utilization. Most of time CPU was idle. To use CPU more
efficiently, computer crossed many stages of evaluation.
In 1950 first operating system known as the batch operating system was introduced.
Batch Operating System could execute a group of jobs in the form of a single deck of
punched card.
Batch processing system was inefficient because of most of the time of processes was
wasted in waiting of I/O resources. Hence CPU utilization degraded. To accelerate the
CPU utilization in 1960 new operating system introduced by the designer.This OS was
a turning point towards the growth of computer. Multi-programming Operating system
introduced a new concept for CPU utilization.
Multi-programming OS runs the multiple programs. But in reality, CPU can execute a
single application at a given time. If a system has two or more processes.One process
was waiting for I/O operation to complete, the second job could use the idle CPU for
execution. It increased the CPU utilization.
Multitasking term used in a modern computer system. Multitasking is a logical
extension of multiprogramming system that supports multiple programs to run
concurrently. In multitasking more than one task are executed at the same time. In this
technique the multiple tasks, also known as processes, share common processing
resources such as a CPU. In the case of a computer with single CPU, only one job can
be processed at a time. Multitasking solves the problem by scheduling and deciding
which task should be the running task and when a waiting task should get turn. This
attempt is done with the help of interrupt (a signal) which is attended by CPU by
keeping the current activity aside, saves its present status in buffer and returns to
another important job whatever task it was doing earlier. The act of re-assigning a CPU
from one task to another one is known as context switch.
The multitasking systems were developed to provide interactive use of a computer
system. This system uses the CPU scheduling and multi-programming to provide each
user with a small portion of a time-shared computer. Thus multitasking makes the best
possible use of available hardware at any given instance of time and improves the
overall efficiency of computer system. A multi-tasking operating system is
characterized by its capability to support the concurrent execution of more than one
task. This is achieved by simultaneous management of several processes in the
main memory at the same time and by availing I/O resources among-est the active
tasks. The multi-tasking OS monitors the state of all the tasks and of the system
resources.
Multitasking provides the fundamental mechanism for an application to control and
react to multiple, discrete real-world events and is therefore essential for many real-
time applications. A multitasking environment allows applications to be constructed as
a set of independent tasks, each with a separate thread of execution and its own set of
system resources. The inter-task communication facilities allow these tasks to
synchronize and coordinate their activity. Multitasking creates the appearance of many
threads of execution running concurrently when, in fact, the kernel interleaves their
execution on the basis of a scheduling algorithm. This also leads to efficient utilization
of the CPU time and is essential for many embedded applications where processors
are limited in computing speed due to cost, power, silicon area and other constraints.
In a multi-tasking operating system, it is assumed that the various tasks are to
cooperate to serve the requirements of the overall system Co-operation will require that
the tasks communicate with each other and share common data in an orderly and
disciplined manner, without creating the contention and deadlocks.
Difference between Multitasking and Multi-programming Operating System

Multitasking OS Multi-programming OS

• The program divided into the fixed size of • The whole program loaded into
pages. memory.

• Context switching takes place after a fixed • Not fixed time of interval
interval of time. consider.

• The concept used in modern computing. • The concept used in an old


computer system.

Process
A process is basically a program in execution. The execution of a process must progress in a sequential
fashion.

A process is defined as an entity which represents the basic unit of work to be implemented in the
system.

To put it in simple terms, we write our computer programs in a text file and when we execute this
program, it becomes a process which performs all the tasks mentioned in the program.
When a program is loaded into the memory and it becomes a process, it can be divided into four
sections ─ stack, heap, text and data. The following image shows a simplified layout of a process inside
main memory −
S.N. Component & Description

1
Stack
The process Stack contains the temporary data such as method/function
parameters, return address and local variables.

2
Heap
This is dynamically allocated memory to a process during its run time.

3
Text
This includes the current activity represented by the value of Program Counter and
the contents of the processor's registers.

4
Data
This section contains the global and static variables.
Program
A program is a piece of code which may be a single line or millions of lines. A computer program is
usually written by a computer programmer in a programming language. For example, here is a simple
program written in C programming language −
#include <stdio.h>

int main() {
printf("Hello, World! \n");
return 0;
}

A computer program is a collection of instructions that performs a specific task when executed by a
computer. When we compare a program with a process, we can conclude that a process is a dynamic
instance of a computer program.
A part of a computer program that performs a well-defined task is known as an algorithm. A collection of
computer programs, libraries and related data are referred to as a software.

Process Life Cycle


When a process executes, it passes through different states. These stages may differ in different
operating systems, and the names of these states are also not standardized.
In general, a process can have one of the following five states at a time.

S.N. State & Description

1
Start
This is the initial state when a process is first started/created.

2
Ready
The process is waiting to be assigned to a processor. Ready processes are waiting
to have the processor allocated to them by the operating system so that they can
run. Process may come into this state after Start state or while running it by but
interrupted by the scheduler to assign CPU to some other process.

3
Running
Once the process has been assigned to a processor by the OS scheduler, the
process state is set to running and the processor executes its instructions.

4
Waiting
Process moves into the waiting state if it needs to wait for a resource, such as
waiting for user input, or waiting for a file to become available.
5
Terminated or Exit
Once the process finishes its execution, or it is terminated by the operating system,
it is moved to the terminated state where it waits to be removed from main memory.

Process Control Block (PCB)


A Process Control Block is a data structure maintained by the Operating System for every process. The
PCB is identified by an integer process ID (PID). A PCB keeps all the information needed to keep track
of a process as listed below in the table −

S.N. Information & Description

1
Process State
The current state of the process i.e., whether it is ready, running, waiting, or
whatever.

2
Process privileges
This is required to allow/disallow access to system resources.

3
Process ID
Unique identification for each of the process in the operating system.

4
Pointer
A pointer to parent process.

5
Program Counter
Program Counter is a pointer to the address of the next instruction to be executed
for this process.

6
CPU registers
Various CPU registers where process need to be stored for execution for running
state.

7
CPU Scheduling Information
Process priority and other scheduling information which is required to schedule the
process.

8
Memory management information
This includes the information of page table, memory limits, Segment table
depending on memory used by the operating system.

9
Accounting information
This includes the amount of CPU used for process execution, time limits, execution
ID etc.

10
IO status information
This includes a list of I/O devices allocated to the process.

The architecture of a PCB is completely dependent on Operating System and may contain different
information in different operating systems. Here is a simplified diagram of a PCB −
The PCB is maintained for a process throughout its lifetime, and is deleted once the process terminates.

You might also like