Purpose[. source | .]

fullfattruckMobile - Wireless

Dec 10, 2013 (3 years and 7 months ago)

46 views

5MARK

1.Device driver

In computing, a
device driver

is a
computer program

that operates or controls a particular type of device that is attached to a
computer.
[1]

A driver typically communicates with the
device

through the
computer bus

or communications subsystem to which
the hardware connects. When a calling program invokes a
routine

in the driver, the driver issues co
mmands to the device. Once
the device sends data back to the driver, the driver may invoke routines in the original calling program. Drivers are hardwar
e
-
dependent and
oper
ating
-
system
-
specific. They usually provide the
interrupt

handling required for any necessary asynchronous
time
-
dependent hardware interface.

Purpose
[
.

source

|
.
]

A device driver simplifies programming by acting as translator between a hardware device and the applications or
operating systems

that use it.
[1]

Programmers can write the higher
-
level application code independently of whatever
specific hardware the end
-
user is using. Physical layers communicate with specific device instances. For example, a
serial port

needs to handle standard communication protocols such as
XON/XOFF

that are common for all serial
port hardware.
This would be managed by a serial port logical layer. However, the physical layer needs to
communicate with a particular serial port chip.
16550 UART

hardware differs from PL
-
011. The
physical layer
addresses these chip
-
specific variations. Conventionally, OS requests go to the logical layer first. In turn, the logical
layer calls upon the physical layer to implement OS requests in terms understandable by the hardware. Conversely,
when
a hardware device needs to respond to the OS, it uses the physical layer to speak to the logical layer.

In
Linux

environments, programmers can build device drivers either as parts
of the
kernel

or separately as loadable
modules
.
Makedev

includes a list of the devices in Linux: ttyS (terminal), lp (
parallel port
), hd (disk), loop
(
loopback disk device
), sound (these include
mixer
,
sequencer
,
dsp
, and audio)...
[3]

The
Microsoft Windows

.sys

files and
Linux

.ko modules contain loadable device drivers
. The advantage of
loadable device drivers is that they can be loaded only when necessary and then unloaded, thus saving kernel
memory.

2.Bus (computing)

In
computer architecture
, a
bus

(from the Latin
omnibus
, meaning 'for all') is a communication system that transfers
data between components inside a
computer
, or between computers. This expr
ession covers all related hardware
components (wire, optical fiber, etc.) and software, including communication protocol.

Early computer buses were parallel electrical wires with multiple connections, but the term is now used for any
physical arrangement t
hat provides the same logical functionality as a parallel
electrical bus
. Modern computer
buses can use both
parallel

and
bit serial

connections, and can be wired in either a
multidrop

(electrical parallel) or
daisy chain

topology, or connected by switched hubs, as in the case of
USB
.

Internal bus
[
.

source

|
.
]

The internal bus, also known as internal data bus, memory bus, system bus or front
-
Side
-
Bus, connects all the
internal compon
ents of a computer, such as CPU and memory, to the motherboard. Internal data buses are also
referred to as a local bus, because they are intended to connect to local devices. This bus is typically rather quick and
is independent of the rest of the compute
r operations.

External bus
[
.

source

|
.
]

The external bus, or
expansion bus
, is made up of the electronic pathways that connect the different external devices,
such as printer
etc., to the computer.

3.INTERRUPT

Interrupts can be categorized into these different types:



Maskable interrupt

(
IRQ
): a hardware interrupt that may be ignored by setting

a bit in an
interrupt mask
register
's (IMR) bit
-
mask.



Non
-
mas
kable interrupt

(NMI): a hardware interrupt that lacks an associated bit
-
mask, so that it can never
be ignored. NMIs are used for the highest priority tasks such as timers, especially
watchdog timers
.



Inter
-
processor interrupt

(IPI): a special case of interrupt that is generated by one processor to interrupt
another processor in

a
multiprocessor

system.



Software interrupt
: an interrupt generated within a processor by executing an instruction. Software
interrupts are often used to implement
system calls

because they result in a subroutine call with a
CPU ring
level

