It depends on the context.
In an architecture context, you can have a shared mem. architecture, vs. a distributed memory one. The shared memory architecture means that all CPUs will be able to directly access the entire memory, and they all see that entire memory space. In the distributed memory architecture, the CPUs are usually in different physical machines, and they only see their local chunk of memory, not the entire memory space; however, they may be able to access other CPU's local memory chunks, but NOT directly - only via the other CPUs.
Obviously, this is a simplified and generalized explanation ;)
Now, in the "software" context, say you have one machine, and a bunch of programs. Normally, as a basic OS security design, processes will run in separate memory spaces, and won't be able to access each other's memory. But if, for some reason, you WANT some of your processes to be able to access a common chunk of memory, you can declare a region of memory as "shared", and all the other processes will be able to access it directly.
Again, this is a simplified explanation.
I hope this at least answers the first half of your question.
Your question was however more than vague, and I am not sure what you mean by unsharing. What's your context ?
In the second case I mentioned, it's pretty obvious, if you don't want that shared memory, you don't declare it :) But I'm guessing your context is a different one.
So, more details are required.
Bookmarks