Title: Ch%206.%20Transaction%20Processing%20Monitors
1Ch 6.Transaction Processing Monitors
2Transaction Processing Monitor
- Transactional RPC.
- Functional Principles of the TP Monitor.
- Managing Request and Response Queues.
- Other tasks of TP Monitors
- Load Balancing
- Authentication and Authorization
- Restart Processing
3Layering of Services in a Transaction Processing
System (1)
- The Basic Operating System (BOS) uses the
hardware directly. - Examples Process/Thread scheduling, file system,
simple sessions, authentication, etc. - Transaction Processing Operating System (TPOS)
uses BOS to provide a transactional programming
environment. - Examples Server class, transaction manager, log,
durable queue, transactional, RPC. Etc.
4Layering of Services in a Transaction Processing
System (2)
- Transaction Processing Services (TRAPS) use both
BOS and TPOS to create a transaction-oriented
programming environment. - Examples Programming environment, load control,
resource managers, database, etc. - The application typically uses the TRAPS and
TPOS, depending on the application's
sophistication. - Note These layers do not reflect a strict
implementation hierarchy. Rather, it describes a
separation of concerns among different system.
Components (e.g., TPOS can implement same of its
data structure using SQL).
5Coordination of Resource Managers (1)
- Transaction control must be exercised over all
resource manager interactions within one
transaction. - The following are required for the web of a
transactions calls to hang together - Control of participants
- Someone must track which resource managers have
been called. - At commit time, the transaction manager (TM) must
go out and ask each resource manager involved
whether they agree to successfully terminate the
transaction.
6Coordination of Resource Managers (2)
- Preserving transaction-related information
- At commit each process running the same resource
manager code is asked individually about its
commit decision. - If the different invocations left their traces in
different servers, the TRPC mechanism must
provide a means to relate multiple invocations of
the same resource manager to each other. - Support of the transaction protocol
- The resource managers must stick to the rules
imposed by the ACID paradigm.
7CALLBACK (1)
- Each resource manager has a service interface
that defines what the resource manager does for
living. - Furthermore, it declares a number of callback
entries, which can be called when certain events
happen. - If the RM maintains any durable objects, it must
be able to accept rollback and prepare/commit
callback from the TM. - The RM exports the callback entries to the
transaction manager when it first checks in with
the TP monitor. - The number of callback entries provided by a RM
depends on its level of sophistication. - Note This can result in multiple threads
executing the RMs code at different entry points.
8CALLBACK ENTRIES (1)
9CALLBACK ENTRIES (2)
- The function prototype declares are shown below.
Note that the invocation of a resource manager by
the transaction manager at such callback entry is
just another transactional remote procedure call. - Boolean rm_Prepare() / invoked at phase 1 of
commit. Returns vote. / - Boolean rm_Rollback_Savepoint (Savepoint)
- / rollback to requested savepoint number /
- / TRUE if ok, FALSE if needs further
rollback / - Boolean rm_Commit (Boolean) / invoked at phase
2 commit param is decision / - Boolean rm_Savepoint () / invoked when the
transaction takes a savepoint / - / TRUE if ok, FALSE if this resource manager /
- / cannot establish the savepoint and must /
- / continue rollback /
- (void) rm_UNDO (buffer) / asks the resource
mgr. to undo the effects / - / described in the log record passed as
parameter / - (void) rm_Abort () / invoked at end of abort
phase / - / after all undo steps have been performed /
- (void) rm_REDO (buffer) / asks the resource
mgr. to redo the effects /
10Install A New Resource Manager (1)
- RMID rmInstall (RMNAME, rm_callbacks,
AccessComtrolList, - stuff) /other info.
For TP monitor/ - RMNAME is the user-supplied global external ID.
- rm_callback is an array of pointer to the
callback entries. - These callback entries are specified as relative
addresses in the load module for that RM. - The TP monitor keeps this array in the TPPC stub
of the respective RMs address space.
11Install A New Resource Manager (2)
- RMID rmInstall (RMNAME, rm_callbacks,
AccessControlList, - stuff) /other info.
For TP monitor/ - AccessControlList allows the TP monitor to check
whether an incoming request for that RM is
acceptable from a security point of view. - Stuff denotes remaining parameters
- The location form which the code for the resource
manager can be loaded. - Which other resource managers need to be
available before this one can start, etc.
12Resource Managers Interfaces
Fig 6.2 Overview of a resource managers
interfaces. The resource manager both uses
interfaces from other system components and
provides interfaces to other system components.
There are three groups to be distinguished the
interface there source manager exports, the
interfaces it uses from other general resource
managers and the system resource manager
interfaces it has to call to support the
transaction protocol.
13Resource Manager Sessions
If a client C repeatedly invokes server class C,
how should that be handle? We need to consider
three scenarios.
14Independent Invocations
- A server class S can be called arbitrarily often,
and the outcome of each call is independent of
whether or not the server class has been called
before. - Example
- The server reads records from a database.
- It performs some statistical computations on
them, and returns the result. - Since the server keeps no state about the call,
it can declares its consent to the transactions
commit upon return.
15Invocation Sequence
- The client wants to issue requests that
explicitly refer to earlier service requests. - Example The mini-batch example updates a number
of records at a time (in a subtransaction) using
a cursor. - The final decision of the server class depends on
the outcome of the last invocation.
16Complex Interaction
- Each call to S is independent, except for some
global integrity constraints that cannot be
checked until commit and that may depend on the
results of all previous invocations. - The server class must remember the results of all
invocations by the client until commit.
17Complex Interaction Example
- A mail server stores the the various parts of a
message in a database. - It maintains a consistency constraint that says
that all mails must have at last a header, a body
and a trailer. - There must be some way of relating all the
updates done by the same client when the server
is called (back) at rm_Prepare.
18Implementing state associated with a
client-server interaction
Context information about multiple invocations of
the same server class can be maintained in four
different ways
- Context is maintained by a communication session.
- Context is passed back and forth.
- The servers write context information to a
database. - The context is stored in a segment of shared
memory for all servers of the same class.
19Context Management Communication Session
- Such a session has to be managed by the TPOS.
- All the client of the server has to do is to
declare that it need one. - Typically, the request for a session is issued by
the server. Applications do not want to be
bothered with TPOS. - The price for this is considerable overhead in
the TPOS for maintaining and recovering sessions.
20Session Management
If context maintenance is handled thru
communication session, then the TP monitor is
responsible for binding a server process to one
client for the duration of a stateful invocation.
Note A BindID uniquely identifies an
association between a client instance and a
server instance. typedef struct
/ / rminstance EndA / one end of stateful
interaction / rmInstance EndB / other one end
of stateful interaction / Uint SeqNo /
sequence no. to distinguish / / between
multiple stateful interaction / / among the
same servers. / BindId / handle for a
stateful interactions / BindId rmBind
(rmInstance) / function passes the ID of the
client to which a / / a session with the
server has to be established. / / gets back
a handle which identifies the interaction / /
among this server and this client. / /
returns the Null instance if binding
fails. / Boolean rmUnbind (BindId) / inverse
to rmBind, waives the future use of the / /
specified binding, returns FALSE if no binding
/ / with that identifier was in effect /
21Context Mgmt. Technique Context Passing (1)
- Context is passed back and forth explicitly
between client and server upon each request and
reply. - This approach relieves the TPOS of the problem of
context management.
22Context Mgmt. Technique Context Passing (2)
- Since re_Prepare call from the TM carries no
context in its parameter list, the commit may
have to be done as follows - The client issue a final service call (with the
final context), which tells the server that the
client is about to call commit. - When the server returns normally, the client can
call Commit_Work, and the server will not be
called back by the TM
23Context Mgmt. Technique Context Passing (3)
- Example global integrity constraints may depend
on the result of all previous invocations.
24Context Mgmt. Technique Keep context in Database
(1)
- The servers keep the context in a database.
- An arbitrary instance of the server can be
invoked to vote on commit. - The state information must be supplied with the
key attributes - TRID
- Client RMID
- Sequence number of the invocation
- in order to uniquely identify which thread of
control is belongs to.
25Context Mgmt. Technique Keep context in Database
(2)
- Some of the work involved in maintaining the
context can be off loaded to either an SQL
database system or to the context management
service of the TP monitor.
26Context Mgmt. Technique Shared Memory (1)
- All servers of the same class share a segment of
read/write memory in which invocation context is
kept. - Synchronization on the shared memory is done by
the server.
27Context Mgmt. Technique Shared Memory (2)
- This scheme is similar to the solution using a
context database, except that now the whole
responsibility is with the server (class). - Note This solution is used by very sophisticated
resource managers, such as SQL database system.
28Transaction-Oriented Context (2)
- Client-Oriented Context This reflects the state
of an interaction between a client and a server. - In the last few pages, we assumed this type of
context.
29Transaction-Oriented Context (2)
- Transaction-Oriented Context This type of
context is bound to the SoC established by a
transaction rather than to an isolated
client-server interaction.
Server Class S1
time T1
time T2
Server Class C
Server Class S3
Server Class S2
time T3
time T4 (need the context established by the
earlier call to S3 from S1
Note The context needed by S3 is not bound to
any of the previous client-server interactions,
but it is bound to the transaction as such.
30Transaction-Oriented Context (3)
A general context management scheme must be able
to cope with both type of state information that
is, it must distinguish wheatear a piece of
context is identified by the client-server
interaction or by the TRID.
- Each server that manages persistent object must
be implemented such that it can keep
transaction-oriented context. - The TRPC mechanism must provides means for
servers of any type to establish a stateful
interaction with a client in case this should be
needed (client-orient context). - Note Communication sessions can only be used to
support client-oriented context. - (We will discuss transaction-oriented management
techniques in more details later.)
31Anchor of TPOS (1)
- TPOS_Anchor is one well-defined point in the
TPOS, from which all the system data structures
can be reached. - typedef struct anchor TPOS_AnchorP / /
- typedef struct anchor / TPOS anchor for the
global control blocks / -
- ...
- TPAnchorP TPMonCBs / pointer to the anchor of
the TP monitor / - TMAnchorP TM_CBs / pointer to the anchor of
transaction mgr. / - CMAnchorP SM_CBs / pointer to the anchor of
session mgr. / - LMAnchorP LM_CBs / pointer to the anchor of log
mgr. / - IMAnchorP IM_CBs / pointer to the anchor of
lock (isolation) mgr. / - TPOS_Anchor / /
- The declaration shows five system resource
managers. This is a basic set real system might
have more. - Each resource manager has its own local anchor,
where this RMs data structures are rooted.
32Anchor of TPOS (2)
- Note Keeping the pointer to the anchors of
system RMs in TPOS_Anchor ensures that
addressability can be established in a orderly
manner upon system startup. (This is necessary,
because the TPOS come up before any of the RMs is
activated).
33Anchors of System Resources Managers
- The anchor of a system resource manager has no
fixed layout. - The TP monitors anchor might have the following
structure - typedef struct tpa TPAnchorP / /
- typedef struct tpa / TP monitor anchor for its
control blocks / -
- char MyVersion / version of the TP monitor
running / - char Repository64 / name of the repository I
work with / - handle Repos_Handle / handle for calls to
repository / - char ContrextDB / name of database for
keeeping context / - handle CtxDB_Handle / handle for calls to
context databse / - RMID NextRMID / next RMID to be handed out /
- RMCB FirstRMCB / pointer to 1st res. mgr.
control block / - PCB FirstPRCB / pointer to 1st process control
block / - SECB FirstSECB / pointer to 1st session control
block / - TPAnchor
- These system control blocks are implemented as
semaphores to make sure that a process can
operate on these control data structures without
being disturbed by other processes
34Central Data Structures of TPOS
- Descriptive data about processes, transactions,
and resource managers are kept in central control
blocks. - There is one system RM that is responsible for
and encapsulates each type of control block. - Examples
- TP monitor is responsible for the resource
manager control blocks, the process control
block, and the session control blocks. - The transaction manager is responsible for the
transaction control block, and so on.
35Accessing The Central Data Structure of TPOS
- The following function can be called from any
process - PID MyProcid () / returns the identifier of the
process the call is running in / - / this is actually a call to the basic OS /
- TRID MyTrid () / returns the transacition
identifier the call is executing within / - RMID MyRMID () / returns the RMID of the
resource manager that has issued the call / - RMID ClientRMID ()/ returns the RMID of the
callers client / - The following function can only be called from
system resource manager - PCB MyProc () / returns a copy of the cnetral
process control block / - / describing the process the caller is running
in / - TransCB MyTrans () / returns copy of the
central transaction control block / - / describing the transaction the caller is
working for / - RMCB MyRM () / returns copy of the central
resource manager control block / - / describing the res. mgr. that issued the
call / - RMCB ClientRM () / like MyRM, but for the
callers client / - PCB MyProcP () / returns a pointer to the
central process control block / - / describing the process the caller is running
in / - TransCB MyTransP () / returns a pointer to the
central TA control block /
36Accessing The Central Data Structure of TPOS
(Contd)
- Note
- MyTrans will get a copy of all descriptive data
for the current transaction. - MyTransP provides, in addition, linkage
information to other relevant control blocks.
37Protection Domains A Review (1)
- Callees typically want to protect themselves from
faults in the caller. They want to encapsulate
their data so that only they can access them
directly. Such an encapsulated environment is
called a protection domain.
38Protection Domains A Review (2)
- There are two ways to provide protection domains
- Process protection domain Each process has its
own private address space. Service requests are
handled by switching processes that is, by
sending a message to the server process. - Note A domain switch requires a process switch,
and it may require copying parameters and results
between the processes. - Example UNIX
39Protection Domains A Review (3)
- Address space protection domain Service
requests are handle by switching address spaces.
The address space protection domain of the callee
contains - Some of the callers segments, and
- The address space belonging to the callee.
- Note It is more efficient than process switch.
- Example IBMAS/400, IBM MVS/XA, VAX-VMS.
40Relationships Described by the TPOSs Central
Data Structures (1)
41Relationships Described by the TPOSs Central
Data Structures (2)
42Resource Manager Control Block
- We assume a Link List of control block for the
instance of each entity type. (We could have a
easily declared them as relations.) - / control block structure for all resource
manager (server classes) at the node / - typedef struct ResMgr RMCBP / /
- typedef struct ResMgr / control block for
describing the known resource / - / managers at that node /
- RMNAME rmname / global name of the resource
manager / - RMID rmid / the resource manager short name
(identifier / - Boolean RMLocal / indicates if the RM
available at the local node / - pointer acl / pointer to access control list
to authorize requests / - / see explanation in Section 6.4 of the
textbook / - Uint priority / priority of this RM for local
access scheduling / - Boolean RMactive / indicates if the RM is
activated or deactivated / - Boolean RMup / status flag says resource
manager is up or down / - Boolean UpAfterREDO / says if the resource can
operate normally / - / after REDO recovery has completed /
- Uint QueueLength / number of requests waiting
for that server class / - RMQUEP waiters / pointer to the request queue
for that resource mgr. /
43Resource Manager Control Block(Contd)
- RMTA_CBP RMTA_chain / points to the 1st
control block describing a / - / transaction the RM is currently working for
/ - RMPR_CBP RMPR_chain / points to chain of
control blocks for the processes / - / allocated to this resource manager /
- RMNO_CBP RMNO_chain / points to chain of
control blocks for the nodes in the / - / network where this resource manager is
available / - procedure rm_Startup / invoked at restart /
- procedure rm_Shutdown / invoked at system
shutdown / - / more stuff needed by the transaction manager,
the log manager, and others / - RMCBP next_RMCB / next in the list of RM
control blocks / - RMCB / /
- Note There is no control block for server
classes. The relationship between server classes
and resource managers is 11 (see p.96), so both
entity types can be represented by just one type
of control block.
44Process Control Block
- / control block structure for all
processes in server classes / - typedef struct Processes PCBP / /
- typedef struct Processes / control block
describing a process in a server class / - / and its dynamic association /
- PID pid / process no. provided by the basic
OS / - RMID InstanceOf / this is the processs own
server class / - RMID RunsIn / server class of the res. mgr.
process runs in now / - RMID ClientID / RMID of client having invoked
RunsIn / - TRID WorksFor / Trid of transaction under
- which process currently runs /
- Boolean busy / does the process currently
service a request ? / - Uint priority / priority the process has
currently been assigned / - PRTA_CBP TAsToDo / pointer to a list of
suspended transactions / - PRRM_CBP IMayUse / list of res. mgrs. to whose
address spaces - I may switch /
- PCB
45Session Control Block
- / control block for all sessions an RM in
that node participates in / - typedef struct Sessions
SECBP / / - struct Sessions / control block describing one
high-level (TP monitor) session / -
- char name BIG / the session name /
- Boolean incoming / session polarity (incoming
or outgoing) / - PID Initiator / ID of process that initiated
the binding / - NODEID InitNode / node where the initiator
resides / - HANDLE handle / node where the bound process
runs / - TRID UsedBy / transaction that is currently
riding on this session / - char stuff / many other things /
- SECB / /
- Note
- In practice, it is too expensive to establish and
release sessions on a per transaction basis. - Rather, sessions are maintained between processes
in different nodes over a longer period of time. - The communication manager must keep track of
which transactions are associated with which
sessions.
46Control Block for the mn Relationship Between
RMs and Transactions
- Template for a control block containing
information about a transactions association
with a resources manager anchored at RMTA_chain.
- typedef struct rmta RMTA_CBP / /
- typedef struct rmta / control block describing
the association between / - / one resource manager and one transaction
/ -
- TRID ServicedTA / ID of the transaction
involved / - pointer DataINeed / points to a data structure
the RM may want to maintain / - / for keeping state pertaining to its work on
that TA / - RMTA_CBP NextTA / points to control block for
next transaction of RM / - RMTA_CB
- These control blocks are rooted in the RMCB (see
p.43) - The variable DataINeed allows a resource manager
to maintain context for a transaction.
47Resource Managers Request Queue
- / template for an entry in the
resource managers request queue / - typedef struct mq RMQUEP / /
- typedef struct mq / control block
describing one TRPC to that res. manager / - / that could not be scheduled immediately
for lack of / / processes / - pinter RequestMsg / pointer to the message
contents depends on the / - / interfact that the request is directed to /
- pointer RPC_Data / points to a control block
describing the RPC context / - long timeout / defines a timeout interval after
which the waiting / - / request is cancelled /
- RMID ClientType / which resource manager issued
the request / - rmInstance ClientInst / which instance of the
RM issued the request / - RMQUEP NextWaiter / pointer to next entry in
request queue / - RMQUE / /
- Note These queues have to be kept in cases where
there are more TRPCs for a RM then the server
class has processes.
48Relationships Between Server Classes Processes
- The first one lists all the processes that may
switch to a server class - / template for an entry in the resource
managers process queue / - typedef struct rmpr RMPR_CBP / /
- typedef struct rmpr / control block
describing a process associated with the / - / resource manager /
- PID pid / process identifier of the associated
process / - Boolean PrimaryProc / is this a process that was
allocated for the resource / - / managers server class? /
- RMPR_CBP NextPrcoess / pointer to next entry in
process list / - RMPR_CB / /
- The second one lists the RMIDs whose code a
process is allowed to execute. - / template for an entry in the process
resource manager list / - typedef struct rmpr RMPR_CBP / /
- typedef struct rmpr / control block describing
a resource manager the / - / process can switch to /
- RMID rmid / ID of resource manager implemented
by the / - / server class /
- char stuff / addressing information, depends
on the OS /
1
2
49Relationships Between Server Classes Processes
(Contd)
1
2
50Review of Central Data Structures
TPOS_Anchor
TPMonCBs
TM_CBs
SM_CBs
LM_CBs
IM_CBs
TPAnchor FirstRMCB FirstPRCB FirstSECB
TMAnchor FirstTACB
SMAnchor
SMAnchor
SMAnchor
51TP Monitor and TPOS
TP Monitor
- The core data structures are maintained by the
TPOS. - There is one system resource manager that is
responsible for and encapsulates each type of
control block in the control data structures.
Programming Environment
TPOS
SESSION
RMs
TM
CENTRAL DATA STRUCTURE
TRPC
LOG
52Central Data Structure (1)
53Central Data Structure (2)
54Applications of Queues (1)
- Load Control If there is a temporary peak in the
request rate for a RM, the requests can be put
into a temporary queue in front of server class
(kept in volatile storage).
55Application of Queues (2)
- End User Control It is critical for the real
actions at the end points of the system to be in
accord with the central RMs. - (such queues must be kept in durable storage).
Central RMs
Teller Machine
dispense 20
subtract 20
Thank you ....
dispense 20
Receipt
56Application of Queues (3)
- Recoverable Data Entry The key point here is not
to lose any input data, even if the system
crashes before they get processed. - (data queues must be kept in durable storage).
-
High input rate
Transaction
Data Queue
57Application of Queues (4)
- Multi-Transaction Requests The queues maintain
durable information about the association between
different RMs.
Server 1
Server 2
Client A
Might be identical
Server 3
Server 4
Client B
Output queue of Server 3 OR Input queue of Server
4
58Queued Transaction Processing (QTP)
- For each request, there are three transactions
- The 1st transaction creates the request and
enters it into the servers input queue. - The 2nd transactions processes the request in the
server and enters the result into the clients
response queue - The 3rd transaction takes the response out of the
clients response queue and presents it to the
user (or does whatever is required).
59Queued Transaction Processing (QTP)(Contd)
- Example This is essentially the way IMS/DC
structures its work.
60Request Response Queues
- The QTP model implies durable relationships
between a resource manager and its queues. - Since each request, as well as each response, is
recorded durably in a queue, there is a history
of resource manager interactions that makes it
possible to determine specifically what happened
last between a certain client and its server.
61Request Response Queues (Contd)
- The behavior of the client with respect to one
request is shown in the following state diagram
- The client has to be connected to the queueing
system in order to issue requests. - It then can switch back and forth between sending
requests to servers and receiving responses from
them. - Finally, it can disconnect from the queue only if
there are no outstanding responses.
62Queueing System as a Resource Manager
- Queueing system can best be thought of as a
special resource manager that handles request and
response queues. - Registering a client with a queue establishes a
recoverable session between the client and the
queue RM. - This is another example of the stateful
interaction between a client and a server. - The session is recoverable in that after a crash
of either side, it can be resumed with all state
information reestablished as of the last
successful transaction that updated the queue.
63Operations on the Queueing System
- typedef charBIG QUNAME
- / globally unique name for the queue /
- typedef Uint QUID
- / locally unique identifier for the queue /
- typedef TRID RQID
- / request identifier, based on transaction
identifier / - typedef char REQUEST
- / request are passed as character strings /
- typedef char RESPONSE
- / response are also passed as character string
/ - Operations
- Send returns TRUE if the request was
successfully entered into the queue FALSE
otherwise. - Boolean send (REQUEST DoThis,
- RQID rqid, / ID of the request
/ - QUID ToQueue, / input queue of the
server / - QUID RespQueue) / output queue of the
sever /
64Operations on the Queueing System(Contd)
- Operations
- receive receives the next response from the
queue specified in RespQueue. - RESPONSE receive (QUID RespQueue,
- Response KeepThat)
- Some client-specific data passed in KeepThat are
stored by the queueing system if the response has
been taken from the queue successfully. - reReceive presents the response of the last
receive successfully executed by that client. It
is used after restart to find out which was the
last piece of work it has successfully executed. - RESPONSE reReceive (QUID RespQueue)
65Opening and Closing a Session
- The state of the session
- typedef struct SessionParms QstatePtr
- struct SessionParms / parameters describing
the state of the session between a client - and the queueing system /
-
- QUID quid / ID of the queue involved /
- RQID LastSend / ID of the last request sent
- by the client /
- RQID LastRcvd / ID of the last response
- delivered to the client /
- RESPONSE response / informaiton passed by the
- client with the last
- successful receive operation
- -- thru KeepThat /
- QState
66Opening and Closing a Session (Contd)
- Operations
- Connect If the session had not been closed down
explicitly before, the system returns the state
of the session (as shown previously). If the
session is newly established, Qstate contains
NULL entries. - Qstate Connect ( RMID MyRMID,
- QUID ToQueue)
- Disconnect Client closes the session with the
specified queue. - Qstate Disconnect ( RMID MyRMID,
- QUID FromQueue)
67A Restart Example A Ticket Printer
- The ticket printer advances a counter that can be
read from the client process each time a ticket
is printed. - The client reads the counter value (e.g. 13),
receives the response from the RespQueue (passing
the counter value in the parameter KeepThat). - receive (RespQueue, 13)
- The client commits, and then prints the ticket.
12
Database
Client
Server
13
68A Restart Example A Ticket Printer(contd)
- Upon restart, it gets the last value passed in
KeepThat as part of the state of the queue. - Connect (MyRMID, RespQueue)
- case i LastSent LastRcvd.
- If value (KeepThat) printer_counter
- Then
- The response had not been processed before the
crash, so printing must be done. - Else
- The ticket has already been printed.
- case 2 LastSent ? LastRcvd.
- Response processing had been completed before the
crash, and a subsequent request had been entered.
The response to that request has not yet
arrived, so all the client has to do is to enter
the request sent state.
69Load Balancing
- How many processes should be given to a server
class? - When a request arrives at a server class, and all
processes are busy handling requests - Should a new process be created for the server
class - OR
- Should the request wait for a process to become
available? - If the server class is distributed among several
nodes, should the request be sent there rather
than kept waiting locally. - All this boils down to the question of how many
virtual machines of which types should be
maintained? And where?
70Local Process Scheduling
- TP monitor knows which server classes it creates
a process for. It also keeps statistics about
that server class utilization. - In most systems, dynamic scheduling relies on
table lookups (and therefore is essentially
predetermined by the static decision), along with
a few rules of thumb. - If the service is available in the same address
space where the request originates, just keep the
process and the address space. - If the service is available in the different
address space, then current process can bind to,
just keep the process.
71Local Process Scheduling (Contd)
- If the service is not locally available, pick a
node where it is and send out the request. Now
the request is the nodes problem. - If the service is locally available, and there is
an idle process providing that service, send the
request to that process. - If none of the cases holds, and the service is
only locally available, decide on the basis of
CPU and server class utilization whether or not
to create a new process. If the service is also
available at other nodes, see if there is a
lightly loaded one, which can provide fast
response else queue it.
72Independencies of Local Server Loads
- Load balancing performed by the TP monitor must
look at both the utilization of each server class
and the utilization of the underlying physical
resources.
73THRASHING
- Increasing concurrency
- Increasing probability of access conflicts on
shared data. - More and more transactions actually wait for
other transaction to finish. - Reducing the load on the CPU.
- Allowing more processes to be created, which
further increases the service time. - This phenomenon, known as thrashing, is caused by
making scheduling decisions with insufficient
information (e.g., the number of server processes
is not considered in load balancing).
74THRASHING (Contd)
75Scheduling Across Node Boundaries
- The scheduling decision has to be based on the
following considerations - Sl expected local response time based on CPU
utilization and server class utilization. - Sr expected response time at the remote server,
given the utilization of its resources. - Tc communication overhead based on the
utilization of the communication medium. - If any remote node can be found such that
- Sr Tc lt Sl. Then the request should be expected
at that node.
76Scheduling Across Node Boundaries(Contd)
- Question Does the TP monitor have to keep track
of the performance figures of remote servers as
well as local ones? - Answer
- TP monitors supervising parts of the same server
class need to be in session with each other
anyway, and one type of message that is exchanged
via such sessions is a periodic sample of the
utilization, response time, and so on, of the
local resources at the participating nodes - Performance figures of remote nodes do not have
to be kept current to the millisecond the
principle of locality is applicable to load
balancing, too, and thus states that load
patterns change gradually.
77Control Block Death
- Assume two server classes, A and B. There are N
nodes in the system and each node has Ia
processes of A and Ib processes for B. - According to our scheduling model, each instances
of A could send its request to any instance of B. - If this configuration operates in that model for
a while, each instance of A eventually will be in
section with each instance of B. - The number of control blocks growing
quadratically will get too large. - Note This is likely to happen in large system.
78Data Affinity
- In current systems, such a load-sensitive data
partitioning is often combined with application
specific routing after all, the TP monitor does
not understand the parameter fields of the data
files.
79Authentication
- User authentication When a user wants to
establish a session with the system (logon, the
server authenticates him/her by checking if
he/she knows the password - A userid that has been successfully authenticated
is called an authorization ID (authid, for
short). - Session authentication This is similar to user
authentication, except that the user is mainly a
process running on a different node. - Challenge response The client and the server
share a secrete encryption key.
80Authentication (Challenge Response)
- First round The server challenges the client to
decrypt a random number. - Second round The client can also authenticate
the server by challenging it to decrypt a second
random number. - Note This scheme is the basis of IBMs SNA
authentication mechanism
SERVER
CLIENT
encrypted number EN
same secrete key
random number N
Encrypt
Decrypt
secrete key
decrypted number DEN
N
Compare
81Authorization
- File access control O.S.s use a two-dimensional
access matrix that specifies which subject is
allow to do what on which object. - subject userid, user group, program,
- object file, group of file (directory),
program, - what create, delete, read, write, link, load,
and execute. - userA can get to fileF only thru controlled
channels. - Memory access control one can get from a lower
authority domain to a higher authority domain
only through special instructions or O.S. calls
object
subject
programP
fileF
userA
execute
programP
read/write
82TP Monitor Authentication Authorization
- Can a TP monitor just use the O.S. services to
perform authentication and authorization? - Answer NO!
- Reasons
- The units for which the O.S. has access control
are large and long-lived process, sessions, and
files - The TP monitor, on the other hand, has to do
authorization on a per-request basis (not on a
session basis).
83TP Monitor Authentication Authorization
(Contd)
- The TP monitor, upon each request for service S
issued by a user with authid A, has to check
whether - this user is allowed to invoke
- this service (application) from
- this terminal (application) at
- this day in the week (time of the day) on
- this object with
- these parameters.
84The Criteria for Access Control
- Classical Time-Sharing Environment
- As the user logs on, he/she gets a process ( or a
number of them), which runs under his/her authid. - Programs that are loaded into this processs
address space execute under the same authid,
making it easy to decide on whose behalf a
request is issued.
85The Criteria for Access Control (Contd)
- Client-Server Environment
- What should be the criteria for access control
under these circumstances?
86Request-Based Access Control
- What should be the criteria for access control in
a client-server environment? - Collect all the authids along the way and specify
access rights for these concatenations - This is neither manageable nor even required.
- Request-based access control exercised by the TP
monitor is usually based on two-level scheme. - The TP monitor checks the clients authority to
call the server, and passes the transaction
authid (userid) along with each request. - The RM uses the transactions authid to decide
whether it can provide the service to the client,
given that it works on behalf of that user.
87Request-Based Access Control (Contd)
- Note The TP monitor checks only the clients
authority to call the server the second part,
which uses the transaction authid, is left to the
RM.
88Request-Based Access Control Properties
- Restrictive The mail server can access all the
tuples in the mail database. However, it must be
prevented, of course, from giving a user tuples
that do not belong to his/her mail box. - Permissive
- Assume that I want to use the mail system to send
a file out of my private database to Jim - As usual, the mail system calls upon the
database, but mail guy has no access rights on my
file. - Knowing, though, that its actually myself
calling, these rights can be granted temporarily.
89Request-Based Access Control Properties (Contd)
90When to do Authorization?
- Bind-time authorization Whenever a user invokes
a RM, the TP monitor do a lookup. - Select
- from TP_access_matrix
- where
- authid myself and
- nodeid here and
- rmid rmid and
- entry_name ServiceEntry
91When to do Authorization? (Contd)
- Problem This is too expensive.
- A solution
- When the TP monitor loads the code for the
application into a processs address space, it
has to resolve all the external references - If the application supplies names of the
services, the TP monitor can check right away if
the application program makes any nonauthorized
calls. - Run-time authorization Bond- time authorization
cannot be used if the access condition contains
time constraints or restrictions on locations. - A solution The TP monitor keeps an in-memory
copy of authorized requests in a data structure
that provides fast access via authid.
92When to do Session Authentication?
- Should a node perform session authentication
every time it receives a service request from a
remote node? - A truly paranoid system might do just that
- In normal system
- A session is kept between the TPOSs on either
side, they have authenticated each other. - If the client TPOS has also authenticated the
user, it can indicate this in the request
message, suggesting that the server need no do so
again.
93Restart Processing (1)
- After a crash, the BOS performs the following
- 1.1 The BOS first bootstraps itself back into
existence. - The log must come up early with the BOS.
- 1.2 The BOS performs its restart according to a
startup script that bring up the TPOS. - The TPOS performs the following
- 2.1 Format all the system control blocks needed
for managing the RMs. - 2.2 Load the description of all local RMs into
RMTable, and enter its processes into RMTable.
94Restart Processing (2)
- 2.3 Execute the TPOS startup script
- For each active RM, start the prespecified number
of processes for that server class and load the
code. Update the PRTable. - Call the TM at its rm_Startup entry. It reads the
log to determine the active transactions at the
time of the crash, as well as the RM involved,
and formats the TATable accordingly. - Call the Communications Manager (CM) at its rm_
Startup entry. The TM feeds all relevant log
records to the CM in order for it to recover its
transactional sessions.
95Restart Processing (3)
- 2.4 Bring up all the RMs at that node and
orchestrating their recovery. - RMs are brought up according to the sequence
prescribed in the TPOS startup script. - (This is necessary to make sure that services
required for the restart of other RMs are in
place before they are brought up). - When a RM can be brought up, the TP monitor
activates it at the rm_Startup entry point. - The RM then does whatever is needed for its own
initialization and eventually calls the Identify
function of TM.
96Restart Processing (4)
- 2.4 Contd
- The TM scans the log to see if there is any
recovery work to do for that RM. If so, - it feeds the REDO records to the RM thru the
rm_REDO callback entry. - After that, the same is done for the UNDO
records. - The TM returns from the Identify call, and the RM
eventually returns from the startup call.
97Restart Processing Summery
- BOS bootstraps itself back into existence, bring
up the log. - BOS execute the BOS startup script to bring up
the TPOS. - TPOS executes its startup script to
- determine the active transactions at the time of
the crash. - call the CM to recover the transactional sessions
- bring up all the RMs and orchestrate their
recovery.
98Restart Processing Summery (Contd)