change.



Spurious
interrupt
: a hardware interrupt that is unwanted. They are typically generated by system
conditions such as
electrical interference

on an interrupt line or th
rough incorrectly designed hardware.

Processors typically have an internal
interrupt mask

which allows software to ignore all external hardware interrupts
while it is set. Setting or clearing this mask may be faster than accessing an interrupt mask register (IMR) in a PIC
or disabling interrupts in the device itself. In some cases, such as the

x86

architecture, disabling and enabling
interrupts on the processor itself act as a
memory barrier
; however, it may
actually be slower.

An interrupt that leaves the machine in a well
-
defined state is called a
precise interrupt
. Such an interrupt has four
properties:



The Program Counter
(PC)

is saved in a known place.



All instructions before the one pointed to by the PC have fully executed.



No instruction beyond the one pointed to by the PC has been executed (that is no prohibition on instruction
beyond that in PC, it is just that any cha
nges they make to registers or memory must be undone before the
interrupt happens).



The execution state of the instruction pointed to by the PC is known.

An interrupt that does not meet these requirements is called an
imprecise interrupt
.

The phenomenon wh
ere the overall system performance is severely hindered by excessive amounts of processing
time spent handling interrupts is called an
interrupt storm

20MARK

4.Types of Inter
rupts
[
.
]

Level
-
triggered
[
.
]

A
Level
-
triggered interrupt

is an interrupt signalled by maintaining the interrupt line at a high or low level. A device
wishing to signal a Level
-
triggered interrupt drives the
interrupt Request

line to its active level (high or low), and
then holds it at that level until it is serviced. It ceases asserting the line when the CPU commands it to or otherwise
handles the co
ndition that caused it to signal the interrupt.

Typically, the processor samples the interrupt input at predefined times during each bus cycle such as state T2 for
the
Z80

microprocessor. If the int
errupt isn't active when the processor samples it, the CPU doesn't see it. One
possible use for this type of interrupt is to minimize spurious signals from a noisy interrupt line: a spurious pulse
will often be so short that it is not noticed.

Multiple dev
ices may share a level
-
triggered interrupt line if they are designed to. The interrupt line must have a
pull
-
down or
pull
-
up resistor

so that when not actively driven it se
ttles to its inactive state. Devices actively assert
the line to indicate an outstanding interrupt, but let the line float (do not actively drive it) when not signalling an
interrupt. The line is then in its asserted state when any (one or more than one) o
f the sharing devices is signalling an
outstanding interrupt.

Level
-
triggered interrupt is favored by some because it is easy to share the
interrupt Request

line without
losing the
interrupts, when multiple shared devices interrupt at the same time. Upon detecting assertion of the interrupt line,
the CPU must search through the devices sharing the
interrupt Request

line until one who triggered the interrupt is
detected. After servicing this device, the CPU may recheck the interrupt line status to determine whether any other
devices also needs service. If the line is now de
-
asserted, the CP
U avoids checking the remaining devices on the
line. Since some devices interrupt more frequently than others, and other device interrupts are particularly
expensive, a careful ordering of device checks is employed to increase efficiency. The original
PCI

standard
mandated level
-
triggered interrupts because of this advantage of sharing interrupts.

There are also serious problems with sharing

level
-
triggered interrupts. As long as any device on the line has an
outstanding request for service the line remains asserted, so it is not possible to detect a change in the status of any
other device. Deferring servicing a low
-
priority device is not an

option, because this would prevent detection of
service requests from higher
-
priority devices. If there is a device on the line that the CPU does not know how to
service, then any interrupt from that device permanently blocks all interrupts from the other

devices.

Edge
-
triggered
[
.
]

An
edge
-
triggered interrupt

is an interrupt signalled by a
level transition

on the interrupt line, either a falling edge
(high to low) or a rising edge (low to high). A device, wishing to signal an interrupt, drives a pulse onto the line and
t
hen releases the line to its inactive state. If the pulse is too short to be detected by
polled I/O

then special hardware
may be required to detect the edge.

