I/O bound processes are those processes which spends most of its processing time with I/O operation (may be disk I/O , Network I/O etc…) waiting for some event to occur .
ex:Most of the GUI based applications wait for a keystroke or a mouse click , They spend their most part of their execution time for these events to occur and do very less execution of instructions.
Processor bound processes are those processes which spend most of their execution time in executing the instructions rather than waiting for an I/O event to occur .
ex:A for loop
Deciding which process runs next, given a set of runnable processes is the fundamental decision that the scheduler should make .
When there are many processes that are waiting to be executed the scheduling algorithm of the kernel decides the next process in the queue to be executed.
A time slice will be allocated to each process depending on the process priority and policies after which the process will be suspended involuntarily(it is forced to suspend) ,and the next process to be executed is taken up, this gives the user a feel that all the processes are running concurrently.
The scheduling algorithm of the kernel prioritizes I/O based processes more than processor based processes.But the kernel does this in a creative manner so that it doesnt neglet processor based processes.