Locking protocols for hard real time systems have not generalized well from uniprocessors to multiprocessors. Bounding and reducing so-called "remote blocking" is widely recognized as an important problem for hard real time computing. We describe a combination of locking and versioning protocols adapted from database concurrency control, together with a "chopping" analysis to shorten critical sections. Selective application of chopping and versioning reduces remote blocking and relates constraints imposed by pure locking protocols for multiprocessors. The protocol ensures 1-version serializability. Using the same design time information required for schedulability analysis in pure locking protocols, the mixed locking and versioning protocol can be implemented using only simple data structures with small bounded overheads and worst case access times. We illustrate the protocol with examples adapted from the literature.