1) Priority(A) > Priority(B), A runs and B doesn't
2) Priority(A) = Priority(B), A&B run in RR
3) When a job enters the system, it is placed at the highest priority
4a) If a job uses up an entire time slice while running, its priority is reduced
4b) If a job gives up the CPU before the time slice is up, stays at the same priority level
5) After some time period S, move all jobs in the system to the topmost queue
Updated 4: Once a job uses its time allotment at a given level, its priority is reduced