1. A method of operating a system comprising multiple virtual machines (VMs), each VM capable of running a plurality of execution processes, said system including at least one object which is shared between the VMs so that it is accessible from two or more VMs, and at least one non-shared object which is accessible only from a single VM, said method performing lock operations on a shared object by the steps of: detecting that an object is a shared object; responsive to said detection, utilising a monitor to control local access to a shared object for an execution process, said monitor being on the same VM as said execution process; and updating a data structure to associate said monitor with the shared object.