Appeal 2007-2127 Reexamination Control No. 90/006,621 In preemptive multithreading, Thread 1 is interrupted at the end of its timeslice, the Thread 1's context is saved (including Thread 1's program counter), Thread 2's context is retrieved and loaded into the CPU (including Thread 2's program counter indicating the next instruction to be executed), Thread 2 executes until the end of its timeslice, whereupon Thread 2's context is saved, Thread 1's context is retrieved and loaded into the CPU, and the process repeats. Each thread executes an incremental portion of its task during each timeslice. At any point in time, both threads are executing at some point between their beginning and end, except for needing to share the CPU—this is what is meant by concurrent execution of threads. In the 1982 application, the compiler is interrupted, registers are saved, the editor interrupt service routine executes until it finishes, the registers are restored, and control is returned to the compiler by an instruction in the interrupt service routine. According to what Patent Owner states to be the normal operation, the editor finishes before the end of the timeslice and control returns to the compiler. As seen in the middle figure, the compiler is then interrupted at the next interrupt. Because of the varying amounts of time required by the editor, depending on the operation to be performed and whatever else is happening on the computer, the editor and compiler do not execute for equal periods of time. If the editor takes longer than a timeslice, the editor continues to execute past the interrupt time since interrupts are disabled as shown by the bottom figure. The editor is never interrupted but always finishes executing and returns control to the compiler. Importantly, the compiler and editor do not execute concurrently as that term is defined in "multithreading." Concurrent execution requires that 72Page: Previous 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 Next
Last modified: September 9, 2013