Priorities may be static or dynamic. Static priorities are assigned at the time of creation, while dynamic priorities are based on the processes' behaviour while in the system. For example, the scheduler may favour I/O-intensive tasks so that expensive requests can be issued as early as possible.
A danger of priority scheduling is starvation, in which processes with lower priorities are not given the opportunity to run. In order to avoid starvation, in preemptive scheduling, the priority of a process is gradually reduced while it is running. Eventually, the priority of the running process will no longer be the highest, and the next process will start running. This method is called aging.