Multiple devices may share

an edge
-
triggered interrupt line if they are designed to. The interrupt line must have a
pull
-
down or pull
-
up resistor so that when not actively driven it settles to one particular state. Devices signal an
interrupt by briefly driving the line to its non
-
default state, and let the line float (do not actively drive it) when not
signalling an interrupt. This type of connection is also referred to as
open collector
. The line then
carries all the
pulses generated by all the devices. (This is analogous to the
pull cord

on some buses and trolleys that any passenger
can pull to signal the driver that they are requesting a stop.) However, interrupt pulses from different devices may
merge if they occur close in time. To avoid losing interrupts the CPU must trigger on the tr
ailing edge of the pulse
(e.g. the rising edge if the line is pulled up and driven low). After detecting an interrupt the CPU must check all the
devices for service requirements.

Edge
-
triggered interrupts do not suffer the problems that level
-
triggered int
errupts have with sharing. Service of a
low
-
priority device can be postponed arbitrarily, and interrupts will continue to be received from the high
-
priority
devices that are being serviced. If there is a device that the CPU does not know how to service, it

may cause a
spurious interrupt, or even periodic spurious interrupts, but it does not interfere with the interrupt signalling of the
other devices. However, it is fairly easy for an edge triggered interrupt to be missed
-

for example if interrupts have
to

be masked for a period
-

and unless there is some type of hardware latch that records the event it is impossible to
recover. Such problems caused many "lockups" in early computer hardware because the processor did not know it
was expected to do something.

More modern hardware often has one or more interrupt status registers that latch the
interrupt requests; well written edge
-
driven interrupt software often checks such registers to ensure events are not
missed.

The elderly
Industry Standard Architecture

(ISA) bus uses edge
-
triggered interrupts, but does not mandate that
devices be able to share them. The
parallel port

also uses edge
-
triggered interrupts. Many older devices assume that
they have exclusive use of their interrupt line, making it electrically unsafe to share them. However, ISA
motherboards include pull
-
up res
istors on the IRQ lines, so well
-
behaved devices share ISA interrupts just fine.

Hybrid
[
.
]

Some systems use a hybrid of level
-
triggered and
edge
-
triggered signalling. The hardware not only looks for an
edge, but it also verifies that the interrupt signal stays active for a certain period of time.

A common use of a hybrid interrupt is for the NMI (non
-
maskable interrupt) input. Because NMIs gen
erally signal
major


or even catastrophic


system events, a good implementation of this signal tries to ensure that the interrupt is
valid by verifying that it remains active for a period of time. This 2
-
step approach helps to eliminate false interrupts
from affecting the system.

Message
-
signaled
[
.
]

.
:
Message Signaled Interrupts

A
message
-
signalled interrupt

does not use a physical interrupt line. Instead, a device signals its request for service
by

sending a short message over some communications medium, typically a
computer bus
. The message might be of
a type reserved for interrupts, or it might be of some pre
-
existing type

such as a memory write.

Message
-
signalled interrupts behave very much like edge
-
triggered interrupts, in that the interrupt is a momentary
signal rather than a continuous condition. Interrupt
-
handling software treats the two in much the same manner.
Typic
ally, multiple pending message
-
signalled interrupts with the same message (the same virtual interrupt line) are
allowed to merge, just as closely spaced edge
-
triggered interrupts can merge.

Message
-
signalled interrupt vectors can be shared, to the extent t
hat the underlying communication medium can be
shared. No additional effort is required.

Because the identity of the interrupt is indicated by a pattern of data bits, not requiring a separate physical
conductor, many more distinct interrupts can be efficie
ntly handled. This reduces the need for sharing. Interrupt
messages can also be passed over a serial bus, not requiring any additional lines.

PCI Express
, a serial computer bus, uses

message
-
signalled interrupts

exclusively

5.User
-
visible PPVPN services
[
.

source

|
.
]

This section deals with the types of VPN considered in the IETF.

OSI Layer 2 services
[
.

source

|
.
]

Virtual LAN

