Fair Scheduling of Real-Time Tasks on Multiprocessors