Note - Webs

spinabundantInternet και Εφαρμογές Web

30 Ιουλ 2012 (πριν από 5 χρόνια και 11 μήνες)

419 εμφανίσεις

Dynamic Data Exchange (DDE):

Dynamic Data Exchange was first introduced in 1987 with the release of
Windows 2.0
. It
used the "Windows Messaging Layer" functionality within Windows. Therefore, DDE
continues to work even in modern versions of Windows. Newer technology has been
developed that has, to some extent, overshadowed DDE (e.g.
, and
); however, it is still used in several places inside Windows, e.g. for


and for the copy, cut and paste functions.

The primary function of DDE is to allow Windows applications to share data. For example, a
cell in Microsoft Excel could be linked to a value in another application and when the value
hanged, it would be automatically updated in the Excel spreadsheet. The data
communication was established by a simple, three
segment model. Each program was known
to DDE by its "application" name. Each application could further organize information by
ups known as "topic" and each topic could serve up individual pieces of data as an "item".
For example, if a user wanted to pull a value from Microsoft Excel which was contained in a
spreadsheet called "Book1.xls" in the cell in the first row and first col
umn, the application
would be "Excel", the topic "Book1.xls" and the item "r1c1".

Note: In DDE, the application, topic and item are not case

A common use of DDE is for custom
developed applications to control off
software. For example,

a custom in
house application might use DDE to open a

spreadsheet and fill it with data, by opening a DDE conversation with Excel and
sending it DDE command
s. Today, however, one could also use the Excel object model with
OLE Automation

(part of
). The technique is, however, still in use, particularly for
distribution of financial data.

While newer technologies like COM offer features DDE doesn't h
ave, there are also issues
with regard to configuration that can make COM more difficult to use than DDE. Also, DDE
is a generic protocol that allows any application to monitor changing data provided by any
other application, while to achieve similar resul
ts in COM one would generally need to know
details of the application that is either to produce or consume the data. For example, a single
DDE financial data distribution application can provide live prices to either Excel or a
financial charting applicati
on without needing to know which it is doing, while to achieve the
same results with COM would usually require the distribution application's authors to write
custom code for each use scenario.

Object Linking and Embedding

Object Linking and Embedding

) is a technology developed by

that allows
embedding and linking to documents and other objects. For developers, it brought
ontrol e
tension (OCX), a way to develop and us
e custom user interface elements. On a
technical level, an OLE object is any object that implements the

possibly along with a wide range of other interfaces, depending on the object's needs.


A chart embedded in a text

OLE allows an editor to "farm out" part of a document to another editor and then re
import it.
For example, a
desktop publishing

system might send some text
to a
word processor

or a
picture to a
bitmap editor

using OLE. The main benefit of using OLE is t
o display
visualizations of data from other programs that the host program is not normally able to
generate itself (e.g. a pie
chart in a text document), as well as to create a master file.
References to data in this file can be made and the master file ca
n then have changed data
which will then take effect in the referenced document. This is called "linking" (instead of

Its primary use is for managing
compound documents
, but it is also used for transferring data
between different

drag and drop


operations. The concept of
"embedding" is also central t
o much use of

Web pages
, which tend to embed


animations), and

files within the


(such as

) or other structural
markup language