A Layer 2 technique that allows for the coexistence of multiple LAN broadcast domains, interconnected via trunks
using the
IEEE 802.1Q

trunking protocol. Other trunking protocols hav
e been used but have become obsolete,
including Inter
-
Switch Link (ISL), IEEE 802.10 (originally a security protocol but a subset was introduced for
trunking), and ATM LAN Emulation (LANE).

Virtual private LAN service (VPLS)

Developed by IEEE, VLANs allow
multiple tagged LANs to share common trunking. VLANs frequently comprise
only customer
-
owned facilities. Whereas VPLS as described in the above section (OSI Layer 1 services) supports
emulation of both point
-
to
-
point and point
-
to
-
multipoint topologies, the

method discussed here extends Layer 2
technologies such as
802.1d

and
802.1q

LAN trunking to run over transports such as
Metro Ethernet
.

As used in this context, a
VPLS

is a Layer 2 PPVPN, rather than a private line, emulating the full fun
ctionality of a
traditional
local area network

(LAN). From a user standpoint, a VPLS makes it possible to interconnect several LAN
segments over a packet
-
switched, or o
ptical, provider core; a core transparent to the user, making the remote LAN
segments behave as one single LAN.
[18]

In a VPLS, the provider network emulates a learning b
ridge, which optionally may include VLAN service.

Pseudo wire (PW)

PW is similar to VPWS, but it can provide different L2 protocols at both ends. Typically, its interface is a WAN
protocol such as
Asynchronous Transfer Mode

or
Frame Relay
. In contrast, when aiming to provide the appearance
of a LAN contiguous between two or more loc
ations, the Virtual Private LAN service or IPLS would be appropriate.

IP
-
only LAN
-
like service (IPLS)

A subset of VPLS, the CE devices must have L3 capabilities; the IPLS presents packets rather than frames. It may
support IPv4 or IPv6.

OSI Layer 3 PPVPN a
rchitectures
[
.

source

|
.
]

This section discusses the main architectures for PPVPNs, one where the PE disambiguates duplicate

addresses in a
single routing instance, and the other, virtual router, in which the PE contains a virtual router instance per VPN. The
former approach, and its variants, have gained the most attention.

One of the challenges of PPVPNs involves different cu
stomers using the same address space, especially the IPv4
private address space.
[19]

The provider must be able to disambiguate overlapping addresses in the multiple
cust
omers' PPVPNs.

BGP/MPLS PPVPN

In the method defined by
RFC 2547
, BGP extensions advertise routes in the IPv4 VPN address family, which are of
the form of 12
-
byte strings, beginning with an 8
-
byte
Route Distinguisher

(RD) and ending with a 4
-
byte IPv4
address. RDs disambiguate otherwise duplicate addresses in the same PE.

PEs understand the topology of each VPN,
which are interconnected with MPLS tunnels, either directly or via P
routers. In MPLS terminology, the P routers are
Label Switch Routers

without awareness of VPNs.

V
irtual router PPVPN

The Virtual Router architecture,
[20]
[21]

as opposed to BGP/MPL
S techniques, requires no modification to existing
routing protocols such as BGP. By the provisioning of logically independent routing domains, the customer
operating a VPN is completely responsible for the address space. In the various MPLS tunnels, the d
ifferent
PPVPNs are disambiguated by their label, but do not need routing distinguishers.

Plaintext tunnels
[
.

source

|
.
]

.
:
Tunneling protoc
ol

Some virtual networks may not use encryption to protect the data contents. While VPNs often provide security, an
unencrypted
overlay network

does not neatly fit within the secure or trusted categorization. For example a tunnel set
up between two hosts that used
Generic Routing Encapsul
ation (GRE)

would in fact be a virtual private network, but
neither secure nor trusted.

Besides the GRE example above, native
plaintext

tunneling protocols include
Layer 2 Tunneling Protocol (L2TP)

when it is set up without
IPsec

and
Point
-
to
-
Point Tunneling Protocol (PPTP)

or
Microsoft Poin
t
-
to
-
Point
Encryption (MPPE)
.

