Professional Documents
Culture Documents
TYPES OF SOFTWARE
1.1.1 APPLICATION SOFTWARE
Application Software Is a computer software package that performs a specific function
directly for an end user. In simple terms is a program designed for end users
TYPES
MS Word, WordPad and Notepad (Word Processor)
Internet browsers like Firefox, Safari, and Chrome (Internet/Web Browsers)
Auto CAD
MySQL, Oracle, MS Access (Database Application)
Real Player, Media Player (Movie Player)
Dictionaries: Encarta, Britannica Mathematical: MATLAB Others
Microsoft Excel (Spread Sheet)
Adobe PageMaker (Desktop Publishing)
Need For Speed (Games)
Adobe Photoshop (Photo Editor)
PowerPoint (Presentation)
Corel Draw (Graphics)
Outlook, Thunderbird (Email)
Itunes, WinAmp (Audio/Music App)
AVG, McAfee, Norton (Antivirus)
TYPES
SYSTEMS SOFTWARE CAN BE CATEGORIZED UNDER THE FOLLOWING:
Operating system: Harnesses communication between hardware, system programs, and
other applications.
Device driver: Enables device communication with the OS and other programs.
Firmware: Enables device control and identification.
Translator: Translates high-level languages to low-level machine codes.
Utility: Ensures optimum functionality of devices and applications.
1.3 PROGRAMMING
The process of developing and implementing various sets of instructions to enable
a computer to do a certain task. The process of designing and building an executable
computer program to accomplish a specific result. Programming is the process of
creating a set of instructions that tell a computer how to perform a
task. Programming can be done using a variety of computer "languages," such as SQL,
Java, Python, and C++. Programming Is the activity of coding, using a programming
language to get a computer to behave how you want it to. Every line of code tells
the computer to do something. Each line of code is called script and it’s
designed to carry out a job.
1.3.1 SYSTEM PROGRAMMING AND APPLICATION PROGRAMMING
System programming is the activity of programming operating system software. While
application programming is the activity of programming application software that is used
directly by the user. Systems programming aims to develop software and software
platforms which provide services to other software. While Application programming is
used to build application software meant for end user. application programming aims to
produce software which provides services to the user directly
Syntax errors
Typechecking errors
Compiler crashes (Rarely)
SUMMARY
It is very difficult to guess or know the time required by any job to complete. Processors
of the batch systems know how long the job would be when it is in queue
Multiple users can share the batch systems
The idle time for batch system is very less
It is easy to manage large work repeatedly in batch systems
SUMMARY
The computer operators should be well known with batch systems
Batch systems are hard to debug
It is sometime costly
The other jobs will have to wait for an unknown time if any job fails
Examples of Batch based Operating System: Payroll System, Bank Statements etc.
SUMMARY
High CPU efficiency
DISADVANTAGES OF TIME-SHARING OS
Reliability problem
One must have to take care of security and integrity of user programs and data
Data communication problem
SUMMARY
Complex operating system is required
EXAMPLES
Examples of Time-Sharing OSs are: Multics, Unix etc.
SUMMARY
Shorter response time and higher throughput
DISADVANTAGES
Difficult to implement
SUMMARY
New technology is easily integrated into the system
Examples of Network Operating System are: Microsoft Windows Server 2003, Microsoft
Windows Server 2008, UNIX, Linux, Mac OS X, Novell NetWare, and BSD etc.
ADVANTAGES OF RTOS
Maximum Consumption: Maximum utilization of devices and system,thus more output
from all the resources
Task Shifting: Time assigned for shifting tasks in these systems are very less. For
example in older systems it takes about 10 micro seconds in shifting one task to another
and in latest systems it takes 3 micro seconds.
Focus on Application: Focus on running applications and less importance to applications
which are in queue.
Real time operating system in embedded system: Since size of programs are small,
RTOS can also be used in embedded systems like in transport and others.
Error Free: These types of systems are error free.
Memory Allocation: Memory allocation is best managed in these type of systems.
SUMMARY
Real time operating system is valued for how quickly or predictably it responds
DISADVANTAGES OF RTOS
Limited Tasks: Very few tasks run at the same time and their concentration is very less
on few applications to avoid errors.
Use heavy system resources: Sometimes the system resources are not so good and they
are expensive as well.
Complex Algorithms: The algorithms are very complex and difficult for the designer to
write on.
Device driver and interrupt signals: It needs specific device drivers and interrupt
signals to response earliest to interrupts.
Thread Priority: It is not good to set thread priority as these systems are very less prone
to switching tasks.
SUMMARY
The amount of work it can perform in a given period of time is lower.
EXAMPLES
Examples of Real-Time Operating Systems are: Scientific experiments, medical imaging
systems, industrial control systems, weapon systems, robots, air traffic control systems, etc
ADVANTAGES OF MULTIPROGRAMMING
High and efficient CPU utilization.
User feels that many programs are allotted CPU almost simultaneously.
SUMMARY
High CPU utilization
better performance-shorter response time & higher throughput 2. Better Reliability-if
one processor brekdown then other takes its workload
increases CPU utilization. ii) It decreases total read time needed to execute a job.
DISADVANTAGES OF MULTIPROGRAMMING
CPU scheduling is required.
To accommodate many jobs in memory, memory management is required.
SUMMARY
CPU scheduling and Memory management is required
ADVANTAGES
Allows operating system to handle large, complex procedures or operation quickly
DISADVANTAGES
Work speed is affected if one constituent processor fails
2.2.8 MULTITASKING
Multitasking is when multiple jobs are executed by the CPU simultaneously by switching
between them. Switches occur so frequently that the users may interact with each program
while it is running. An OS does the following activities related to multitasking –
Every computer file is stored in a linear space on a storage device of finite capacity and each
file has its address on storage. A file system keeps tracks of unused space on disk as well as
additional information about each file such as name, size, date, encryption etc.
2.3.4 SECONDARY STORAGE MANAGEMENT
Operating system controls all storage operations, how data or files will be stored into the
computers and how files will be accessed by the user. It also allows reading, writing of data,
file or directories where content can be copied from one place to another.
2.3.7 NETWORKING
Operating system are capable of using TCP/IP networking protocols, this feature allows
networking of computers where one system to appear on the network of another system,
there by sharing the resources of one another such as files, printers, scanners, etc.
2.4.2 HYBRID
Hybrid are modified micro kernels, except that they include additional code in kernel space
to increase performance, in order words hybrid approach is derived from best of micro and
monolithic kernel architecture, instead of loading the entire code(core module) on memory
at once , it dynamically load core module on memory on demand.
A system call is a mechanism that is used by application programs to request service of the
operating system’s kernel, they use machine-code instructions which cause the processor to
change mode (supervisor/protected mode), this mode is where operating system performs
actions like accessing hardware devices or memory management unit.
Mouse
Keyboard
Soundcard
Display card
Network card
Printer
If a device is newer than the operating system, the user may have to download drivers from
manufacturer websites or alternative sources.
2.7.2 FIRMWARE
Firmware is the operational software embedded within a flash, ROM, or EPROM memory chip
for the OS to identify it. It directly manages and controls all activities of any single hardware.
Traditionally, firmware used to mean fixed software as denoted by the word firm. It was
installed on non-volatile chips and could be upgraded only by swapping them with new,
preprogrammed chips.
This was done to differentiate them from high-level software, which could be updated
without having to swap components. Today, firmware is stored in flash chips, which can be
upgraded without swapping semiconductor chips.
2.7.3 UTILITIES
Utilities are types of system software which sits between system and application software.
These are programs intended for diagnostic and maintenance tasks for the computer. They
come in handy to ensure the computer functions optimally. Their tasks vary from crucial data
security to disk drive defragmentation.
Utility software helps to manage, maintain and control computer resources. Most are third-
party tools but they may come bundled with the operating system. Examples of utility
programs include: Disk defragmenters, System Profilers, Network Managers, Application
Launchers, Antivirus software, Backup software, Disk repair, Disk Cleaners, Registry Cleaners,
Disk Space analyzer, file manager, File Compression, Data Security and many more.
2.7.4 TRANSLATOR
A translator is a programming language processor that converts a computer program from one
language to another. It takes a program written in source code and converts it into machine
code. It discovers and identifies the error during translation.
It translates high-level language program into a machine language program that the central
processing unit (CPU) can understand. It also detects errors in the program.
DIFFERENT TYPES OF TRANSLATORS
THERE ARE 3 DIFFERENT TYPES OF TRANSLATORS AS FOLLOWS
2.7.4.1 COMPILER
A compiler is a translator used to convert high-level programming language to low-level
programming language. It converts the whole program in one session and reports errors
detected after the conversion. Compiler takes time to do its work as it translates high-level
code to lower-level code all at once and then saves it to memory.
2.7.4.2 INTERPRETER
Just like a compiler, is a translator used to convert high-level programming language to low-
level programming language. It converts the program one at a time and reports errors
detected at once, while doing the conversion. With this, it is easier to detect errors than in a
compiler. An interpreter is faster than a compiler as it immediately executes the code upon
reading the code. It is often used as a debugging tool for software development as it can
execute a single line of code at a time. An interpreter is also more portable than a compiler
as it is not processor-dependent, you can work between hardware architectures.
2.7.4.3 ASSEMBLER
An assembler is is a translator used to translate assembly language to machine language. It is
like a compiler for the assembly language but interactive like an interpreter. Assembly
language is difficult to understand as it is a low-level programming language. An assembler
translates a low-level language, an assembly language to an even lower-level language, which
is the machine code. The machine code can be directly understood by the CPU.
3.1 INSTRUCTION
An instruction code is a group of bits that instruct the computer to perform a specific
operation, an instruction must also include one or more operands, which indicate the
registers and/or memory addresses from which data is taken or to which data is deposited.
The instructions are stored in computer memory in the same manner that data is stored. The
control unit interprets these instructions and uses the operations code to determine the
sequences of micro operations that must be performed to execute the instruction
3.3.1 OPCODE
Operation Code is the portion of a machine language instruction that specifies what operation
is to be performed by the central processing unit (CPU). The term is an abbreviation of
operation code
The operation code of an instruction is a group of bits that define operations such as addition,
subtraction, shift, complement
Opcode is abbreviated from operation code is the portion of a machine language instruction
that specifies the operation to be performed, used to refer to a microprocessor instruction.
3.3.2 OPERANDS
Operands are entities or argument operated upon by the instruction (mnemonic). The operand
may be a processor register, a memory address, a literal constant, or a label.
The operand specifies the data that needs to be acted on. The operand can also refer to a
place in memory, such as a register.
In computer programming, an operand is a term used to describe any object that is capable of
being manipulated. For example, in "1 + 2" the "1" and "2" are the operands and the plus
symbol is the operator
Operands are the objects that are manipulated and the operators are the symbols that
represent specific actions. An illustration is given below
3.3.3 ADDRESSES
Addresses are the locations in memory of specified data
ILLUSTRATION
ADD AX, [102]
SUMMARY
The opcode is ADD
There are two operands are AX and [102]
This instruction contains one address - 102
EXAMPLE
MOV DX, TAX_RATE ;Registerin first operand
MOV COUNT, CX ;Registerin second operand
MOV EAX, EBX ;Both the operands are in registers
3.4.2 IMMEDIATE ADDRESSING
An immediate operand has a constant value or an expression. When an instruction with two
operands uses immediate addressing, the first operand may be a register or memory location,
and the second operand is an immediate constant. The first operand defines the length of the
data
EXAMPLE
ADD BYTE_VALUE,65; An immediate operand 65 is added
MOV AX,45H; Immediate constant 45 His transferred to AX
EXAMPLE 1
1) LOAD R1, 100 Load the content of memory address 100 to register R1.
2) LOAD R1, R2 Load the content of register R2 to register R1
Direct addressing mode means that the value for a given instruction in assembly programming
is pointed to by a given value. This means the value is variable, based on what is stored in
memory at a given address.
EXAMPLE 2
ADD BYTE_VALUE, DL; Adds the register in the memory location
MOV BX, WORD_VALUE; Operand from the memory is added to register
FOR EXAMPLE
1) LOAD R1, @100 Load the content of memory address stored at memory address100 to the
register R1.
EXAMPLE
Add R3, (R1 + R2) Useful in array addressing: R1 - base of array R2 -
index amount
3.5.1.1 HARDWIRED
Hardwired – control logic is implemented with gates, flip-flops, decoders and other digital
circuits.
3.5.1.2 MICROPROGRAMMED
Microprogrammed – control information is stored in a control program, which is programmed
to perform the necessary steps to implement instructions.
Control registers: Called status register, their purpose is to indicate the current state of a
processor by setting individual bit called flag
Segment registers: Stores starting address of a data, used to reference MEM location using of
offset value to get location of data/instruction
DATA REGISTERS
AX (AH,AL) Accumulator : Accumulator for operands and arithmetic operations
BX (BH,BL) Base : Used in referencing/addressing the location of the parameters
CX (CH,CL) Counter : for counter loop operations
DX (DH,DL) Data : used for input/output operations , division remainder
ILLUSTRATION
CMP reg, reg
CMP reg, address
CMP reg, constant
ILLUSTRATION
ADD reg, reg
ADD reg, address
ADD reg, constant
SUB reg, reg
SUB reg, address
SUB reg, constant
ILLUSTRATRATION
MOV reg, reg
MOV reg, address
MOV reg, constant
MOV address, reg
MOV address, constant
DATA MOVEMENT INSTRUCTIONS CAN BE OF THESE FORMS
SYNTAX
mov<reg>, <reg>
mov<reg>, <mem>
mov<mem>, <reg>
mov<con>, <reg>
mov<con>, <mem>
INSTRUCTIONS INTERPRETATIONS
mov %ebx, %eax — copy the value in EBX into EAX
movb $5, var(,1) — store the value 5 into the byte at location
var
OTHE COMMANDS
3.7.6 ASSEMBLER CODE/COMMANDS
1. MOV is used to transfer the data from memory to accumulator (1 Byte)
2. LXI is used to load register pair immediately using 16-bit address (3 Byte instruction)
3. MVI is used to move data immediately into any of registers (2 Byte)
4. STAX is used to store accumulator into register pair indirectly (3 Byte instruction)
5. DCR is used to decrease register by 1 (1 Byte instruction)
6. INX is used to increase register pair by 1 (1 Byte instruction)
7. JNZ is used to jump if not zero to given memory location (3 Byte instruction)
8. HLT is used to halt the program
SUMMARY
ADDRESSING MODES
Immediate value moves
mov ax, 7 ; Immediate to register
movmem, 7 ; Immediate to memory direct
movmem[bx], 7 ; Immediate to memory indirect
; Register moves
movmem, ax ; Register to memory direct
movmem[bx], ax ; Register to memory indirect
mov ax, bx ; Register to register
mov ds, ax ; General register to segment register
PHASES OF COMPILATION
Compilation can be broken down into two phases, which is the front end and back end, while
each phase is further divided into subdivision known as stages as analyzed below
SUMMARY
Front end: It maps legal code into Intermediate Representation (IR).
Back end: It maps IR onto the target machine
The first stage works as a text scanner. This stage scans the source code as a stream of
characters and converts it into meaningful lexemes. Lexical analyzer represents these
lexemes in the form of tokens as: <token-name, attribute-value>
This stage remove irrelevant information from the source program that syntax analyzer will
not be able to use or interpret. Irrelevant information could include things like comments and
white space etc.
This stage is called the syntax analysis or parsing. It takes the token produced by lexical
analysis as input and generates a parse tree (or syntax tree). In this stage, token
arrangements are checked against the source code grammar, i.e. the parser checks if the
expression made by the tokens is syntactically correct. Syntax analysis is responsible for
looking at syntax rules of the language (often as a context-free grammar)
PARSER
Parser is a compiler that is used to break the data into smaller elements coming from lexical
analysis stage. A parser takes input in the form of sequence of tokens and produces output in
the form of parse tree. Parsing is of two types: top down parsing and bottom up parsing.
Semantic analyzer checks whether the parse tree constructed follows the rules of language.
For example, assignment of values is between compatible data types, and adding string to an
integer. Also, the semantic analyzer keeps track of identifiers, their types and expressions;
whether identifiers are declared before use or not etc. The semantic analyzer produces an
annotated syntax tree as an output.
Semantic analyzer takes the representation made from syntax analysis and applies semantic
rules to the representation to make sure that the program meets the semantic rules
requirements of the language. In addition to performing semantic analysis at this stage of
compilation, often symbol tables are created in order to assist in code generation.
Semantic analyzer checks the semantic consistency of the code. It uses the syntax tree of the
previous stage along with the symbol table to verify that the given source code is
semantically consistent. It also checks whether the code is conveying an appropriate
meaning. Semantic Analyzer will check for Type mismatches, incompatible operands, a
function called with improper arguments, an undeclared variable, etc.
After semantic analysis, the compiler generates an intermediate code of the source code for
the target machine. It represents a program for some abstract machine. It is in between the
high-level language and the machine language. This intermediate code should be generated
in such a way that it makes it easier to be translated into the target machine code.Once the
semantic analysis stage (the previous stage) is over the compiler, generates intermediate
code for the target machine. It represents a program for some abstract machine.
Intermediate code is between the high-level and machine level language. This intermediate
code needs to be generated in such a manner that makes it easy to translate it into the
target machine code.
FUNCTIONS ON INTERMEDIATE CODE GENERATION
It should be generated from the semantic representation of the source program
Holds the values computed during the process of translation
Helps you to translate the intermediate code into target language
Allows you to maintain precedence ordering of the source language
It holds the correct number of operands of the instruction
This stage does code optimization of the intermediate code. Optimization can be assumed as
something that removes unnecessary code lines, and arranges the sequence of statements in
order to speed up the program execution without wasting resources (CPU, memory). This
stage removes unnecessary code line and arranges the sequence of statements to speed up
the execution of the program without wasting resources. The main goal of this phase is to
improve on the intermediate code to generate a code that runs faster and occupies less
space.
Code generation is the last and final stage of a compiler. It gets inputs from code
optimization phases and produces the page code or object code as a result. The objective of
this phase is to allocate storage and generate relocatable machine code. The target language
is the machine code. Therefore, all the memory locations and registers are also selected and
allotted during this phase. The code generated by this phase is executed to take inputs and
generate expected outputs.
4.2.7 SUMMARY
Compiler operates in various stages each phase transforms the source program from
one representation to another
Six stages of compiler design are 1) Lexical analysis 2) Syntax analysis 3) Semantic
analysis 4) Intermediate code generator 5) Code optimizer 6) Code Generator
Lexical Analysis is the first stage when compiler scans the source code
Syntax analysis is all about discovering structure in text
Semantic analysis checks the semantic consistency of the code
Once the semantic analysis stage is over the compiler, generate intermediate code for
the target machine
Code optimization stage removes unnecessary code line and arranges the sequence of
statements
Code generation stage gets inputs from code optimization phase and produces the
page code or object code as a result
A symbol table contains a record for each identifier with fields for the attributes of
the identifier
Error handling routine handles error and reports during many phases
4.3 TOKEN
Tokens are symbolic names for the entities that make up the text of the program. A token is a
sequence of characters that can be identified as a single logical entity. The meaningful
collection of characters over the character set of the programming language ex:ID, Constant,
Keywords, Operators, Punctuation, Literal String
A programming token is the basic component of source code. Characters are categorized as
one of five classes of tokens that describe their functions (constants, identifiers, operators,
keywords, and separators) in accordance with the rules of the programming language
4.3.2 TOKENIZATION
Tokenization is the act of breaking up a sequence of strings into pieces such as words,
keywords, phrases, symbols and other elements called tokens. Tokens can be individual
words, phrases or even whole sentences. Tokenization is used in computer science, where it
plays a large part in the process of lexical analysis.
4.4 LEXEMES
Lexemes are part of the input stream from which tokens are identified. An invalid or illegal
token produces an error. A lexeme is one of the building blocks of language. A lexeme is a
sequence of characters in the source program that matches the pattern for a token and is
identified by the lexical analyzer as an instance of that token. Lexeme is basically the unit of
a token and it is basically sequence of characters that matches the token and helps to break
the source code into tokens.
4.5 COMPARE AND CONTRAST
TOKEN LEXEME
KEYWORD
if
LEFT PARENTHESIS
(
IDENTIFIER
y
COMPARISON
=
IDENTIFIER
t
RIGHT PARENTHESIS
)
IDENTIFIER
y
ASSGNMENT
=
IDENTIFIER
y
ARITHMATIC
_
INTEGER
3
SEMICOLON ;
ILLUSTRATION
The error may be encountered in any of the above phases. After finding errors, the stage
needs to deal with the errors to continue with the compilation process. These errors need to
be reported to the error handler which handles the error to perform the compilation process.
Generally, the errors are reported in the form of message.
Lexical analyzer: Wrongly spelled tokens
Syntax analyzer: Missing parenthesis
Intermediate code generator: Mismatched operands for an operator
Code Optimizer: When the statement is not reachable
Code Generator: Unreachable statements
Symbol tables: Error of multiple declared identifiers
4.7 TYPES OF COMPILERS
1. Native code compiler: The compiler used to compile a source code for same type of
platform only. The output generated by this type of compiler can only be run on the
same type of computer system and Os that the compiler itself runs on.
2. Cross compiler: The compiler used to compile a source code for different kinds
platform. Used in making software’s for embedded systems that can be used on
multiple platforms.
3. A cross compiler gives you the advantage of creating code that could be run on
machines other than the one on which source is compiled .
Almost all the compilers we use today are cross compilers .
4. Source to source compiler: the compiler that takes high-level language code as
input and outputs source code of another high- level language only.Unlike other
compilers which convert high level language into low level machine language, it can
take up a code written in Pascal and can transform it into C-conversion of one high
level language into another high level language having same type of abstraction .
Thus,it is also known as transpiler. As the name suggests such compilers convert the
source code written in one programming language into another programming
language that operates at almost same level of abstraction .
5. One pass compiler: It is a type of compiler that compiles the whole process in only
one-pass and then go for the next read.
6. Threaded code compiler: The compiler which simply replace a string by an
appropriate binary code.
7. Incremental compiler: The compiler which compiles only the changed lines from
the source code and update the object code.
8. Source compiler: The compiler which converts the source code high level language
code in to assembly language only
9. Decompiler: Now they are interesting , these compilers decompile the code , that is
convert machine language to source code but at a relatively low level of abstraction
. They are an important tool in software reverse engineering .
4.8 INTERPRETER
There are two ways to run programs written in a high-level language. The most common is to
COMPILER INTERPRETER
A compiler is a program which coverts the interpreter takes a source program
entire source code of a programming language and runs it line by line, translating
into executable machine code for a CPU. each line as it comes to it.
Compiler takes large amount of time to analyze Interpreter takes less amount of
the entire source code but the overall time to analyze the source code but
execution time of the program is comparatively the overall execution time of the
faster. program is slower.
5.1 ASSEMBLER
An assembler is a program that converts assembly language into machine code. It takes the
basic commands and operations from assembly code and converts them into binary code that
can be recognized by a specific type of processor. Assemblers are similar to compilers in that
they produce executable code.
5.1.5.3 INC
The INC instruction is used for incrementing an operand by one. It works on a single operand
that can be either in a register or in memory.
PASS 1: creates table for undefined symbols/labels and their values (assign addresses to all
statements in the program)
PASS 2: generates the machine code (save the values assigned to all labels for use in pass 2)
FIRST PASS
•Scans the code
•Validates the tokens
•Creates a symbol table
SECOND PASS
•Solves forward references
•Converts the cod
5.1.6.4 RESIDENT ASSEMBLER
If an assembler which runs on a computer and produces the machine codes for the same
computer then it is called resident assembler
5.1.6.6 TASM
Turbo Assembler (TASM) is a computer assembler (software for program development)
developed by Borland which runs on and produces code for 16- or 32-bit x86 DOS or Microsoft
Windows. It can be used with Borland's high-level language compilers, such as Turbo Pascal,
Turbo Basic, Turbo C and Turbo C++.
AFTER EXECUTION
5.3.1 BYTE
The BYTE directive tells the assembler to reserve a block of storage and remember its length
in bytes. The length is determined by the number of bytes in the initializer, which could be
numbers between 0-255 decimal, or characters in single quotes
5.3.2 WORD
Word generally means the number of bits that can be transferred at one time on the data bus,
and stored in a register, In terms of MIPS, a word is 32 bits, that is, 4 bytes
6.1 INTERRUPT
An interrupt is a signal to the processor, to gets the attention of the CPU and is usually
generated when I/O is required emitted by hardware or software indicating an event that
needs immediate attention. An interrupt alerts the processor to a high-priority condition
requiring the interruption of the current code the processor is executing
2) The processor then services the interrupt by branching to a special service routine written
to handle that particular interrupt. In order words the processor responds by suspending its
current activities, saving its state, and executing a function called an interrupt handler (or an
interrupt service routine, ISR) to deal with the event, by executing a log of algorithm, after
the interrupt handler finishes, the processor resumes from it previous state
6.2.3.1 The address bus is used to specify memory locations for the data being
transferred.
6.2.3.2 The data bus, which is a bidirectional path, carries the actual data between the
processor, the memory and the peripherals.
6.2.3.3 The control bus carries the control, timing and coordination signals to manage the
various functions across the system.
Symbol table is an important data structure created and maintained by compilers in order to
store information about the occurrence of various entities such as variable names, function
names, objects, classes, interfaces, etc.
Symbol table contains information to locate and relocate symbolic definitions and references.
The assembler creates the symbol table section for the object file. It makes an entry in the
symbol table for each symbol that is defined or referenced in the input file and is needed
during linking. Symbol table is then used by the link editor during relocation
6.4 SPOOLING
Spooling, an acronym of Simultaneous Peripheral Operation On-line (SPOOL), puts data into a
temporary working area so it can be accessed and processed by another program or resource.
Spooling is a process in which data is temporarily held to be used and executed by a
device, program or the system. Data is sent to and stored in memory or other volatile storage
until the program or computer requests it for execution.
Spooling is useful because devices access data at different rates. The spool buffer provides a
waiting station where data can rest while a slower device, such as a printer, catches up.
When the slower device is ready to handle a new job, it can read another batch of
information from the spool buffer. Spooling is a specialized form of multi-programming for
the purpose of copying data between different devices. In contemporary systems, it is
usually used for mediating between a computer application and a slow peripheral, such as a
printer.
6.5 BUFFER
Buffer is a region of a physical memory storage used to temporarily store data while it is
being moved from one place to another. However, a buffer may be used when moving data
between processes within a computer. A buffer contains data that is stored for a short
amount of time, typically in the computer's memory (RAM). The purpose of a buffer is to hold
data right before it is used. For example, when you download an audio or short video file
from whatapp, it may load the first 20% of it into a buffer and then begin to play immediately
while downloading is not yet completed.
6.5.1 BUFFERING
Preloading data into a reserved area of memory (the buffer). For example streaming audio or
video from the Internet, buffering refers to downloading a certain amount of data before
starting to play the music or movie.
BASIS FOR
SPOOLING BUFFERING
COMPARISON
2. Cache is made from static RAM which is faster than the slower dynamic ram used for a
buffer.
3. The buffer is mostly used for input/output processes while the cache is used during reading
and writing processes from the disk.
4. Cache can also be a section of the disk while a buffer is only a section of the RAM.
5. A buffer can be used in keyboards to edit typing mistakes while the cache cannot.