used (such as


possibly, but not necessarily, using a different embedding mechanism
than OLE...


OLE 1.0

OLE 1.0, released in 1990, was the evolution of the original
dynamic data exchange
, or DDE,
concepts that

developed for earlier versions of
. While DDE was limited
to transferring limited am
ounts of data between two running applications, OLE was capable
of maintaining active links between two documents or even

one type of document
within another.

OLE servers and clients communicate with system libraries using
virtual function tables
, or
VTBLs. The VTBL consists of a structure of
function pointers

that the system library can use
to communicate with the server or client. The server and client libraries,

, were originally designed to communicate betw
een themselves using the


OLE 1.0 later evolved to become an architecture for
software components

known as the
Component Object Model

(COM), and later

When an OLE object is p
laced on the clipboard or embedded in a document, both a visual
representation in native Windows formats (such as a

) is stored, as well as
the underlying data in its own format. This allows applications to display the object without
loading the application used to create the object, while also allowing the object to be edited, if
the appropriate application i
s installed.

Object Packager
, a component of OLE, shipping from
Windows 3.1

up to
Windows XP

allows a non
OLE object to be "packaged" so it can be embedded into an OLE client.

OLE 2.0

OLE 2.0 was the next evolution of OLE 1.0, sharing many of the same goals, but was re
implemented on top of the Component Object Model instead of using VTBLs direct
ly. New
features were
place activation

structured storage

evolved from OLE 1 object names, and provided an hierarchical object and
resource naming system similar to
URLs or URIs
, which were independently invented.
Windows now has merged the two technologies supporting a URL Moniker type, and a
Moniker URL scheme. Today Microsoft's Internet Explorer uses the operating system
's URL
Monikers internally to download resources. Applications which do so can share IE's cache.
However most (if not all) competing browsers have a completely independent
implementation of Web protocols, including their own cache, and do not use the Monik

OLE custom controls

Custom controls on a Visual Basic form.

OLE custom controls were introduced in 1994 as a replacement for the now deprecated
Visual Basic Extension

controls. Instead of upgrading these, the new architecture was based
on OLE. In particular, any container that supported OLE 2.0 could already embed OLE
custom controls, although these controls cannot react to events unless the conta
iner supports
this. OLE custom controls are usually shipped in the form of a dynamic link library with the
.ocx extension. In 1996 all interfaces for controls (except IUnknown) were made optional to
keep the file size of controls down, so they would downlo
ad faster; these were then called
ActiveX Controls

Technical details

OLE objects and containers are implemented on top of the
Component Object Model
; they
are objects that can implement interfaces to export their functionality. Only the

interface is compulsory, but other inter
faces may need to be implemented as well if the
functionality exported by those interfaces is required.

To ease understanding of what follows, a bit of terminology has to be explained. The view
status of an object is whether the object is transparent, opaq
ue, or opaque with a solid
background, and whether it supports drawing with a specified aspect. The site of an object is
an object representing the location of the object in its container. A container supports a site
object for every object contained.


follows is a list of interfaces, grouped by the object that usually needs to implement
them. Interfaces usually implemented by the OLE object are usually called on by the OLE
container, and vice
versa. Note that in the following list indentation indicates

inheritance. All non
indented interfaces derive from

What is CORBA?

CORBA, or Common Object Request Broker Architecture, is a standard architecture for
distributed obj
ect systems. It allows a distributed, heterogeneous collection of objects to


Object Management Group

(OMG) is responsible for defining CORBA. The OMG
comprises over 700 companies and organizatio
ns, including almost all the major vendors and
developers of distributed object technology, including platform, database, and application
vendors as well as software tool and corporate developers.

CORBA Architecture

CORBA defines an architecture for distr
ibuted objects. The basic CORBA paradigm is that of
a request for services of a distributed object. Everything else defined by the OMG is in terms
of this basic paradigm.

The services that an object provides are given by its
. Interfaces are defin
ed in
OMG's Interface Definition Language (IDL). Distributed objects are identified by object
references, which are typed by IDL interfaces.

The figure below graphically depicts a request. A client holds an object reference to a
distributed object. The object reference is typed by an interface. In the figure below the object
reference is typed by the

interface. The Object Request Broker,

or ORB, delivers the
request to the object and returns any results to the client. In the figure, a

request returns
an object reference typed by the



The ORB is the distributed service that implements the request to
the remote object. It locates
the remote object on the network, communicates the request to the object, waits for the
results and when available communicates those results back to the client.

The ORB implements location transparency. Exactly the same reque
st mechanism is used by
the client and the CORBA object regardless of where the object is located. It might be in the
same process with the client, down the hall or across the planet. The client cannot tell the

The ORB implements programming la
nguage independence for the request. The client
issuing the request can be written in a different programming language from the
implementation of the CORBA object. The ORB does the necessary translation between
programming languages. Language bindings are
defined for all popular programming

CORBA as a Standard for Distributed Objects

One of the goals of the CORBA specification is that clients and object implementations are
portable. The CORBA specification defines an application programmer's inte
rface (API) for
clients of a distributed object as well as an API for the implementation of a CORBA object.
This means that code written for one vendor's CORBA product could, with a minimum of
effort, be rewritten to work with a different vendor's product.

However, the reality of
CORBA products on the market today is that CORBA clients are portable but object
implementations need some rework to port from one CORBA product to another.

CORBA 2.0 added interoperability as a goal in the specification. In parti
cular, CORBA 2.0
defines a network protocol, called

(Internet Inter
ORB Protocol), that allows clients
using a CORBA product from any vendor to communicate with objects using a CORBA
product from any other vendor. IIOP works across the Internet, or mo
re precisely, across any
TCP/IP implementation.

Interoperability is more important in a distributed system than portability. IIOP is used in
other systems that do not even attempt to provide the CORBA API. In particular, IIOP is used
as the transport prot
ocol for a version of Java RMI (so called "RMI over IIOP"). Since EJB is
defined in terms of RMI, it too can use IIOP. Various application servers available on the
market use IIOP but do not expose the entire CORBA API. Because they all use IIOP,
written to these different API's can interoperate with each other and with programs
written to the CORBA API.

CORBA Services

Another important part of the CORBA standard is the definition of a set of distributed
services to support the integration and int
eroperation of distributed objects. As depicted in the
graphic below, the services, known as
CORBA Services

or COS, are defined on top of the
ORB. That is, they are defined as standard CORBA objects with IDL interfaces, sometimes
referred to as "Object Ser

There are several CORBA services. The popular ones are described in detail in another
module of this course. Below is a brief description of each:



Object life cycle

Defines how CORBA objects are created, removed, moved, and



Defines how CORBA objects can have friendly symbolic names


Decouples the communication between distributed objects


Provides arbitrary typed n
ary relationships between CORBA objects


Coordinates the tr
ansformation of CORBA objects to and from
external media


Coordinates atomic access to CORBA objects

Concurrency Control

Provides a locking service for CORBA objects in order to ensure
serializable access


Supports the association of

value pairs with CORBA objects


Supports the finding of CORBA objects based on properties
describing the service offered by the object


Supports queries on objects

CORBA Products

CORBA is a specification; it is a guide for implementing
products. Several vendors provide
CORBA products for various programming languages. The CORBA products that support the
Java programming language include:



The Java 2 ORB

The Java 2 ORB comes with Sun's Java 2 SDK. It is missing

VisiBroker for Java

A popular Java ORB from Inprise Corporation. VisiBroker is
also embedded in other products. For example, it is the ORB that
is embedded in the Netscape Communicator browser.


A popular Java ORB from Iona


A popular application server with an ORB from IBM.

Netscape Communicator

Netscape browsers have a version of VisiBroker embedded in
them. Applets can issue request on CORBA objects without
downloading ORB classes into the browser.

They are already

Various free or shareware

CORBA implementations for various languages are available for
download on the web from various sources.

Providing detailed information about all of these products is beyond the scope of this
introductory course. This course will just use examples from both Sun's Java 2 ORB and
Inprise's VisiBroker 3.x for Java products.

The Stock Application

The stock tradi
ng application is a distributed application that illustrates the Java programming
language and CORBA. In this introductory module only a small simple subset of the
application is used. Feel free to expand upon the application to enhance it once you are mor
comfortable with CORBA.

The stock application allows multiple users to watch the activity of stocks. The user is
presented with a list of available stocks identified by their stock symbols. The user can select
a stock and then press the "view" button.

Selecting the "view" button results in a report about the stock, indicating the name of the
company, the stock symbol, the current price, the last time it was updated, the trading
volume, and a graph that shows the stock price over some interval. This rep
ort is
automatically updated as new stock data becomes available.

The stock report also lets the user set an alarm by pressing the "Alarm" button. The alarm can
be set to activate when the price of the stock falls below a certain price or when it exceeds

certain price.

When the price of the stock satisfies the alarm's condition, it activates and the user is notified.

Later the application could be extended to allow users to buy and sell stocks.

Some Objects in the Stock Application

From the above

description, you can easily identify the following distributed objects in the


A distributed object that represents a particular stock.


A distributed object in the GUI that presents the stock data to the
user for a
particular stock.


A distributed object that represents the alarm set by the user.


A distributed object in the GUI that presents the alarm going off to
the user.


object is now used to illustrate the CORBA distributed obj
ect model.


stateless server:

stateless server

A server which stores no data from one request to another. In effect, after a
service request has been completed, it discards the data associated with the request. This
simplifies the d
esign of such servers. However, it severely limits the type of services which
can be provided. The best example of a stateless server is a
. The stateless
nature of such servers has meant that considerable effort has been expanded on server side
technologies such as

and client side software developed from

technology to overcome the inherent limitations of the
. A server which does keep stat
e information between requests is known as a

Stateful & Stateless Comparison

Failure Recovery.


A stateful server loses all its volatile state in a crash.

Restore state using a recovery protocol based on a dialog with clients, or
abort operations that were underway when the crash occurred.

Server needs to be aware of client failures in order to reclaim space allocated
to record the state of crashed client p
rocesses (orphan detection and


With stateless server, the effects of server failure and recovery are almost
unnoticeable. A newly reincarnated server can respond to a self
contained request
without any difficulty.

process Communicati
on (IPC)

process communication

) is a set of techniques for the exchange of
data among multiple

in one or more
. Processes may be running on one or
more computers connected by a
. IPC techniques are divided into methods for
message passing
shared memory
, and
remote procedure calls

(RPC). The
method of IPC used may vary based on the bandwidth and latency of communication
between the threads, and the type of data being communicated.


are several reasons for providing an environment that allows process cooperation:

Information sharing

Computation speedup



IPC may also be referred to as
thread communication


IPC, on par wit
h the
address space

concept, is the foundation for address space


process communication (IPC) is a set of
which is usually programmed

in other
for a programmer to communicate between a series of processes. This allows the running of
programs concurrently in an
operating system

There are quite a number of
methods used in inter
process communications. They are:


Pipes: This allows the flow of data in one direction only. Data from the output is
usually buffered until the input process receives it which must have a common origin.


Named Pipes
: This is a pipe with a specific name. It can be used in processes that do
not have a shared common process origin. Example is

where the data is written
to a pipe is fir
st named.


Message queuing: This allows messages to be passed between messages using either a
single queue or several message queues. This is managed by the system
messages are co
ordinated using an application program interface


Semaphores: This is used in solving problems associated with synchronization and
avoiding race conditions. They are integers values which are greater than or equal to


Shared Memory: This allows the interchange of data thro
ugh a defined area of
memory. Semaphore value has to be obtained before data can get access to shared


Sockets: This method is mostly used to communicate over a network, between a
and a

It allows for a standard connection which I computer and operating system

Mutual exclusion processes has a
shortcoming which is the fact that it wastes the processor time.

There are primitive interprocesses that block instead of wasting the processor time.

Some of these are:

Sleep and Wakeup

SLEEP is a system call that causes the caller to block, that is,
be suspended until another process
wakes it up. The WAKEUP call has one parameter, the process to be awakened.

The Producer
Consumer Problem

In this case, two processes share a common, fixed
size buffer. One of the processes puts information
into the b
uffer, and the other one, the consumer, takes it out. This could be easy with

3 or more
processes in which one wakeup waiting bit is insufficient, another patch could be made, and a second
wakeup waiting bit is added of 8 or 32 but the problem of race con
dition will still be there.

Events Counter

This involves programming a program without requiring mutual exclusion. Event counters value can
only increase and never decrease. There are three operations defined on an event counter for example,


Read (E): Return value of E


Advance (E): Atomically increment E by 1.


Await (E, v): Wait until E has a value of v or more.

Two events counters are used. The first one,

would be to count the cumulative number of items that

producer discussed above has put into the buffer since the program started running. The other one
counts the cumulative number of items that the consumer has removed from the buffer so far.
Therefore, it is clear that
must be greater than or equal

to out, but not more that the size of the
buffer. This is method that works with pipes discussed above.


This is about the best way of achieving mutual exclusion.

A Monitor is a collection of procedures, variables, and data structures that are
grouped together in a
special kind of module or package. The monitor uses the wait and signal
The "WAIT" is to indicate
to the other process that the buffer is full and so causes the calling process to block and allows the
process that was earlier prohibi
ted to enter the process at this point. "SIGNAL" will

allow the other
process to be awakened by the process that entered during the "WAIT".

Network management

Network management

refers to the activities, methods, procedures, and tools that pertain to
, maintenance, and

of networked systems.

Operation deals with keeping the network (and the services that the network provides)
up and
running smoothly. It includes monitoring the network to spot problems as soon as possible,
ideally before users are affected.

Administration deals with keeping track of resources in the network and how they are
assigned. It includes all the
"housekeeping" that is necessary to keep the network under

Maintenance is concerned with performing repairs and upgrades

for example, when
equipment must be replaced, when a router needs a patch for an operating system image,
when a new switch is
added to a network. Maintenance also involves corrective and
preventive measures to make the managed network run "better", such as adjusting device
configuration parameters.

Provisioning is concerned with configuring resources in the network to support a g
service. For example, this might include setting up the network so that a new customer can
receive voice service.

A common way of characterizing network management functions is


Configuration, Accounting, Performance and Security.

Functions that are performed as part of network management accordingly include controlling,
planning, allocating, deploying, coordinating, and monitoring the resources of a network,
network planning,

allocation, predetermined


to support
raphic key

configuration management
security management
performance management
bandwidth management
Route analytics

accounting management

Data for network management is collected through several mec
hanisms, including

installed on infrastructure,
synthetic monitoring

that sim
ulates transactions, logs of activity,

real user monitoring
. In the

past network management mainly consisted of
monitoring whether devices were up or down; today performance management has become a
crucial part of the IT team's role which brings about a host of challenges

especially for
global organizations.


Network management does not include user
terminal equipment

Technologies and Solutions

A large number of access methods exist to support network and network device management.
Access methods include the
line interface

(CLIs), custom XML,
Windows Management Instrumentation

Transaction Language 1
, and the
Java Management Extensions


Schemas include the
, the
Common Information Model
, and

amongst others.

Medical Service Providers provide a niche marketing utility for man
aged service providers;
as HIPAA legislation consistently increases demands for knowledgeable providers. Medical
Service Providers are liable for the protection of their clients confidential information,
including in an electronic realm. This liability cre
ates a significant need for managed service
providers who can provide secure infrastructure for transportation of medical data.


rray of
nexpensive (or "

isks is a series (RAID0 to RAID5) of
increasing reliable and expensive w
ays of organising multiple physical hard disks into groups
("arrays") that work as a single logical disk. Each logical drive appears to the operating
system as a single physical drive, thanks to the efforts of the RAID controller. There are
hardware and so
ftware RAID controllers, but the software version adds strain to the CPU and
is slower than a hardware controller.

RAID comes in several flavors, levels zero through five (if you want to get picky, there are
others: 0, 1, 1E, 2, 3, 4, 5, 5E

00, 10, 1E0
and 50.) Different flavours let you choose
between performance, protection, and storage capacity.

spare drive

is a hard disk drive in a server that is defined for automatic use in the
event of a drive failure. If a drive fails, the system can automat
ically switch to the hot
drive, and the data from the dead drive is reconstructed on the hot
spare drive.

Each level is optimized for various capabilities, including improved performance of read or
write operations, and improved data availability th
rough redundant copies or parity checking.
Features of different RAID levels can be combined to get the benefits of both.

"Parity", mentioned below, is an error
checking feature: when the data is saved, a special
calculation based on the contents of the d
ata is made and saved with the data. When data is
later loaded, the calculation is made again and compared to the saved result. If they are
different, it is a sign that the data has become corrupted and recovery measures can be taken.


is a high
availability level. It provides basic disk striping without
parity protection to catch errors, so while throughput is high, no redundancy is provided. It is
relatively inexpensive. If one disk in the array happens to fail, all data in the array

unavailable. Striping spreads data across each disk in the array for improved performance.


Striping is the practice of spreading data over multiple disk drives. It allows greater
performance because drives can seek and deliver data simultaneou
sly, rather than one drive
having to do all the work by itself.




There are significant performance advantage over a single disk.

reads or writes are done simultaneously with multiple disks, rather than

read or write to a single disk. Reads/writes are overlapped across all disks.



If one disk fails, all data is lost, and all disks must be reformatted. Data could
be restored across the array from a tape or diskette backup, if available.




is the number of disks, the capacity is
. RAID 0 writes blocks of
data to each drive in the array. It cannot be extended once it is full.


is a disk
mirroring strategy for high performance. All data is written twice to
e drives. The cost per megabyte of storage is higher, of course, but if one drive fails,
normal operations can continue with the duplicate data. If the RAID device permits hot
swapping of drives, the bad drive can be replaced without interruption.

ng and Duplexing.


duplicates the data from one disk onto a second
disk using a single disk controller. Disk

is the same as mirroring, except that the
disks are attached to separate disk controllers, such as two SCSI adapters.




Write performance is somewhat reduced, because both drives in the
mirrored pair must complete the write operation. A read request can be
handled by either disk. The drive in the pair that is less busy is issued
the rea
d command, leaving the other drive to perform another read



If either disk fails, a copy of the data is still available on the other disk.

If a disk controller fails while duplexing, the data can still be accessed
through the
other controller and disk.



Where N is the number of disks, the capacity is N divided by 2.

1E :
(also called Hybrid or Enhanced RAID 1, RAID 6, or RAID 10) stripes the data
across the disks with mirroring. In other words, it combines
0 and RAID
1, provides
two sets of striped disks, and is fairly popular. Striping increases throughput, and
simultaneous reads from the two sets will reduce the performance drag caused by writing
everything twice.

It needs three or more disks. The fir
st stripe is the data stripe, and the second stripe is the
mirror (copy) of the first data stripe shifted one drive. It is called mirrored stripe also, because
a complete stripe of data is mirrored to another stripe within the set of disks.

When the
user wants to load the file, the RAID system collects the necessary 6 chunks, puts
them together and gives them to the user. Imagine disk 3 suddenly blows up. Chunks 3,2',6
and 5' are lost

or are they? If you look at the remaining two drives, the system
can still find
the 6 chunks that make up the entire file.

After the disk death, the RAID systems alerts the system manager that a disk failure has
happened, the system manager slides a new hard disk in to replace the dead one and the
RAID system automatica
lly restores the contents of the dead drive onto the replacement
drive. If there is a spare hot drive, the system will automatically take it over, restore the lost
data and use the spare.

The more hard disks you have in the RAID system, and the more times

data is redundantly
saved, the more your system becomes crash
proof. Also, performance will tend to improve
with more disks: when the number of disks in an array is doubled, server throughput will
improve by about 50 percent until other bottlenecks occur.




Faster than RAID1, but slower than RAID0. The data is striped across
an odd number of disks. Each write has to be repeated to accomplish
the mirroring. In the example above, on the first write S1, S2, and S3
are wri
tten to disks 1, 2, and 3, respectively. On the second write, S3',
S1', and S2' are written to disks 1, 2, and 3, respectively (same data
mirrored and shifted one disk). Performance is slowed.



If any disk fails, the data is still
available on the other disks



Where N is the number of disks, the capacity is N divided by 2.


performs disk striping at the bit level and uses one or more disks to store parity
information. RAID
2 is not used very often because it is considered to be slow and
expensive. Bit interleave data striping with hamming code. Fast for sequential applicatio
such as graphics modeling. Almost never used with PC
based systems


uses data striping, generally at the byte level and uses one disk to store parity
information. Striping improves the throughput of the system, and using only one disk per set
parity information reduces the cost per megabyte of storage. Striping data in small chunks
provides excellent performance when transferring large amounts of data, because all disks
operate in parallel. Two disks must fail within a set before data would bec
ome unavailable.
Bit interleave data striping with parity

Access to all drives to retrieve on record

Best for
large sequential reads

Poor for random transactions

Faster than a single disk but
significantly slower than RAID 0 or RAID 1 in random env


stripes data in larger chunks, which provides better performance than RAID
3 when
transferring small amounts of data. Block interleave data striping with one parity disk

for large sequential I/O, but poor write performance

than a single drive but
significantly slower than RAID 0 or RAID 1.


stripes data in blocks sequentially across all disks in an array and writes parity data
on all disks as well. By distributing parity information across all disks, RAID
5 eliminates
bottleneck sometimes created by a single parity disk. RAID
5 is increasingly popular and is
well suited to transaction environments.




RAID 5 is preferred for smaller block transfers. Typically smaller block
transfers are used in network files.



If any disk fails, the data can be recovered by using the data from the
other disks along with the parity information.



Where N is the number of disks, the capacity is N minus 1.

RAID can be high
speed because the separate hard disks can all work at once: e.g. instead of
a single hard disk sending 5 chunks one at a time, all 5 hard disks could send one chunk
eously, making data retrieval far faster. RAID 5 combines striping with RAID1's
mirroring so the array of hard disks not only has the data sprinkled across them, but there are
matching disks maintaining an exact copy of the first disks.

RAID 5 yields the l
owest I/O throughout of the three RAID strategies because of the
additional checksum calculation and write operations required. In general, I/O throughput
with RAID 5 is 30 to 50 percent lower than with RAID 1.

Also RAID 5, with its controller, usually cos
ts more to implement than Hybrid RAID1.
RAID5 requires one parity unit per stripe.

RAID 5 stripes data across all disks at the same time. Parity is interleaved with data
information rather than stored on a dedicated drive


uses a distributed hot sp
are disk, so it works with a minimum of four disks.
Protection: very good. Capacity: N
2. Where N is the number of disks, the capacity is N
(one for parity and one for spare).

Spanned Arrays (RAID x0)
: Spanned arrays (or composite RAID levels) are RAID arrays
that are joined together to form larger RAID arrays.

Reliability, Availability and Serviceability

Reliability, Availability and Serviceability (RAS) is a set of related attributes that must b
considered when designing, manufacturing, purchasing or using a computer product or
component. The term was first used by

to define specifications for t

and originally applied only to

. Today

RAS is relevant to

as well and can
be applied to

application program

s, operating systems (

s), personal
ers (


s and


The term

refers to the ability of a computer
hardware or software
component to consistently perform according to its specifications. In theory, a reliable
product is totally free of technical errors. In practice, vendors commonly express product
reliability as a percentage. The Institute of Electrica
l and Electronics Engineers (

sponsors an organization devoted to reliability in engineering known as the IEEE Reliability
Society (IEEE RS).

Availability is the

ratio of time a system or component is functional to the total time it is
required or expected to function. This can be expressed as a direct proportion (for example,
9/10 or 0.9) or as a percentage (for example, 90%). It can also be expressed in terms of


per week, month or year or as total downtime for a given week, month or
year. Sometimes availability is expressed in qualitative terms, indicating the

extent to which a
system can continue to work when a significant component or set of components goes down.

Serviceability is an expression of the ease with which a component, device or system can be
maintained and repaired. Early detection of potential pr
oblems is critical in this respect. Some
systems have the ability to correct problems automatically before serious trouble occurs;
examples include built
in features of OSs such as Microsoft
Windows XP

and auto
virus software


detection and removal programs. Ideally,
maintenance and repair operations should cause as little downtime or disruption as possible.

Some of the key elements of RAS are:

engineering, which is designing systems to specifications bet
ter than minimum

Duplication, which is extensive use of

systems and components.

Recoverability, which is the use of

engineering methods.

Automatic updating, which is keeps OSs and applications current without user intervention.


, which prevents catastrophic loss of critical information.


, which keeps extensive records of data in cas
e of audits or other recovery

on replacement, which is the ability to
hot swap

components or peripherals.

The use of
virtual machine

s, which minimizes the impact of OS or software faults.

Use of
surge suppressor

s, whi
ch minimizes risk of component damage resulting from
line anomalies.

Continuous power, which is the use of an
uninterruptible power supply

keeps systems
rational while switching from commercial power to backup or auxiliary power.

Backup power sources, which includes batteries and generators to keep systems operational
during extended interruptions in commercial power.

Overview of CGI

This topic provides information about CGI. Common Gateway Interface (CGI) is a standard,
supported by almost all web servers, that defines how information is exchanged between a
web server and an external program (CGI program).

The CGI specification dicta
tes how CGI programs get their input and how they produce any
output. CGI programs process data that is received from browser clients. For example, the
client fills out a form and sends the information back to the server. Then the server runs the
CGI progr

Programs that are called by the server must conform to the server CGI interface in order to
run properly. We will describe this in further detail later in this chapter.

The administrator controls which CGI programs the system can run by using the ser
directives. The server recognizes a URL that contains a request for a CGI program,
commonly called a CGI script. Depending on the server directives, the server calls that
program on behalf of the client browser.

The server supports CGI programs that a
re written in C++, REXX, Java™, ILE C, ILE RPG,
and ILE COBOL. It also supports multi
thread CGI programs in all of these languages
capable of multiple threads.

You need to compile programs that are written in programming languages. Compiled
programs typic
ally run faster than programs that are written in scripting languages. On the
other hand, those programs that are written in scripting languages tend to be easier to write,
maintain, and debug.

The functions and tasks that CGI programs can perform range fr
om the simple to the very
advanced. In general, we call those that perform the simple tasks CGI scripts because you do
not compile them. We often call those that perform complex tasks gateway programs. In this
manual, we refer to both types as
CGI programs

Given the wide choice of languages and the variety of functions, the possible uses for CGI
programs seem almost endless. How you use them is up to you. Once you understand the CGI
specification, you will know how servers pass input to CGI programs and ho
w servers expect

There are many uses for CGI programs. Basically, you should design them to handle dynamic
information. Dynamic in this context refers to temporary information that is created for a
time use and not stored as a static Web page.
This information may be a document, an e
mail message, or the results of a conversion program.

CGI and Dynamic Documents

There are many types of files that exist on the web. Primarily they fall into one of the
following categories:




HTML documents

Servers break HTML documents into two distinct types:



Static documents

exist in non
changing source form on the web server. You should create
Dynamic documents

as temporary documents to satisfy a specific, individual reques

Consider the process of ″serving″ these two types of documents. Responding to requests for
static documents is fairly simple. For example, Jill User accesses the Acme web server to get
information on the Pro
Expert gas grill. She clicks on Products, the
n on Grills, and finally on
Expert. Each time Jill clicks on a link, the web browser uses the URL that is attached to
the link to request a specific document from the web server. The server responds by sending a
copy of the document to Jill’s browser.

What if Jill decides that, she wants to search through the information on the Acme web server
for all documents that contain information on Acme grills? Such information could consist of
news articles, press releases, price listings, and service agreements
. This is a more difficult
request to process. This is not a request for an existing document. Instead, it is a request for a
dynamically generated list of documents that meet certain criteria. This is where CGI comes

You can use a CGI program to parse

the request and search through the documents on your
web server. You can also use it to create a list with hypertext links to each of the documents
that contain the specified word or string.

Uses for CGI

HTML allows you to access resources on the Internet

by using other protocols that are
specified in the URL. Examples of such protocols are
, and
. If you code
a link with

that is followed by an e
mail address, the link will result in a generic
mail form.

What if you wanted your customers to provide specific information, such as how often they
use the web? Or how they heard about your company? Rather than using the generic

form, you can create a form that asks these questions and more. You can then u
se a
CGI program to interpret the information, include it in an e
mail message, and send it to the
appropriate person.

You do not need to limit CGI programs to processing search requests and e
mail. You can
use them for a wide variety of purposes. Basicall
y, anytime you want to take input from the
reader and generate a response, you can use a CGI program. The input may even be apparent
to the reader. For example, many people want to know how many other people have visited
their home page. You can create a C
GI program that keeps track of the number of requests
for your home page. This program can display the new total each time someone links to your
home page.

Redirection in NOS

Network redirection for the enhancement of server capacities

A network archite
cture and methodology provides two stages or levels of network redirection
to allow effective importation of storage into either or both of a client/requester and a server.
Each level of redirection is achieved through the establishment of a bi

communication link, preferably by the creation of an access list or export file at each host
containing a portion of a distributed resource. By using two levels of network redirection, a
terminal communicates only with a single, predetermined server, thus

permitting the use of
friendly Lan server systems. The predetermined server communicates with the
remainder of the network as a client through the network communication protocols, thus
removing constraints on operating systems which may be running at

hosts. Full access to the
distributed resource is thereby made transparent to the user and operational limitations
engendered by limitations of hard disk capacity at terminals and servers are overcome.