think of it like this:

a CPU can only do certain instructions (add, subtract, multiply,...)

Now if an instruction is loaded into the CPU it is put in a queue since a CPU can do only one thing at a time. (actually there are sevreal queues and waiting strategies for process switching) look at the 1st PP slides

now one core means that you can do only one thing at a time. (because the CPU is so fast it looks like you are running and doing multiple things at a time)

If you have a dual core processor it can do 2 things at a time. But there are problems that can come with it.

original program:
add 1 to i
add 1 to i
write to memory

CORE 1
0:00:00 add 1 to i
0:00:01 write to memory

CORE 2
0:00:02 add 1 to i

Now assume that core 2 was buzy with other stuff and that te instruction of add 1 to i was delayed. Core one will write 1 to the memory whikle it had to be 2. thats why theire needs to be a whole lot of locking mechanisms, algoritmes to prevent this from happening.

Now it is mostly used to run processes that have noting to do with each other on the cores.


Not in the mood for cheese?
That excuse has more holes than a slice this fine Gorgombert!