Model of Mobile Objects Takeaki Yoshida and Makoto Takizawa Dept. of Computers and Systems Engineering Tokyo Denki University Ishizaka, Hatoyama, Saitama 350-03, JAPAN E-mail ftake,
[email protected] Distributed systems are composed of multiple objects. Objects support abstract operations and are distributed in not only xed stations but also mobile ones. While the object is moving from one location to others, the quality of service (QoS) supported by the object is changed. We model the movement of the object as changes of QoS supported by the object. We discuss how to support users with QoS required while QoS of the object is being changed. We present the migration and replication methods as a general framework to treat the disconnected operations. In addition, we present an optimistic concurrency control to maintain the mutual consistency among the replicas. Abstract.
1 Introduction
According to the advances of communication and computer technologies, kinds of mobile wireless stations are available. Especially, persons can bring handy information systems which support database systems. The data objects in the personal system are moving according to the movement of the person. Thus, the distributed systems are composed of mobile and xed stations interconnected by the communication networks. The mobile stations are moving from one location to others in the network. The connection of the mobile station is maintained by the network while the station is moving. The papers [15, 16] discuss protocols for supporting connections with the mobile stations. The mobile stations are not equipped with enough capacity of battery to have long-time communication. In order to reduce the power consumption, the connections with the mobile stations are disconnected while the operations issued by the mobile stations are being computed, i.e. disconnected operations [10]. One technique to compute the disconnected operations is to cache data object in the xed station to the mobile station. The users can manipulate the replica, i.e. the object cached into the mobile station. Barbara [3] and Huang [7] present how to cache the object in the xed station to the mobile station and how to maintain the mutual consistency among the replica and object. Jing [9] presents the locking scheme based on the optimistic two-phase locking [4] on the replicas to reduce the communication overhead. Furthermore, these papers assume that the server stations are xed and clients are mobile. In this paper, the resources in the distributed system are modeled to be objects . Each object supports abstract data and abstract operations while only read and write are considered in the papers [3, 7, 9]. On receipt of the operations, the objects compute the operations and send back the responses. The computation of each operation on an object is viewed to be atomic , i.e. the operation is completely computed or nothing [5, 2]. In addition, an operation may
issue operations in other objects, i.e. nested [14]. According to the movement of the station, the objects in the station are viewed to move from one location to dierent locations. Mobile objects can move from one location to others in the system. Fixed objects are in the xed stations. Each object o is considered to support some quality of service (QoS) like response time and bandwidth. According to the movement of o, QoS of o is changed . The movement of o is modeled as the change of QoS supported by o in this paper. Problem is how to support users with QoS required by the users while the objects are moving. The objects may be cached to the stations in order to compute the disconnected operation. Thus, the objects may be replicated into multiple replicas in order to increase the reliability, availability, and performance. In this paper, we assume that the object is fully replicated, i.e. the replicas have the same data and operations as the object. We would like to discuss an optimistic concurrency control to maintain the mutual consistency among the mobile replicas of objects. In section 2, we present a model of the mobile object. In section 3, we discuss how to compute disconnected operations. In section 4, we present how to compute operations on mobile objects. In section 5, we discuss how to maintain the mutual consistency among the replicas.
2 Mobile Objects
The distributed system is composed of multiple stations interconnected by networks. There are two kinds of stations, i.e. xed and mobile ones. The mobile stations are moving from one location to others in the network. An object is a unit of resource in the system, which is composed of abstract data and operations. Each object o can be manipulated only by the operations. We assume that each object is stored in one station. There are two kinds of objects, i.e. class and instance . The class includes the scheme of data and operations. The instance is composed of the data instance of the scheme and the operations. The objects may be replicated into multiple replicas which are in dierent stations. For example, if objects are cached to the stations, the replicas of the objects are stored in the stations. Here, suppose that an object o is replicated into multiple replicas o1 ; : : : ; ol (l 2) where each oi is in a station si . If oi has the same data and operations as o, o is fully replicated to oi . If not, they are partially replicated . If a class o is fully replicated, si has all operations supported by o. si has some operations of o if partially replicated. Next, if an instance o is fully replicated, each si has the data instance and the operations. If partially replicated, si has a part of the data of o. If o is in a mobile station, the location of o is changed according to the movement of the station. An object o is mobile if the location of o is changed. o is viewed to support some service. There are two aspects of the service, i.e. kinds and quality . The kinds of service are denoted by types of operations supported by o. The quality of service (QoS) means the quality of operations like response time and bandwidth. Even if o is moving, kinds of service supported by o are invariant but QoS is changing. For example, the response time to manipulate o may be increased due to the increased latency to o. [De nition] An object o is mobile i QoS of o is time-variant. 2 The bandwidth, latency, and reliability are referred to as attributes of QoS. QoS is speci ed in a tuple hq1 ; : : : qm i of quali cations. Each quali cation qk is speci ed in a logical form of the attributes. For example, 1Mbps bandwidth
20Mbps ^ latency 0:5sec. The order of the quali cations in the tuple shows the preference. That is, q1 is required to be satis ed. If q1 is satis ed, it is better for q2 to be satis ed. Thus, if qk is satis ed, it is better to satisfy qk+1 . QoS supported by the object is changed. For example, the bandwidth between oij and oijk in Fig. 2 is changed to be lower if oijk is moved to a station s0ijk is connected with the lower bandwidth network. Here, oijk supports the same operations. Thus, QoS of oijk is de ned for each object oij issuing operations to oijk . Q(oij ; oijk ) denotes QoS which oij supports for oijk . Suppose that oij is replicated to two replicas o1ij and o2ij as shown in Fig. 2. If QoS of o1ij for oi , i.e. Q(oij ; oi ) gets lower than opi expects to take from oij . oi can use another replica o2ij if o2ij supports better QoS than o1ij . Here, let R(oij ; oi) denote QoS which oi requires oij to support. Let Q1 and Q2 denote two QoSs. Let Q1 be hq11 ; : : : ; q1m1 i and Q2 be hq21 ; : : : ; q2m2 i. Here, for every pair of quali cations q1 and q2 , q1 q2 i q1 is satis ed if q2 is satis ed. Q1 Q2 i there is some h ( 1) such that q1l q2l for every l h. Q1 Q2 means that Q2 is better than Q1 . For example, if Q1 and Q2 represent h bandwidth = 10Kbpsi and h bandwidth = 1Mbpsi, respectively, Q2 Q1 . That is, Q1 is better than Q2 . [De nition] Suppose that opi in oi invokes opij in oij . opij is less-quali ed for opi if Q(oij ; oi ) R(oij ; oi ). 2 Suppose that oi manipulates oj . oi expects oj to support QoS Q1 while oj supports Q2 . Unless Q2 Q1 , oi selects another object which could support Q1 . The computation of an operation op in an object o may invoke operations in other objects. All the operations invoked by op complete successfully or none of them. That is, the computation of op is atomic . If some operation invoked by op fails, all the operations invoked by op have to be aborted. The computation of each operation invoked by op is also atomic. Hence, the operation is considered to be a nested transaction [14].
3 Operations on Disconnected Objects 3.1 Disconnected operations
Suppose that there are three objects oi , oij , and oijk with the data di , dij , and dijk , respectively. Suppose that an operation opi in oi invokes opij in oij and opij further invokes opijk in oijk . opij manipulates dij in oij and opijk manipulates dijk in oijk . The mobile station often has to close the connection with other stations to reduce the power consumption. The mobile station also may be disconnected due to the jamming and noise. Thus, the operations may be disconnected [9] while the operations are being computed. If the object has no connection with the other objects, the object is disconnected . There are ways to continue the distributed computation on mobile and xed objects in the presence of the disconnected objects: (1) migration of objects and (2) replication of objects. In the migration way, the operations and data of the disconnected object are transferred to other stations. On behalf of the disconnected operations, the operations migrated are continued to be computed. The data caching is a kind of migration where only data in the object is copied to another station. In the replication way, the object is replicated into multiple replicas o1ij : : : onij . If a replica okij used by an object oi is disconnected, oi manipulates another replica olij on behalf of okij .
3.2 Migration of objects
First, we would like to discuss how to migrate objects from one station to others. Here, suppose that oij is to be disconnected due to the close of the connections. There are two ways for migrating the object: to migrate (1) the disconnected object oij in sij to another station and (2) the connected object oijk in sijk to the disconnected station sij . One way is to migrate the disconnected object oij to another station. For example, opij and dij of oij are migrated from sij to another sijk as shown in Fig. 1. If sijk has the class of oij , only dij can be migrated to sijk since sijk has opij . After migrating oij to sijk , opi can still invoke opij of oij in sijk . If oij in sij is reconnected, oij waits until opij in sijk completes. Then, dij in sijk is sent to sij if dij is changed by opij . On receipt of dij , dij is restored to oij . In stead of migrating oij to sijk , oij may be migrated to si or other stations. oi
o ij
o ijk
opi
opij
op ijk
d ij
d ijk
di
s ij o ij opij
si
s ijk d ij
Fig. 1.
Migration of oij to sijk
Another way is to move the connected objects to the station sij to be disconnected. For example, suppose that oijk is migrated to sij as shown in Fig. 2. oijk is migrated to sij from sijk . Since oijk is still connected, oijk is manipulated by other objects while dijk is being manipulated in sij . In the caching method, only dij is sent to sij assuming that sij has the class of oij , i.e. operations for manipulating dij . It is problem how to maintain the mutual consistency of dijk among sij and sijk . The problem is discussed already by many papers [3, 7]. As stated here, if oij is to be disconnected, there are two migration ways, i.e. (1) opij and dij of oij in sij are migrated to another station or (2) opijk invoked by opij and dijk are migrated from sijk . It depends on which object oij or oijk coordinates the computation. If oij coordinates the computation on oij and oijk , oij is superior to oijk . An object which is not superior is migrated to a superior object. For example, if oij is in the mobile handy station and a user interactively manipulates oijk through oij , oij is superior to oijk , i.e. oijk is migrated into sij . If neither oij nor oijk are superior, oij and oijk are equivalent . If oij and oijk are equivalent, the following strategy to select one from oij and oijk is adopted.
[Selection of objects]
(1) If either oij or oijk is updated, the object whose state is not changed is moved to the other. (2) If a volume of operation and data to be sent to sijk is smaller than oij , oijk is migrated to sij . Otherwise, oij is migrated to sijk .2
3.3 Replication of objects Suppose that oij is replicated into multiple replicas o1ij ; : : : ; olijij . If one replica ohij being manipulated is disconnected, another ogij is used on behalf of ohij as shown in Fig. 3. In this paper, we assume that the objects are fully replicated, i.e. ohij and ogij are the same as oij . If ohij is to be disconnected, opi can invoke
opij in ogij . Here, the current state of ohij has to be sent to ogij . On receipt of the states of dij and opij , the states are restored to dij and opij in ogij and then ogij starts to compute opij for the current state received from ohij . Another way is to abort opi . By the abortion of opi , opij and opijk are aborted. Then, opi is restarted and opi invokes opij in ogij again. oi
o ijk
opi di
o ij
o ijk
opij
op ijk
si d ij Fig. 2.
op ijk
s ij
d ijk
d ijk
oi
o hij
opi
opij
op ijk
di
d ij
d ijk
g
s ijk
si
s ijk
4 Operations on Mobile Objects
o ij opij
Migration of oijk to sij
s hij
o ijk
g
s ij
d ij Fig. 3.
Replication of oij
4.1 Less-quali ed operations Suppose that an object oij is replicated to l( 2) replicas o1ij ; : : : ; olij , where each replica ohij is stored in a station shij (h = 1; : : : ; l). Let r(oij ) be f o1ij ; : : : ; olij g. Suppose that oi manipulates oij . According to the movement of the replica ohij , the quality of service (QoS) supported by ohij is changed. oi selects one replica ohij in r(oij ) as follows. Then, opi invokes the operation opij in ohij . [Selection of the replica] (1) oi sends Rq-Q messages to all the replicas o1ij ; : : : ; olij . (2) On receipt of Rq-Q from oi, each replica okij sends back an Rp-Q message with QoS of okij to oi (k = 1; : : : ; l). (3) If oi receives the Rp-Q messages from the replicas, oi selects one replica ohij with the best QoS among them. 2 This method implies larger communication overhead to broadcast Rq-Q messages. Hence, we adopt the following heuristics to select the replica. [Selection of the replica] (1) If there is a replica okij connected by oi with the wireless channel, okij is selected. If there are multiple replicas, one replica okij which supports oi with the best QoS among them is selected. (2) Otherwise oi broadcasts an Rq-Q message by the selection algorithm. 2 Another way is that one coordinator replica, o1ij monitors the change of QoS of each replica okij . oi rst asks o1ij to nd the best replica for oi . Then, o1ij selects the best one, say okij . While opij is computed in okij , QoS of okij may be changed. If opij is lessquali ed, oi selects another replica of oij which supports better QoS than okij . [Resolution of the replicas] (1) If QoS of okij is being degraded for some time units, oi nds the best replica ohij which is better than okij by the selection procedure.
(2) If ohij is detected, oi requires okij to send the state of dij and opij to ohij . On receipt of the state from okij , oi restarts opij in ohij from the state restored.
2
4.2 Faulty replicas
One problem on considering the disconnected operations is how to dierentiate the disconnected objects from the faulty objects. Suppose that oij is faulty in Fig. 3. While the connection with oijk is closed, oijk cannot know whether oij is faulty or not because the connection is closed and there is no way to communicate with oij . We assume that the network is synchronous, i.e. the propagation delay is bounded, and the computations in the objects are synchronous. We adopt the following strategy to detect the faulty objects: [Detection of faulty objects] (1) The disconnected object oij sends periodically Alive massage to oi and oijk by using the connectionless communication. (2) After the disconnection, if oijk or oi does not receive any message from oij for some predetermined time units, oijk considers that oij is faulty. 2
4.3 Computation of QoS Since o manipulates oi by an operation opi , QoS is given as Q(oi:opj ; o). We would like to discuss how Q(oi :opj ; o) is computed. Since operations in objects are nested, Q(oi :opj ; o) depends on not only the computation of actions in o but also QoSs of operations invoked by opi . Suppose that opi invokes operations opi1 ; : : : ; opim of objects oi1 ; : : : ; oim , respectively. Q(oi:opi ; o) is fi (Q(oi1 : opi1 ; oi ); : : : ; Q(oim : opim ; oi ); q(opi ; o)). Here, q (opi ; o) denotes QoS required for opi to manipulate oi . fi is a function which gives QoS of opi from QoSs of opi1 ; : : : ; opim . There are kinds of QoS. The computation time of opi is obtained by adding the computation times of opi1 ; : : : ; opim and opi , i.e. fi is \+" if opi is computed sequentially. If opi1 ; : : : ; opim in opi are computed in parallel, QoS is obtained by taking the maximum one among of opi1 ; : : : ; opim . In order to compute QoS of opi , oi asks oij to send Q(oij :opij ; oi ) periodically or each time opi is invoked.
5 Type Based Optimistic Concurrency Control 5.1 Lock modes
Objects may be replicated by the replication and migration as presented. Here, for an object oi, let r(oi ) be a collection of replicas of oi , i.e. r(oi) = fo1i ; : : : ; olii g (li 2), where each oji is a replica of oi stored in a station sij . Before an operation opi is computed in oi , oi is locked. If oi is not locked, opi waits. Two operations opi and opj are compatible i the states obtained by computing opi and opj in any order are the same. In order to increase the concurrency, kinds of lock modes are introduced, e.g. read and write modes. The objects support more kinds of operations than read and write . An operation opi of oi is assigned a lock mode m(opi ). The compatibility relation among the lock modes is de ned as follows [11]. [De nition] For every pair of lock modes m1 and m2 supported by oi , m1 is compatible with m2 i an operation of m1 is compatible with one of m2 . 2 If m1 is not compatible with m2 , m1 con icts with m2 . Objects support various kinds of abstract operations like deposit and withdrawal while the database systems support only read and write operations.
Hence, various kinds of lock modes are supported by the objects. The precedence relation among the lock modes is formally de ned by Korth [11]. Here, let M0 be a set of lock modes supported by an object o. For each mode m in M0 , let c(m)( M0 ) be a set of modes which m is compatible with. [De nition] For every pair of modes m1 and m2 of an object o, m1 m2 (m1 is not more restricted than m2 ) i c(m1 ) c(m2 ). 2 Here, m1 m2 means that m2 is stronger than m1 . If neither m1 m2 nor m2 m1 , m1 and m2 are equivalent (m1 k m2). Here, m1 m2 if m1 m2 or m1 k m2 . Here, read write because c(read) = freadg c(write) = .
5.2 Optimistic locking
The typical scheme to maintain the mutual consistency among multiple replicas is the read-one and write-all (ROWA) principle. That is, read is issued to one replica while write is issued to all the replicas. If one replica ohi is locked in a read mode, ohi is read. On the other hand, if all the replicas could be locked in the write mode, all the replicas are written. In order to reduce the communication overhead, the optimistic approach [12] is adopted. In the optimistic two-phase locking (O2PL) protocol discussed by Carey [4] and Jing [9], one replica is locked by read but the replicas are not locked by write . When the transaction commits, the replicas are locked by write . More abstract types of operations are considered in the objects than read and write . Secondly, the operations change the state of the object or not. If an operation op does not change the state of o, op can be computed in only one replica of o. Otherwise, op has to be computed in all the replicas. Thirdly, the operations are nested. Suppose that an operation opi in oi invokes opij in oij and oi has two replicas o1i and o2i . If opi is computed in o1i and o2i , opij is invoked twice. It implies the inconsistency among oi and oij . Hence, if an operation opi in an object oi invokes another operation, opi has to be computed in only one replica ohi and the state obtained by computing opi in the replica ohi has to be transferred to the other replicas. [Optimistic locking] An operation op of a mode m1 is issued to o. (1) If m1 m2 for every mode m2 of o, i.e. m1 is minimum, one replica ok in r(o) is locked. Then, op is computed in ok if op does not change the state of o, otherwise op is computed in all the replicas, (2) Otherwise, all the replicas in r (o) are locked and op is computed in all the replicas.2 All the replicas are locked by the operations whose modes are not minimum.
5.3 Optimistic type-based locking
We adopt the optimistic approach named optimistic type-based locking (OTL) to reduce the communication overhead. We assume that the less restricted the operations are, the more often they are invoked. Each operation op locks some number of replicas rather than locking all the replicas in r(o). The more restricted the operation mode is, the more replicas are locked. For each operation opi in oi , a number q(opi ) of replicas to be locked is given as follows. q (opi ) < q (opj ) if m(opi ) m(opj ). 1 q(opi ) li . For every opj , if m(opi ) m(opj ), q (opi ) = 1.
For example, suppose that there are ve replicas of an object oi which has operations opi1 , opi2 , and opi3 . Suppose that m(opi1 ) m(opi2 ) m(opi3 ). q (opi1 ) = 1, q(opi2 ) = 2, and q (opi3 ) = 3. Before computing opi2 , two replicas are locked. An operation opi locks an object oi by the following scheme.
[Locking scheme]
(1) Before computing opi, q (opi ) replicas in r (oi ) are locked in a mode m(opi ). Here, let s(opi ) be a subset of replicas in r(oi ) which are to be locked here. The replicas with better QoS are selected to be locked as discussed in the preceding subsection. (2) If all replicas in s(opi ) are locked, opi is computed. (a) If opi invokes operations, opi is computed in one replica in s(opi ). (b) Otherwise, opi is computed in all the replicas. (3) If some replica in s(opi ) is not locked, opi aborts.2 Since a more restricted operation op locks more replicas, op is more often aborted if other more restricted operations are manipulating the replicas. We would like to discuss how an operation op invoking opi commits. The commitment of opi on multiple replicas is controlled by the two-phase commitment [2]. One replica, say o1i in s(opi ), is the coordinator and the other replicas are the participants.
[Commitment]
(1) o1i sends a Prepare message to all the replicas. The participant oji which is not locked by opi , i.e. oji in r(oi ) 0 s(opi), is locked in the mode m(opi ) on receipt of Prepare . If locked, oji sends back Yes to o1i . (2) If some oji in r(oi ) 0 s(opi ) is not locked, oji sends No to o1i . (3) If o1i receives Yes from all the participants, o1i sends Commit to all the participants. If o1i receives No from some participant, o1i sends Abort to the participants sending Yes . (4) If the participant oji receives Abort , oji abort opi if oji had computed opi. (5) If oji receives Commit , all the replicas in r(oi ) 0 s(opi ) are locked. (a) Unless opi invokes operations in other objects, opi is computed in all replicas in r(oi ) if opi changes the state, otherwise opi commits. (b) Otherwise, the state of the replica where opi is computed is sent to all the replicas. On receipt of the state, the replicas restore the state. 2 Suppose that opi in ohi and oki invokes opij . If opi is computed in ohi and oki , opij is computed twice. In order to avoid the iterated computation, opi is computed in only one replica, say oi . The state of oi is sent to all the other replicas of oi . If opi commits, all the locks on the replicas are released.
6 Evaluation
We would like to evaluate the optimistic type-based (OTL) locking scheme by comparing with ROWA in terms of the number of transactions aborted and the number of lock requests. Here, let o be an object supporting operations op1 ; : : : ; oph , which is replicated into replicas o1 ; : : : ; ol , i.e. r(o) = fo1 ; : : : ; ol g. Suppose that m(opi) m(opj ) (i < j ). Let f (opi ) be a probability that opi is
issued to o. Here, f (op1 )+ : : : + f (oph ) = 1. q (opi ) denotes the number of replicas to be locked by opi in OTL. Here, q(op1 ) = 1, q (oph ) = l, and q (opi ) q(opj ) if i < j , i.e. m(opi) m(opj ). Suppose that the op1 ; : : : ; oph are randomly issued to o. Let AO be a probability that an operation is aborted in OTL. If at least one kind of operation sends the lock request to one replica, the operations sending the lock requests are aborted. Hence, AO is given as 1 0 hi=1 (1 0 f (opi ) q(opi )=l) 0 hi=1 [f (opi)q (opi)=l h j =1(j6=i) (1 0 f (opj )q (opj )=l)]. In OTL, opi locks q (opi) replicas. Let AT be a probability that an operation is aborted in ROWA. AT is obtained by assigning q(op1 ) with 1 and q (opj ) with l(j 2) in AO because only op1 locks one replica and the other operations lock all the replicas in r(o). Next, let us consider how many lock requests are sent to the replicas. Let LO and LT denote probabilities that each replica is locked in OTL and ROWA, respectively. LO is hi=1 f (opi )q(opi )=l. LT is f (op1 )=l +(f (op2 )+ : : : + f (opk )) = 1 0 f (op1 )(l 0 1)=l. A0 ; AT ; L0 ; and LT are computed for the number l of replicas where h = 5, i.e. o has ve operations. Here, q(opi) = dl=2h0i e(i = 1; : : : ; h); f (op1 ) = 0:4; f (op2 ) = 0:2; f (op3 ) = 0:2; f (op4 ) = 0:1; f (op5 ) = 0:1. Fig. 4 and Fig. 5 show AO and AT , and LO and LT for the number l of replicas, respectively. These gures show that less number of transactions are aborted and less number of lock requests are issued in OTL than ROWA.
Q
Q
P
P
0.3
1 A_O(l) A_T(l)
L_O(l) L_T(l) 0.9
0.25
0.8
lock pro.
abort pro.
0.2
0.15
0.7
0.6
0.1 0.5
0.05
0.4
0
0.3 1
2
Fig. 4.
3 l
4
Probability of abort
5
1
2
Fig. 5.
3 l
4
5
Probability of lock
7 Concluding Remarks
In this paper, the mobile object is modeled to be one whose QoS is changed according to the movement of the object. We have discussed how to support QoS required by users where QoSs supported by the objects are changed. We have also presented general ways for moving objects, i.e. migration and replication. We have discussed how to support nested transactions manipulating replicated and mobile objects in the distributed system. We have discussed the optimistic two-phase locking to maintain the mutual consistency among the replicas. Here, the read-one and write-all principal is extended so that the objects can support more kinds of abstract operations than read and write and the operations are nested.
References
1. Badrinath, B. R., Acharya, A., and Imielinski, T., \Structuring Distributed Algorithms for Mobile Hosts," Proc. of the 14th ICDCS, 1994, pp. 21{28.
2. Bernstein, P. A., Hadzilacos, V., Goodman, N., \Concurrency Control and Recovery in Database Systems," Addison-Wesley, 1987. 3. Barbara, D. and Imielinski, T., \Sleepers and Workaholics: Caching Strategies in Mobile Environments," Proc. of the ACM SIGMOD, 1994, pp. 1{12. 4. Carey, J. M. and Livny, M., \Con ict Detection Tradeos for Replicated Data," ACM TODS, Vol. 16, No. 4, 1991, pp.703{746. 5. Gray, J., \The Transaction Concept : Virtues and Limitations," Proc. of VLDB, 1981, pp. 144-154. 6. Gruber, R., Kaashoek, F., Liskov, B., and Shrira, L., \Disconnected Operation in the Thor Object-Oriented Database System," Proc. of IEEE Workshop on Mobile Computing Systems and Applications, 1994, pp. 51{56. 7. Huang, Y., Sistla, P., and Wolfson, O., \Data Replication for Mobile Computers," Proc. of the ACM SIGMOD, 1994, pp. 13{24. 8. Imielinski, T., Viswanathan, S., and Badrinath, B. R., \Energy Ecient Indexing on Air," Proc. of the ACM SIGMOD, 1994, pp. 25{36. 9. Jing, J., Bukhres, O., and Elmagarmid, A., \Distributed Lock Management for Mobile Transactions," Proc of the 15th ICDCS, 1995, pp. 118{125. 10. Kistler, J. J. and Satyanaranyanan, M., \Disconnected Operation in the Coda File System," ACM Trans. on Database Systems, Vol. 10, No. 1, 1992, pp. 2{25. 11. Korth, H. F., \Locking Primitives in a Database System," JACM, Vol. 30, No. 1, 1983, pp. 55-79. 12. Kung, H. T. and Robinson, J. T., \On Optimistic Methods for Concurrency Control," ACM Trans. on Database Systems, Vol. 6, No. 2, 1981, pp. 213{226. 13. Lu, Q. and Satyanaranyanan, M., \Isolation-Only Transactions for Mobile Computing," ACM Operating Systems Review, Vol. 28, No. 2, 1994, pp. 81{87. 14. Moss, J. E., \Nested Transactions : An Approach to Reliable Distributed Computing," The MIT Press Series in Information Systems, 1985. 15. Tanaka, R. and Tsukamoto, M., \A CLNP-based Protocol for Mobile End Systems within an Area," Proc. IEEE ICNP, 1993, pp. 64{71. 16. Teraoka, F., Yokote, Y., and Tokoro, M., \A Network Architecture Providing Host Migration Transparency," Proc. of ACM SIGCOM, 1991, pp. 209{220. 17. Yasuzawa, S. and Takizawa, M., \Uncompensatable Deadlock in Distributed Object-Oriented Systems," Proc. of the Int'l Conf. on Parallel and Distributed Systems (ICPADS), 1992, pp. 150{157. 18. Yeo, L. H. and Zaslavsky, A., \Submission of Transactions from Mobile Workstations in Cooperative Multidatabase Processing Environment," Proc. of the 14th ICDCS, 1994, pp. 372{379.
This article was processed using the LaTEX macro package with LLNCS style