Custom Search

Popular Posts

Monday, February 24, 2014


The word software collectively refers to various kinds of programs used to operate computers and related devices. A program is a sequence of instructions that a computer can interpret and execute. Programs can be built into the hardware itself, or they may exist independently in a form known as software. Hardware describes the physical components of computers and related devices.  

Software may be distributed on floppy disks, CD-ROMs, and on the Internet. It is usually stored on an external long-term memory device, such as a hard drive or magnetic diskette. When the program is in use, the computer reads it from the storage device and temporarily places the instructions in random access memory

(RAM). The process of fetching and then performing the instructions is called “running”, or “executing”, a program. Software programs and procedures that are permanently stored in a computer’s read-only memory (ROM) are called firmware. 

The two main types of software are System Software and Application Software. Application software consists of programs that are aimed to help users in solving particular computing problems. Microsoft Internet Explorer for web browsing, Adobe Photoshop for developing computer graphics, Yahoo Messenger for instant messaging all lies in the application software category. The other class of software is the system software, which encompasses the programs that heavily interact with computer resources and provide services to other programs. Popular examples in this are Operating Systems (OS), hardware drivers, compiler etc. 


System software co-ordinates the various parts of computer system and mediates between the application software and computer hardware. Operating system is system software, which manages and controls the computers activities. The other system software consists of computer language translation programs that convert programming languages into machine language and utility programs that perform common processing tasks. 

Operating Systems

An operating system is a set of computer programs that controls the computer
hardware and acts as an interface with the application programs. The operating system plays a central role in the functioning of a computer system. It is usually stored on disk, after the computer system is started or booted up portions of operating system are transferred to memory as required. The kernel as the name suggests is the heart of the operating system and controls the most critical processes. Windows by Microsoft, Linux, UNIX, and the Macintosh are the commonly used operating systems.

In some specialized or embedded computers the operating instructions are contained in their circuitry; common examples are the microcomputers found in calculators, automobile engines, mobile phones and microwave ovens. 

Functions of Operating System

An operating system performs allocation and assignment of system resources, schedules the use of computer resources, monitors the computer system activities etc. The various activities performed by a typical operating system are:

Performing common computer hardware functions.
Providing a user interface
Providing a degree of hardware independence
Managing system memory
Managing processing tasks
Providing networking capability
Controlling access to system resources
Managing files

Common Hardware Functions

All application programs must perform certain tasks. For example

Getting input from the keyboard or some other input devices
Retrieving data from disks
Storing data on disks
Displaying information on a monitor or printer 

Each of these basic functions requires a more detailed set of instructions to complete. The operating system converts a simple, basic instruction into the set of detailed instructions required by the hardware. In effect, the operating system acts as intermediary between the application program and the hardware. The typical OS performs hundreds of such functions, each of which is translated into one or more instructions for the hardware. The OS notifies the user if input/output devices need attention, if an error has occurred, or if anything abnormal has happened in the system. 

User Interface

One of the most important functions of any operating system is providing a user interface. A user interface allows individuals to access and command the computer system. The first user interfaces for mainframe and personal computer systems were command based. A command-based user interface requires that text commands be given to the computer to perform basic activities. For example, the command ERASE 00TAXRTN would cause the computer to erase or delete a file called 00TAXRTN. RENAME and COPY are other examples of commands used to rename files and copy files from one location to another. Many mainframe computers use a command based user interface. In some cases, a specific Job Control Language (JCL) is used to control how jobs or tasks are to be run on the computer system. 

A Graphical User Interface (GUI) uses pictures (called icons) and menus displayed on screen to send commands to the computer system. Many people find that GUIs are easier to use because user intuitively grasp the functions. Today, the most widely used graphical user interface is Windows by Microsoft. Alan Kay and others at Xerox PARC (Palo Alto Research Center, located in California) were pioneers in investigating the use of overlapping windows and icons as an interface. As the name suggests, Windows is based on the use of a window, or a portion of the display screen dedicated to a specific application. The screen can display several windows at once. The use of GUIs has contributed greatly to the increased use of computers because users no longer need to know command-line syntax to accomplish tasks. 

Hardware Independence

The applications make use of the operating system by making requests for services through a defined Application Program Interface (API). Programmers can use APIs to create application software without having to understand the inner workings of the operating system.

Suppose a computer manufacturer designs new hardware that can operate much faster than before. If the same operating system for which an application was developed can run on the new hardware, minimal (or no) changes are needed to the application to enable it to run on the new hardware. If APIs did not exist, the application software developers might have to completely rewrite the application program to take advantage of the new, faster hardware. 

