There are two section for this problem one is what is a background process and how the scheduling of background and foreground is maintained.
A program that is running without user input. A background process can be identified as one whose group ID differs from its terminal group ID. Some background processes daemons, for example never require user input. Others are merely in the background temporarily while the user is busy with the program presently running in the foreground.
Scheduling of background and foreground process is maintained by the multilevel scheduling queues. Scheduling between these queues is done based on fixed priority preemptive scheduling and each queue has its own scheduling algo like foreground has Round Robin and background has round-robin or FCFS (not sure between these two for the background queue)