I have already seen a simple algorithme that give garanties latencies responses.
If you have 3 tasks, A, B, C. A wants 50% of the lowest possible latency, B and C want only 25% of it.
So you have a list of rotating priority with [A,B,A,C]. So you could garanties the time between 2 accesses of the cpus.
Each time you need to take a decision the list of task rotate (or at fixed period of time), then you use the priorities like for usual fixed priorites task scheduler.