Information Technology Reference
In-Depth Information
p
and now
p
is calling back processor
q
. The separate callback is only possible if
p
has
alockon
q
.However,
p
does not necessarily have this lock because the lock might be
in possession of the processor that locked
q
in the first place. Request queue locks and
call stack locks allow us to clarify the situation. Thus we propose a new lock model
with request queue locks and call stack locks.
The lock model used in Nienaltowski's work [25] is an abstraction of the new lock
model. The abstraction works under the assumption that no processor passes its locks.
Under this assumption each processor keeps its call stack lock. In this abstraction, the
request queue lock on a processor
p
is called the lock on
p
. As long as the call stack
lock on a processor
p
is in possession of
p
, a request queue lock on
p
in possession of a
processor
q
means that processor
p
will be executing new feature requests in the request
queue exclusively on behalf of
q
. This means that a request queue lock grants exclusive
access to all the objects handled by
p
. Transferring this insight to the abstraction, a lock
on processor
p
denotes exclusive access to the objects handled by
p
.
The formalization defines the ADT
PROC
for processors. A processor has an identifier
stored in the query
id
.
The constructor
make
returns a new processor with a fresh identifier. The fresh iden-
tifier is defined through the query
new id
.
make
:
PROC
axioms
make
.
id
=
new id
The ADT
PROC
is very simple. It neither takes care of the mapping from processors
to the handled objects nor does it take care of the locks. These aspects are taken care of
by the ADT for regions.
Mapping of processors to objects and locking.
This section introduces the ADT
REG
for regions. This ADT declares a query
procs
that keeps track of all the processors in the
system. The query
handled objs
defines a set of handled objects for each processor in
procs
. Finally, the query
last added proc
denotes the last processor that has been added
to
procs
.
procs
:
REG
→
SET
[
PROC
]
handled objs
:
REG
→
PROC
SET
[
OBJ
]
k
.
handled objs
(
p
)
require
k
.
procs
.
has
(
p
)
last added proc
:
REG
PROC
k
.
last added proc
require
¬
k
.
procs
.
is empty
Next to the queries that are concerned with the mapping from processors to objects,
there are a number of queries that deal with locking. The feature
rq locked
states
whether the request queue of a processor in
procs
is locked or not. Similarly, the feature
cs locked
states whether the call stack is locked.
Search WWH ::
Custom Search