Assigning exclusivity and evicting processes from a CPU core

I have a need to move one process to a vacant core – but is the core vacant? Does it stay vacant? Step 1 – move the process to a core, Step 2 (which should happen before Step 1) is to see what core has least activity, evict the squatters to another core, then move the relevant process.