Computer System Software SS1 (WEEK 3-4)
Computer System Software SS1 (WEEK 3-4)
Lesson Objective
Discussions
Types of Software
The two main types of software are:
(a) System software
(b) Application software
System Software: System software is a program that manages and
supports the computer resources and operations of a computer
system while it executes various tasks such as processing data and
information, controlling hardware components, and allowing users
to use application software. Systems software functions as a bridge
between computer system hardware and the application software.
System software is made up of many control programs, including
the operating system, communications software and database
manager.
Advantages of DOS
(i) Commands are simple to remember and use.
(ii) DOS is a very stable OS.
(iii) DOS is the underlying OS of all Windows products today
discounting the NT line (NT, Win2000, WinXP).
(iv) DOS does not take up that much space on a hard drive, (only
around 8MB for a full installation).
(v) Very portable (look at bootdisks, although the functionality is
not near that of a full OS, it works great for rescuing a crashed hard
drive, Fdisking, formatting hard drives, and running old DOS apps
that will not run with Windows or newer versions of DOS).
(vi) DOS is a contraction for Disk Operating System.
(vii) DOS is the most popular microcomputer operating system for
IBM computers and compatibles ever sold worldwide.
(viii) It runs thousands of applications, and is easy to use.
(ix) DOS is easy for novices to use, and many publications and
books are available for the operating system.
(x) DOS runs on low- priced IBM computers and compatibles.
(xi) DOS does not require an expensive computer system while
others still do.
Disadvantages of DOS
(i) DOS has direct access to only 640 kilobytes of primary storage,
although new microcomputers have much more primary storage.
This restriction is an inherent limitation of DOS. Today’s new
software for word processing, graphics, spreadsheets, and database
management requires more primary storage.
(ii) DOS is a single tasking operating system. It can support only
one user and one program at a time.
(ii) DOS has a character-based interface. A graphical user interface
is easier to the users than the character-based interface.
Advantages of UNIX
(i) UNIX is the portable operating system that can be used with
many different computers from mainframe to microcomputer. The
other operating systems such as DOS, Windows, Mac operating
system, and OS/2 cannot be used for other systems.
(ii) UNIX allows users to run multiple programs simultaneously.
(iii) UNIX also shares it among multiple users.
(iv) UNIX is not restrained by the computer systems such as
conventional memory as the DOS and OS/2 systems are.
(v) Networking is another strong feature of a UNIX operating
system. UNIX can be connected through several different kinds of
equipment.
(vi) It can share files among them.
Disadvantages of UNIX
(i) It can be difficult for novice microcomputer users to understand.
For this reason it had a limited impact to date.
(ii) Some of its features make it difficult for end users.
(iii) Limited application programs are another disadvantage for
UNIX. UNIX off-the-shelf programs for micro-computers are limited.
(iv) An application program written for one version of UNIX may not
run on other versions.
(v) There is also not a standard GUI for many UNIXs.
Advantages of LINUX
(i) Low cost: You do not need to spend time and money to obtain
licenses since Linux and much of it’s software come with the GNU
General Public License.
(ii) Stability: Linux does not need to be rebooted periodically to
maintain performance levels. It does not freeze up or slow down
over time due to memory leaks and such. Continuous up-times of
hundreds of days (up to a year or more) are not uncommon.
(iii) Performance: Linux provides persistent high performance on
workstations and on networks. It can handle unusually large
numbers of users simultaneously, and can make old computers
sufficiently responsive to be useful again.
(iv) Network friendliness: Linux was developed by a group of
programmers over the internet and has therefore strong support for
network functionality; client and server systems can be easily set up
on any computer running Linux. It can perform tasks such as
network backups faster and more reliably than alternative systems.
(v) Flexibility: Linux can be used for high performance server
applications, desktop applications, and embedded systems. It allows
to save disk space by only installing the components needed for a
particular use.
(vi) Compatibility: It runs all common Unix software packages and
can process all common file formats.
(vii) Choice: The large number of Linux distributions gives you a
choice. Each distribution is developed and supported by a different
organization. You can pick the one you like best; the core
functionalities are the same; most software runs on most
distributions.
(viii) Fast and easy installation: Most Linux distributions come with
user-friendly installation and setup programs. Popular Linux
distributions come with tools that make installation of additional
software very user friendly as well.
(ix) Full use of hard disk: Linux continues work well even when the
hard disk is almost full.
(x) Multitasking: Linux is designed to do many things at the same
time; e.g. a large printing job in the background will not slow down
other work.
(xi) Security: Linux is one of the most secure operating systems.
“Walls” and flexible file access permission systems prevent access
by unwanted visitors or viruses. Linux users have option to select
and safely download software, free of charge from online
repositories containing thousands of high quality packages.
Translator
A translator is a computer program that translates a program
written in a given programming language into a functionally
equivalent program into a different language. Depending on the
translator, this may involve changing or simplifying the program
flow, without losing the essence of the program, thereby producing
a functionally equivalent program. Assembler, compiler and
interpreter are examples of translators.
Assembler
An assembler creates object code by translating assembly
instruction mnemonics into operational codes, and by resolving
symbolic names for memory locations and other entities. The use of
symbolic references is a key feature of assemblers, saving tedious
calculations and manual address updates after program
modifications. Most assemblers also include macro facilities for
performing textual substitution e.g. to generate common short
sequences of instructions as inline, instead of called subroutines.
Compiler
A compiler is a computer program (or set of programs) that
transforms source code written in a programming language (the
source language) into another computer language (the target
language, often having a binary form known as object code). The
most common reason for wanting to transform source code is to
create an executable program. A compiler is a special program that
processes statements written in a particular programming language
and turns them into machine language or “code” that a computer’s
processor uses. Typically, a programmer writes language
statements in a language such as Pascal or Computer one line at a
time using an editor. The file that is created contains what are called
the source statements. The programmer then runs the appropriate
language compiler, specifying the name of the file that contains the
source statements.
When executing (running), the compiler first parses (or analyzes) all
of the language statements syntactically one after the other and
then, in one or more successive stages or “passes”, builds the
output code, making sure that statements that refer to other
statements are referred to correctly in the final code. Traditionally,
the output of the compilation has been called object code or
sometimes an object module. The object code is machine instruction
code that the processor can process or “execute” once at a time.
More recently, the Java programming language, a language used in
object-oriented programming, has introduced the possibility of
compiling output (called byte code) that can run on any computer
system platform for which a Java virtual machine or byte code
interpreter is provided to convert the byte code into instructions
that can be executed by the actual hardware processor. Using this
virtual machine, the byte code can optionally be recompiled at the
execution platform by a just-in-time compiler.
Traditionally in some operating systems, an additional step was
required after compilation – that of resolving the relative location of
instructions and data when more than one object module was to be
run at the same time and they cross-referred to each other’s
instruction sequences or data. This process was sometimes called
linkage editing and the output known as a load module.
A compiler works with what are sometimes called 3GL and higher-
level languages. An assembler works on programs written using a
processor’s assembler language.
Interpreter
An interpreter is a computer program that executes, i.e. performs,
instructions written in a programming language. An interpreter
generally uses one of the following strategies for program
execution:
1. execute the source code directly;
2. translate source code into some efficient intermediate
representation and immediately execute this;
3. explicitly execute stored precompiled code made by a compiler
which is part of the interpreter system.
Early versions of the Lisp programming language and Dartmouth
BASIC would be examples of the first type. Perl, Python, ATLAB, and
Ruby are examples of the second, while UCSD Pascal is an example
of the third type. Source programs are compiled ahead of time and
stored as machine independent code, which is then linked at run-
time and executed by an interpreter and/or compiler (for JIT
systems). Some systems, such as Smalltalk, contemporary versions
of BASIC, Java and other may also combine two and three.
Utility Programs
Software utilities or Utility Software is a type of computer system
software also referred to as service program, tool, service routine,
or utility routine. Utility software is system software designed to
help analyze, configure, optimize or maintain a computer. Software
Utilities are specifically designed to help the end-user manage and
tune the computer hardware/software, operating system or
application software and perform as single precise task as opposed
to application software which performs multi-tasking. These
programs offer the various maintenance and performance
evaluation utility tools to configure and optimize the various
processes that influence the performance of your computer. Disk
cleaners, anti-virus software, data compression programs, disk drive
partition utilities, storage, editors, backup and archiving programs
are some of the common examples of utility software.