5.Subroutine

In
computer programming
, a
subroutine

is a sequence of program instructions that perform a specific task, packaged
as a u
nit. This unit can then be used in programs wherever that particular task should be performed. Subprograms
may be defined within programs, or separately in
libraries

that can be used by multiple programs.

In different programming languages a subroutine may be called a
procedure
, a
function
, a
routine
, a
method
, or a
su
bprogram
. The generic term
callable unit

is sometimes used.
[1]

As the name
subprogram

suggests, a subroutine behaves in much the same way as a computer program that is used
as one ste
p in a larger program or another subprogram. A subroutine is often coded so that it can be started (called)
several times and/or from several places during one execution of the program, including from other subroutines, and
then branch back (
return
) to the

next instruction after the
call

once the subroutine's task is done.

Maurice Wilkes
,
David Wheeler
, and
Stanley Gill

are cr
.
ed with the invention o
f this concept, which they termed a
closed subroutine
,
[2]
[3]

contrasted with an
open subroutine

or
macro
.
[4]

Subroutines are a powerful
programming

tool,
[5]

and the
syntax

of many
programming languages

includes support
for writing and using them. Judicious use of subroutines (for example, through the
structured programming

approach) will often substantially reduce the cost of developing and maintaining a large program, while increasing
its quality and reliability.
[6]

Subroutines, often collected into
libraries
, are an important mechanism for sharing and
trading sof
tware. The discipline of
object
-
oriented programming

is based on
objects

and
methods

(which are
subroutines att
ached to these objects or object
classes
).

In the
compiling

method called
threaded code
, the executable program is basically a sequence of subroutine calls.

Language support
[
.

source

|
.
]

High
-
level programming languages

usually include specific constructs to:



delimit the part of the program (
body
) that makes up the subroutine



ass
ign an
identifier

(name) to the subroutine



specify the names and/or
data types

of its parameters and/or return val
ues



provide a private
naming scope

for its
temporary variables



identify variables outside the subroutine that are accessible within it



call the subroutine



provide values to its parameters



specify the return values from within its body



return

to the calling program



dispose of the values returned by a call



handle any
exceptional conditions

encountered during the call



package subroutines into a
module
,
library
,
object
,
class
, etc.

Some
programming languages
, such as
Visual Basic .NET
,
Pascal
,
Fortran
, and
Ada
, distinguish between
functions

or
function subprograms
, which provide an explicit return value to the calling program, and
subroutines

or
procedures
, which do not. In those languages, function calls are normally embedded in
expressions

(e.g., a
sqrt

function may be called as
y = z + sqrt(x)
); whereas procedure calls behave syntactically as
statements