Memory Management

The purpose of memory management is to control how memory is accessed and to maximize available memory and storage. The memory management feature of many operating systems allows the computer to execute program instructions effectively and with speed. 

Memory controller allows the computer system to efficiently and effectively store and retrieve data and instructions and to supply them to the CPU. Memory management programs convert a user’s request for data or instructions (called a logical view of the data) to a physical location where the data or instructions are stored. A computer understands only the physical view of data –that is, the specific location of the data in storage or memory and the techniques needed to access it. Memory controller converts a logical address to a physical address. 

Memory management is important because memory can be divided into different segments or areas. Some computer chips provide “rings” of protection. An operating system can use one or more of these rings to make sure the application programs do not penetrate an area of memory and disrupt the functioning of the operating system, which could cause the computer system to crash. Memory management features of  today’s operating system are needed to make sure that application programs can get the most from available memory without interfering with other important functions of the operating system or with other application programs. 

Most operating systems support virtual memory, which allocates space on the hard disk to supplement the immediate, functional memory capacity of RAM. Virtual Memory works by swapping programs or parts of programs between memory and one or more disk drives using a concept call paging. This reduces CPU idle time and increases the number of jobs that can run in a given time span. 

Processing Task

Managing all processing activities is accomplished by the task management features of operating systems. Task management allocates computer resources to make the best use of system assets. Task management software may permit one user to run several programs or tasks at the same time (multitasking) and allow several users to use the same computer at the same time (time-sharing). 

An operating system with multitasking capabilities allows a user to run more than one application at the same time. Without exiting a program, user may start another application and switch to newly started application, and then jump back to the first program, picking up where it was left off. Better still, while user is working in the foreground on one program, one or more other applications can be churning away, unseen, in the background, sorting a database, printing a document, or performing other lengthy operations. In the absence of starting background processes, a foreground process would monopolize the computer and if the process happens to be non-interactive such as a file print, then the user will just have to sit and stare at the screen till the process completed. Multitasking can save users a considerable amount of time and effort. 

Time-sharing allows more than one person to use a computer system at the same time. For example, 15 customer service representatives may be entering sales data into a computer system for a mail-order company at the same time. In another case, thousands of people may be simultaneously using an on-line computer service to get stock quotes and valuable business news. 

Time-sharing works by dividing time into small CPU processing time slices, which can be a few milliseconds or less in duration. During a time slice, some tasks for the first user are done. The computer then goes from that user to the next. During the next time slice, some tasks for the next user are completed. This process continues through each user and cycles back to the first user. Because the CPU processing time slices are small, it appears that all jobs or tasks for all users are being completed at the same time. In reality, each user is sharing the time of the computer with other users. 

The ability of a computer to handle an increasing number of concurrent users smoothly is called scalability. This is a critical feature for systems expected to handle a large numbers of users such as a mainframe computer or a Web server. Because personal computer operating systems usually are orientated toward single users, the management of multiple-user tasks often is not needed. 

Networking Capability

The operating system can provide features and capabilities that aid users in connecting to a computer network. For example, Apple computer users have built-in network access through AppleShare feature, and the Microsoft Windows operating systems come with the capability to link users to the Internet. 

Access to System Resources Networking Technologies

Computers often handle sensitive data that can be accessed over networks. The operating system needs to provide a high level of security against unauthorized access to the users’ data and programs. Typically, the operating system establishes a log-on procedure that requires users to enter an identification code and a matching password. If the identification code is invalid or if password does not go with identification code, the user cannot gain access to the computer. The operating system also requires that user passwords be changed frequently. If a user is successful in logging onto the system, the operating system records the details of the user and system usage. In some organizations, these records are also used to bill users for system and resource usage. The operating system also reports any attempted breaches of security. 

File Management

An operating system performs file management functions to ensure that the files are available to CPU when needed and that they are protected from access by unauthorized users. Many computers support multiple users who store files on centrally located disks. The operating system must be able to resolve what to do if more than once user requests access to the same file at the same time. Even on stand-alone personal computers with only one user, file management is needed to keep track of where files are located, what size they are, when they were created, and who created them. 

Language Translators

The CPU (also called processor) of a computer understands commands in machine language, where each instruction is a series of binary digits. Programming in machine language is not easy, as programmers have to remember the machine codes, which are in binary format. To help programmers, other high level programming languages have been developed whose instructions are easy to remember for programmers as these languages use English words. C, Java, SQL are examples of high level programming languages. Programming languages can be divided into assembly languages and high-level programming languages. 

