1a) Thread's state is saved, a new thread is retrieved and executed Does not change the state of the PCB 1b) Kernel saves the context of the old process in its PCB Loads the saved context of the new process scheduled to run 2. User Level - Faster - User Application generated and without kernel support - Kernel is not able to see user level threads Kernel Level - Flexible - Supported and managed directly by o/s - Understood by the kernel 3. Short term - Select job from ready queue to execute - Always executing frequently to keep CPU busy Medium term - Used in time sharing systems - Advantageous to remove processes from memory - Reduce multiprogramming - Process can be swapped - Allocates job that maximises resources to make for time slice Long term - Alot of batch jobs - Jobs are spoold and kept for later execution - Executes infrequently 4. Process Resources - Has its own copy of the code(program) - Has its own resources allocated - Does not share its resources with other processes Thread - Shares the code(program) no copy - Executing a new program will restructure the program in the process - Thread has its own specific variables as well as a PC - Threads are created within a process - All threads share the same resource of the process 5. - Execution of multiple instances of the same program - Load up a webpage by sharing data for different users at the same time - A GUI 6. - Accounting applications - Programs which require sequential processing 7. Same as process context switch 8. User thread saved and load a new thread but the process continues executing