Both Windows3.1 and Windows95 are multitasking system. Windows3.1 is said to be cooperative multitasking system. The scheduler can do a context switching only when the currently running process surrenders the CPU. The programmers of application programs are required to put yielding points in the program so that the application program hand the CPU back to the operating system regularly. In other words a process can hold the CPU for unreasonably long time. However there were good points for programmers of both operating systems and application programs. For instance the operating system code does not have to be reentrant, or an application program will not be preempted while it is running its critical section.
Windows95 is a both cooperative and preemptive multitasking system. Thread model is used in Windows95 and it is classified as kernel mode thread as its execution is controlled by system schedulers. There are two schedulers in Windows95; the primary scheduler which is responsible to calculate thread priorities, and the timeslice scheduler which calculates the timeslice allocation to each thread. These two schedulers work as follows: