System Programing
System Programing
Unit-1
System programming
Def: - System programming (or systems programming) is the activity of programming
system software.
System Software have direct control and access to your computer hardware , and
memory locations . They perform I/O operations on various memory locations , and
control the hardware , to make the application software do a task . Operating systems ,
are the main examples for system software .
Examples :
1) Microsoft Windows
2) Linux
3) Unix
4) Mac OSX
5) DOS
6) BIOS Software
7) HD Sector Boot Software
8) Device Driver Software i.e Graphics Driver etc
9) Linker Software
10) Assembler and Compiler Software
i
Application software run under System Software , and are made to do a specific task i.e
( Word Processing etc) , which have indirect access to the hardware (i.e Behind System
Software) .
Examples:
Web browser, word processing software, spreadsheet software, database software,
presentation graphics software.
Anti-virus are system software only. Though they are installed as an application, still they
are used to ensure the proper functioning of the computer.
So it is indeed System software.
ii
Assembler:-
Assembly languages:-
Assembler is a program which takes assembly source code and assembles it into
machine code.
Or
Or
There are two types of assemblers based on how many passes through the source are
needed to produce the executable program. One pass assemblers go through the source
code once and assumes that all symbols will be defined before any instruction that
references them. Two pass assemblers (and multi-pass assemblers) create a table with all
unresolved symbols in the first pass, then use the 2nd pass to resolve these addresses.
The advantage in one pass assemblers is speed - which is not as important as it once was
with advances in computer speed and capabilities.
The advantage of the two-pass assembler is that symbols can be defined anywhere in the
program source. As a result, the program can be defined in a more logical and meaningful
way. This makes two-pass assembler programs easier to read and maintain
iii
Loader:-
A loader is the part of an operating system that is responsible for one of the essential
stages in the process of starting a program, loading programs, that is, starting up
programs by reading the contents of executable files (executables- files containing
program text) into memory, then carrying out other required preparatory tasks, after
which the program code is finally allowed to run and is started when the operating system
passes control to the loaded program code.
Or
An operating system utility that copies programs from a storage device to main memory,
where they can be executed. In addition to copying a program into main memory, the
loader can also replace virtual addresses with physical addresses.
All operating systems that support program loading have loaders, apart from systems
where code executes directly from ROM or in the case of highly specialized computer
systems that only a fixed set of specialised programs.
In many operating systems the loader is permanently resident in memory, although some
operating systems that support virtual memory may allow the loader to be located in a
region of memory that is pageable.
iv
Linker:-
A linker or link editor is a program that takes one or more objects generated by a
compiler and combines them into a single executable program.
Also called link editor and binder, a linker is a program that combines object modules to
form an executable program. Many programming languages allow you to write different
pieces of code, called modules, separately. This simplifies the programming task because
you can break a large program into small, more manageable pieces. Eventually, though,
you need to put all the modules together. This is the job of the linker.
Linking is the process of combining various pieces of code and data together to form a
single executable that can be loaded in memory. Linking can be done at compile time, at
load time (by loaders) and also at run time (by application programs).
v
Macros:-
Def:-A rule or pattern that specifies how a certain input sequence (often a sequence of
characters) should be mapped to an output sequence (also often a sequence of characters)
according to a defined procedure. The mapping process that instantiates a macro into a
specific output sequence is known as macro expansion.
Or
A macro is a simple program that automates a series of Image commands. The easiest
way to create a macro is to record a series of commands using the command recorder. A
macro is saved as a text file and executed by selecting a menu command, by pressing a
key or by clicking on an icon in the Image toolbar.
Or
A symbol, name, or key that represents a list of commands, actions, or keystrokes. Many
programs allow you to create macros so that you can enter a single character or word to
perform a whole series of actions. Suppose, for example, that you are editing a file and
want to indent every third line five spaces. If your word processor supports macros, you
can create one that consists of the following keystrokes:
Insert 5 Spaces
Now you can enter the name of the macro, and the word processor will perform all these
commands at once.
You can also use macros to enter words or phrases that you use frequently. For example,
you could define a macro to contain all the keystrokes necessary to begin a letter -- your
name, address, and a code that inserts the current date. Then, whenever you write a letter,
you just press the macro key to include the letter header.
vi
Compiler:-
Programming language processor that translates a program written in a high-level
language (the 'source program') which humans can understand, into machine language
program (the 'object program') which the computers can understand. A compiled
program, in comparison to an interpreted program generally runs (executes) much faster.
Or
A compiler is a computer program (or set of programs) that transforms source code
written in a computer 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.
Or
The name "compiler" is primarily used for programs that translate source code from a
high-level programming language to a lower level language (e.g., assembly language or
machine code).
A program that translates from a low level language to a higher level one
is a decompiler.
A compiler is likely to perform many or all of the following operations: lexical analysis,
preprocessing, parsing, semantic analysis, code generation, and code optimization.
vii
**Software Tools: - Page No. 249 to 264 (System Programming & Operating System
by “Dhamdhere”)
viii
Software tool:-
It is now recognized that software tools can assist in all activities of all phases of the
software life cycle, including management and quality-assurance activities. Thus a
comprehensive set would address such issues as requirements specification, design,
validation, configuration control, and project management. Such tools would frequently
form part of an integrated software engineering environment.
Or
ix
Text editor
A text editor is a type of program used for editing plain text files.
Text editors are often provided with operating systems or software development
packages, and can be used to change configuration files and programming language
source code.
x
Types of text editors
Some text editors are small and simple, while others offer a broad and complex range of
functionality.
For example, Unix and Unix-like operating systems have the vi editor (or a variant), but
many also include the Emacs editor.
Microsoft Windows systems come with the very simple Notepad, though many people—
especially programmers—prefer to use one of many other Windows text editors with
more features.
Under Apple Macintosh's classic Mac OS there was the native SimpleText, which was
replaced by TextEdit. Some editors, such as WordStar, have dual operating modes
allowing them to be either a text editor or a word processor.
Text editors geared for professional computer users place no limit on the size of the file
being opened. In particular, they start quickly even when editing large files, and are
capable of editing files that are too large to fit the computer's main memory. Simpler text
editors often just read files into an array in RAM. On larger files this is a slow process,
and very large files often do not fit.
The ability to read and write very large files is needed by many professional computer
users. For example, system administrators may need to read long log files. Programmers
may need to change large source code files, or examine unusually large texts, such as an
entire dictionary placed in a single file.
Some text editors include specialized computer languages to customize the editor
(programmable editors). For example, Emacs can be customized by programming in
Lisp. These usually permit the editor to simulate the keystroke combinations and features
of other editors, so that users do not have to learn the native command combinations.
Many text editors for software developers include source code syntax highlighting and
automatic completion to make programs easier to read and write. Programming editors
often permit one to select the name of a subprogram or variable, and then jump to its
definition and back. Often an auxiliary utility like ctags is used to locate the definitions.
xi
Typical features of text editors:-
search string with a replacement string. Different methods are employed, Global(ly)
Search And Replace, Conditional Search and Replace, Unconditional Search and
Replace.
Most text editors provide methods to duplicate and move text within the file, or between
files.
Text formatting
Text editors often provide basic formatting features like line wrap, auto-indentation,
bullet list formatting, comment formatting, and so on.
xii
Interpreter:-
Computer language processor that translates a program line-by-line (statement-by-
statement) and carries out the specified actions in sequence. In contrast, an assembler or
compiler completely translates a program written in a high-level language (the source
program) into a machine-language program (the object program) for later execution.
Whereas a compiled-program executes much faster than an interpreted-program, an
interpreter allows examination and modification of the program while it is running
(executing).
Or
A program that executes instructions written in a high-level language. There are two
ways to run programs written in a high-level language. The most common is to compile
the program; the other method is to pass the program through an interpreter.
Or
In computing, an interpreter is a computer program that reads the source code of another
computer program and executes that program.
Both interpreters and compilers are available for most high-level languages. However,
BASIC and LISP are especially designed to be executed by an interpreter. In addition,
page description languages, such as PostScript, use an interpreter. Every PostScript
printer, for example, has a built-in interpreter that executes PostScript instructions.
xiii
Program generator:-
Or
xiv
Debug monitor:-
A debug monitor is very powerful graphical or console mode tool that monitors all
the activities that are handled by the WinDriver Kernel. You can use the debug
monitor to see how each command that is sent to the kernel is executed.
A debug monitor, simply put, is a tool that helps to find and reduce the number of
bugs and defects in a computer program or any electrical device within or attached
to the computer in order to make it act the way it should. While the driver is being
created and downloaded, the debug monitor helps it work properly. For example,
when an armored car drives up to a bank and the guards have to transfer money
from the truck to the bank, there are special guards that stand watch to make sure
no one tries to rob them thus making the transaction go smoothly. Those guards
could be the debug monitors in the computer industry.
If the debugging monitor locates a bug or defect in any of the equipment, it will first
try to reproduce the problem which will allow a programmer to view each string that
was within the bug or defect range and try to fix it. A programmer is a technician
who has learned the basic format of computers that make them run. These are
strings of technical information that most people using computers will never see. For
example, using a clock. The general public will plug in the clock and use it to tell time
but will not open it up to see how it works. That is saved for the people who fix
clocks. They are the programmers of clocks in the computer industry.
The programmer will delete strings or add new ones and then use the debug monitor
to re-create the driver download to see if he fixed the problem. This can be a tedious
task with all the processes that run in the computer, but the debug monitor helps to
make it a lot easier.
Debug monitor is a piece of software that has been designed specifically for use as a
debugging tool for processors and chips. The debug monitor provides a set of
primitive commands to view and modify memory locations and registers, create and
remove breakpoints, and execute your program. A remote debugger with knowledge
of the command format communicates with the debug monitor and combines these
primitives to fulfill higher-level requests like program download and single-step.
xv