For any program to be executed, it has to be first converted into its equivalent machine language program and then loaded into the memory of computer. To perform the translations of programs, language translators are used. As the process of programming language translations are machine dependent, the translators fall in the system software category. 

Assemblers: The computer software that translates the assembly language programs into corresponding machine language programs are known as assemblers. Assembly language uses mnemonics instead of binary codes used in machine language. For example ADD R1 R2 is an assembly language instruction for adding the contents of register R1 with the contents of register R2 and store the result in R1. The use of mnemonics helps programmers to remember programming codes. But still to write big programs like a word processing software can be very cumbersome in assembly language. 

Compiler and Interpreter: Compiler and interpreter are used to translate a high level programming language program into a machine language program. As the translation process is very cumbersome, some compilers first translate the source code (the program in high-level language) into the equivalent assembly language program and then use the assemblers for the next step. To define, a compiler is a program that translates a source text written in a language A into a target program in language B, whereas, interpreter is a program which directly executes the program in a given programming language A.

Figure-1 : Working of Interpreter
Difference between Compiler and Interpreter

An interpreter is a language translator that reads the source code line-by-line and executes them one by one. On the other hand, a compiler first reads the complete source code and then generates its object code (the equivalent machine language program).

Interpreter has the advantage that the process of translation takes less time as compared to the compiler, but the program generated is less efficient as compared to the compiler in terms of the time is to takes to execute the program.

Compilers are generally used when the efficiency of the generated binary (machine language) program is desired. Interpreters are mostly used for educational purposes, where the programmer makes frequent translations of the program as the changes to the program are frequent. Also, as the interpreter generates the binary program on the fly, platform independence can be achieved. Platform independence means the capability of the program to be translated on any platform and executed on any platform. By platform we mean the hardware and the operating system running on that system. For example, interpreted languages such as HTML, Perl, and Lisp are platform independent. Java, which is a half-compiled half-interpreted language, has benefits of both. As Java programs are compiled to byte-code, instead of binary code, it can be ported to any platform which has the Java Virtual Machine software, which interprets the byte-code. By compiling the program to byte code certain level of optimization that are possible in compilers are achieved.

Figure-2 : Working of Complier
Advantages and Disadvantages of Interpreter over Compiler  


As compared to compiler no synthesis phase is required in interpreter: Neither
there is a need to learn target language B nor the target code is to be generated. Thus interpreters don’t have synthesis phase.
Direct Execution: There is no intermediate compilation phase so the code is directly executed.


Efficiency Loss: As the code is executed on the fly, the efficiency of the program is low. In compilers, there is a separate phase for optimization of the program code.
Interpreter must be available on target machine: The compiled code can be executed on any similar machine. The code needs not to be compiled every time. For languages, which are interpreter based, the interpreter must be available on each machine where the code is to be executed. 

Utility Programs

A utility program is designed for general support to the processes of a computer. They are usually for routine, repetitive tasks and many users share them. Examples of utility programs include diagnostic programs, trace programs, input routines, and programs used to perform routine tasks, i.e., perform everyday tasks, such as copying data from one storage location to another. Utility programs are also available commercially; for example, Norton Utilities package is a set of utility programs for checking disks for computer viruses, checking hard drive for bad locations and removing them and for performing disk compression. 


Application software is a complete, self-contained program that performs a specific function directly for the user. This is in contrast to system software, which exists to support application programs. Application software may consist of a single program, such as an image viewer; a small collection of programs (often called a software package) that work together to accomplish a task, such as a spreadsheet or text processing system; a larger collection (often called a software suite) of related but independent programs and packages that have a common user interface or shared data format, such as Microsoft Office, which consists of closely integrated word processor, spreadsheet, database manager, etc.; or a software system, such as a database management system, which is a collection of fundamental programs that may provide some service to a variety of other independent applications. Some of the example application software according to their types are given below in the table. 

Table-1 : Examples of Application Software for Managers

Word Processing
Microsoft Word,
Corel Word Perfect
Microsoft Excel,
Lotus 1-2-3
Adobe Illustrator,
Macromedia FreeHand
Desk Top Publishing
Quark Express,
Adobe Page Maker,
Corel Ventura Publisher


Anonymous,  October 12, 2015 at 3:13 AM  

Very nice post. I just stumbled upon your weblog and wished to say that I've really enjoyed browsing your blog posts.
In any case I'll be subscribing to your feed and I hope you write again soon!

Take a look at my web site :: girl games ()

Blog Widget by LinkWithin