(e.g., a
print

procedure may be called as
if x > 0 then print(x)
. Other languages, such as
C

and
Lisp
, do not make this distinction, and
treat those terms as synonymous.

In strictly
functional programming

languages such as
Haskell
, subprograms can have no side effects, and w
ill
always return the same result if repeatedly called with the same arguments. Such languages typically only support
functions, since subroutines that do not return a value have no use unless they can cause a side effect.

In
programming languages

such as
C
,
C++
, and
C#
, subroutines may also simply be called
functions
, not to be
confused with
mathematical functions

or
functional programming
, which are different concepts.

A language's
compiler

will usually translate procedure calls and returns into machine instructions according to a
well
-
defined
calling convention
, so that subroutines can be compiled separately from the programs that call them.
The instruction sequences corresponding to call and return statements are called the procedure's
prologue and
epilogue
.

Advantages
[
.

source

|
.
]

The advantages of breaking a program into subroutines include:



decomposing

a complex programming task into simpler steps: this is one of the two main tools of
structured
progra
mming
, along with
data structures



reducing
duplicate code

within a program



enabling
reuse of code

across multiple programs



dividing a large programming task among various programmers, or various stages of a project



hiding implementation details

from users of the subroutine



improving
traceability
, i.e. most languages offer ways to obtain the call trace
which includes the names of the involved
subroutines and perhaps even more information such as file names and line numbers; by not decomposing the code into
subroutines, debugging would be impaired severely

Disadvantages
[
.

source

|
.
]

Invoking a subroutine (versus using in
-
line code) imposes some
computational overhead

in the call mechanism.

The subroutine typically requires standard
housekeeping

code


both at entry to, and exit from, the function
(
function pr
ologue and epilogue



usually saving
general purpose registers

and return address as a minimum).

6.Graphical user interface

In
computing
,
[1]

graphical user interface

(
GUI
, sometimes pronounced 'gooey')
[2]

is a type of
user interface

that
allows
users

to
interact

with electronic devices through graphical
icons

and visual in
dicators such as
secondary
notation
, as opposed to
text
-
based inte
rfaces
, typed command labels or text navigation. GUIs were introduced in
reaction to the perceived steep
learning curve

of
command
-
line interfaces

(CLI),
[3]
[4]
[4]

which require commands to
be typed on the
keyboard
.

Components
[
.

source

|
.
]

.
:
Elements of graphical user interfaces

Further information:
WIMP (computing)
,

Window manager
,

and

Desktop environment

A GUI uses a combination of technologies and devices to provide a platform that the user can interact with, for the
tasks of g
athering and producing information.

A series of elements conforming a
visual language

have evolved to represent information stored in computers. This
makes it easier for peop
le with few computer skills to work with and use computer software. The most common
combination of such elements in GUIs is the
WIMP

("window, icon, menu, pointing device")

paradigm, especially
in
personal computers
.

The WIMP style of interaction uses a virtual
inpu
t device

to control the position of a
pointer
, most often a mouse,
and presents information organized in windows and represented with icons. Available comma
nds are compiled
together in menus, and actions are performed making gestures with the pointing device. A
window manager

facilitates the interactions between windows, applicati
ons, and the
windowing system
. The
windowing system

handles hardware devices such as poi
nting devices and graphics hardware, as well as the positioning of the pointer.

In
personal computers

all these elements are modeled through a
desktop metaphor
, to produce a simulation called a
desktop environment

in which the
display represents a desktop, upon which documents and folders of documents
can be placed.
Window managers

and other software combine to simulate the desktop environment with v
arying
degrees of realism.

Post
-
WIMP interfaces
[
.

source

|
.
]

.
:
Post
-
WIMP

Smaller mobile devices such as
PDAs

and
smartphones

typically use the WIMP elements with different unifying
metaphors, due to constraints in space and available input devices. Applications for which WIMP is not well suited
may use newer
interaction techniques
, collectively named as
post
-
WIMP

user interfaces.
[1
0]

As of 2011, some touch
-
screen
-
based operating systems such as Apple's
iOS

(
iPhone
) and
Android

use the class of
GUIs named
post
-
WIMP
. These support styles of interaction using more than one finger
in contact with a display,
which allows actions such as pinching and rotating, which are unsupported by one pointer and mouse.
[11]

User interface and interaction design
[
.

source

|
.
]

.
:
User interface design

Designing the visual composition and temporal behavior of GUI is an important part of
software application

programming in the area of
human
-
computer interaction
. Its goal is to enhance the efficiency and ease of use for the
underlying logical design of a stored
program
, a design discipline known as
usability
. Methods of
user
-
centered
design

are used to ensure that the visual language introduced in the design is well tailored to the tasks.

The visible graphical interface features of an application are sometimes referred to as "chrome" or "Gui" (Goo
-
ee).
[12]
[13]

Typically, the user interacts with information by manipulating visu
al
widgets

that allow for interactions
appropriate to the kind of data they hold. The widgets of a well
-
designed interface are selected to support the actions
necessary to achieve the
goals of the user. A
model
-
view
-
controller

allows for a flexible structure in which the
interface is independent from and indirectly linked to application functio
nality, so the GUI can be easily customized.
This allows the user to select or design a different
skin

at will, and eases the designer's work to change the interface
as the

user needs evolve. Good user interface design relates to the user, not the system architecture.

Large widgets, such as windows, usually provide a frame or container for the main presentation content such as a
web page, email message or drawing. Smaller on
es usually act as a user
-
input tool.

A GUI may be designed for the requirements of a
vertical market

as application
-
specific graphical user interfaces.
Examples of applicatio
n
-
specific GUIs are:



Automated teller machines (ATM)



Point
-
Of
-
Sale touchscreens at restaurants
[14]



Self
-
service checkouts

used in a retail store



Airline self
-
ticketing and check
-
in



Information kiosks in a public space, like a train station or a museum



Monitors or control screens

in an embedded industrial application which employ a
real time operating system

(RTOS).

The latest cell phones and handheld game systems also employ ap
plication specific touchscreen GUIs. Newer
automobiles use GUIs in their navigation systems and touch screen multimedia centers.

7.
Utility software

Utility software

is
system

software

designed to help analyze, configure, optimize or maintain a computer.

Utility software usually focuses on
how

the computer infrastructure (including the
compute
r hardware
,
operating
system
,
application software

and
data

storage) operates. Due to this focus, utilities are often rather technical and
targeted at people with an advanced level of computer knowledge
-

in contrast to
application software
, which allows
users to do things like creating text documents, playing video games, listening to music or viewing websites.

Utility software categories
[
.

source

|
.
]



Anti
-
virus

utilities scan for computer viruses



Archivers

output a stream or a single file when provided with a directory or a set of files. Archive utilities, unlike
archive suites, usually do not include compression or encryption capabilities. Some archive utilities may even have a
separate un
-
archive utility
for the reverse operation.



Backup software

can make copies of all information stored on a disk and restore either the entire disk (e.g. in an event
of
disk failure
) or selected files (e.g. in an event of accidental deletion).



Clipboard m
anagers

expand the
clipboard

functionality of an operating system .



Cryptographic

utilities encrypt and decrypt streams and files.



Data compression

utilities output a shorter stream or a smaller file when provided with a stream
or file.



Data synchronization

utilities establish consistency among data from a source to a target data storage and vice versa.
There are several branches of this t
ype of utility:

o

File synchronization

utilities maintain consistency between two sources. They may be used to create
redundancy or backup copies but are also used t
o help users carry their digital music, photos and video in
their
mobile devices
.

o

Revision con
trol

utilities are intended to deal with situations where more than one user attempts to
simultaneously modify the same file.



Disk checkers

can scan operating hard drive.



Disk cleaners

can find files that are unnecessary to computer operation, or take up considerable amounts of space. Disk
cleaner helps the
user

to decide what to
delete

when their hard disk is full.



Disk compression

utilities can transparently
compress
/uncompress the contents of a disk, increasing the capacity of the
disk.



Disk defragmenters

can detect
computer files

whose contents are broken across several locations on the
hard disk
, and
move the fragments to one location to increase efficiency.



Disk partitions

can divide an individual drive into multiple
logical drives, each with its own file system which can be
mounted by the operating system and treated as an individual drive.



Disk space analyzers

for the visualizat
ion of disk space usage by getting the size for each folder (including sub folders)
& files in folder or drive. showing the distribution of the used space.



Disk storage

utilities



File managers

provide a convenient method of performing routine data management tasks, such as deleting, renaming,
cataloging, uncataloging, moving, copying, merging, generating and

modifying data sets.



Hex
.
ors

directly modify the text or data of a file. These files could be data or an actual program.



Memory testers

check for memory failures.



Network utilities

analyze the computer's network connectivity, configure network settings, check data transfer
or log
events.



Registry cleaners

clean and optimize the
Windows registry

by removing old registry keys that are no longer in use.



Screensavers

were desired to prevent
pho
sphor burn
-
in

on
CRT

and plasma
computer monitors

by blanking the screen
or filling it w
ith moving images or patterns when the computer is not in use. Contemporary screensavers are used
primarily for entertainment or security.



System monitors

for monitoring resour
ces and performance in a computer system.



System profilers

provide detailed information about the software installed and hardware attached to the computer.