A scheduler performs two key functions: selecting which ready process to execute next (CPU scheduling) and specifying the time slice duration (how long each process runs). Waiting for an event is a process state (blocked/waiting), not a scheduler function - the scheduler merely selects from ready processes.