Cross-OS calls are API methods (or properties) executing in the exclusive partition, and need to communicate with lower level services in the system OS, in order to retrieve data back into the exclusive partition. Please see figure below for Xbox One system architecture.

Cross-OS calls can take a significant amount of time, up to several milliseconds. Game developers need to be aware of the APIs that make cross-OS calls and their impact on title performance. These APIs, such as User::Users, should not be called multiple times per frame. Instead, API calls should be executed asynchronously or on a worker thread, and their results aggressively cached. For APIs that might take a long time to complete, subscribing to events that notify system changes is preferred to polling. For example, use the UserAdded and UserRemoved events rather than polling User::Users to track when the collection of Users has changed.
Also preferred are batched APIs operating on multiple entities when available, or API calls that return aggregate structs in addition to individual properties. Some examples of the batch APIs vs single APIs are AreChunksInstalled vs IsChunkInstalled in PackageTransferManager, and GetRawCurrentReading vs. GetCurrentReading in IGamepad. Always Check the availability of batch methods when making cross-VM calls.
For more information and best practices see the following XFest 2014 presentations:
Cross-OS Calls for Users and Gamepad related classes
A list of the User and Gamepad related class members that make cross-OS calls.
All other cross-OS classes
A list of all other classes in the Exclusive OS that make cross-OS calls.