The goal of all disk scheduling algorithms is to reduce seek time.
In a real life scenario, multiple disk access requests are placed, and the expectation is that accesses are completed as fast as possible.
As to who performs disk scheduling, lets recall who is our Resource Manager... the OS. These algorithms are coded inside the OS. (disclaimer - this is my understanding, kindly verify)
(in these algorithms we assume we already have the requests lined up.)