1. A mobile computing device comprising a processor, storage connected to the processor, and connections for receiving input data from input devices and for providing output data to output devices, the storage storing computer program instructions that, when executed by the processor, provide an operating system for the mobile computing device for managing access to resources of the mobile computing device by applications executed by the processor, the operating system, when executed, defining at least one user session wherein the at least one user session includes a plurality of contexts, each context of the plurality of contexts having separate bindings of the input devices and the output devices, the operating system being configured to: maintain information in storage about applications executed in the separate contexts; access information in storage about environmental conditions of the mobile computing device; and selectively limit operation of applications in each context according to the environmental conditions and the applications executed in both contexts.