Subject:-System programming & system Administration

System programming
Def: - System programming (or systems programming) is the activity of programming system software. The primary distinguishing characteristic of systems programming when compared to application programming is that application programming aims to produce software which provides services to the user (e.g. word processor), whereas systems programming aims to produce software which provides services to the computer hardware (e.g. disk defragmenter). 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


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. 1) Opera (Web Browser) 2) Microsoft Word (Word Processing) 3) Microsoft Excel (Spreadsheet software) 5) MySQL (Database Software) 6) Microsoft PowerPoint (Presentation Software) 7) iTunes (Music / Sound Software) 8) VLC Media Player (Audio / Video Software ) 9) World of War craft (Game Software) 10) Adobe Photoshop (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.

**Evolution of components systems programming: - Page No. 4 to 7 (System Programming by “Donovan”)


Assembler:Assembly languages:Assembly languages are a family of low-level languages for programming computers, microprocessors, microcontrollers, and other (usually) integrated circuits. They implement a symbolic representation of the numeric machine codes and other constants needed to program a particular CPU architecture. This representation is usually defined by the hardware manufacturer, and is based on abbreviations (called mnemonics) that help the programmer remember individual instructions, registers, etc. An assembly language is thus specific to a certain physical or virtual computer architecture (as opposed to most high-level languages, which are usually portable).

Assembler is a program which takes assembly source code and assembles it into machine code. Or A program to convert assembly language into machine language Or Programming language processor that translates an assembly language program (the source program) to the machine language program (the object program) executable by a computer

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


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.



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. In IBM mainframe environments such as OS/360 this program is known as a linkage editor.

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).


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: Move Cursor to Beginning of Line Move Cursor Down 1 Line Move Cursor Down 1 Line Move Cursor Down 1 Line 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.


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.

A compiler is likely to perform many or all of the following operations: lexical analysis, preprocessing, parsing, semantic analysis, code generation, and code optimization.


**Software Tools: - Page No. 249 to 264 (System Programming & Operating System by “Dhamdhere”) viii

Software tool:A program that is employed in the development, repair, or enhancement of other programs or of hardware. Traditionally a set of software tools addressed only the essential needs during program development: a typical set might consist of a text editor, compiler, link loader, and some form of debug tool. Such a set concentrates solely on the program production phase and is that normally provided by a program development system. 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 Software, such as a computer program, routine, subroutine, program block, or program module, that can be used to develop, test, analyze, or maintain a computer program or its documentation. Note: Examples of software tools are automated software verification routines, compilers, program maintenance routines, bootstraps, program analyzers, and software monitors.


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. An example of a text editor; Vim.


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.


Typical features of text editors:-

Search and replace
search string with a replacement string. Different methods are employed, Global(ly) Search And Replace, Conditional Search and Replace, Unconditional Search and Replace.

Cut, copy, and paste
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.

Undo and redo


Interpreter:Computer language processor that translates a program line-by-line (statement-bystatement) 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.

An interpreter translates high-level instructions into an intermediate form, which it then executes. In contrast, a compiler translates high-level instructions directly into machine language. Compiled programs generally run faster than interpreted programs. The advantage of an interpreter, however, is that it does not need to go through the compilation stage during which machine instructions are generated. This process can be time-consuming if the program is long. The interpreter, on the other hand, can immediately execute high-level programs. For this reason, interpreters are sometimes used during the development of a program, when a programmer wants to add small sections at a time and test them quickly. In addition, interpreters are often used in education because they allow students to program interactively.

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.


Program generator:-

Software program that enables an individual to easily create a program of their own with less effort and programming knowledge. With a program generator a user may only be required to specify the steps or rules required for his or her program and not need to write any code or very little code. Some great examples of a program generator are: Adventure Maker, Alice, Stagecast Creator, and YoYo Games Or A program generator automatically generates a program based on a flow-chart of a series of sequence control processes. The flow-chart is prepared while being displayed on the display area of a display means such as CRT, and when the flow-chart is complete, a program is automatically generated corresponding to the flow-chart.


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.