What exactly is Scheduling? Scheduling is the term used to describe the method which the operating system uses to choose the order which processed are handed to the processor. High Level Scheduling The high level scheduler (HLS) is the scheduler that controls the admission of jobs into the system. It is the scheduler that decides which new waiting jobs should be converted into processes and assigned the READY state. The READY state is the name given to a state of a process when it is ready for processor attention. It is part of a three state diagram which is beyond scope of this article (it is part of the process life cycle, which I will cover at a later date). Since the HLS is in control of assigning new jobs to processes, it is therefore responsible for ensuring the computer is not overloaded. Medium Level Scheduling Medium level scheduling is a funny old girl, in that it is only implemented into systems that allow processes to be swapped from memory and onto disk to reduce the system load. The medium level sheduler will only remoce process in the READY, or BLOCKED (WAITING I/O) state. Anything in the RUNNING state, since being active, will not be affected. Low Level Scheduling This is the most complex of the schedulers, and will be further investigated in my second article on scheduling. There are two main types of scheduling involved with the low level scheduler, they are the premptive schedule, or the non-preemptive schedule. Preemptive Policies Preemtive scheduling allows the LLS is allowed to remove a process from RUNNING state so that it can give another process time with the processor. Non-Preemptive Policies Non-Preemptive scheduling does not allow the LLS to remove a process once it has hit the RUNNING state, that process will run until it finishes or incurs an I/O request. The problem with preemptive scheduling is that it generates larger loads since it involves more switching. It has the advantage though, of stopping long processes hogging processor time. Cooperative Scheduling I include this section purely out of my own interest, and is another reason to dislike the mindset of the Windows developers. In early versions of Windows, before Windows 95, they appeared to have a non-preemptive scheduling policy implemented, but it was a method known as cooperative scheduling, which involved the control of the processor to be handled by the applications, rather than the operating system. It is fairly easy to see what happened with this system eh? In the next article I will delve into the Low Level Scheduling Policies, so check back soon.
This article was originally written by Sliptop |