Ex Parte 5694604 et al - Page 39


                Appeal 2007-2127                                                                                  
                Reexamination Control No. 90/006,621                                                              
                                    l. Multithreaded versus sequential programs                                   
                       A sequential or linear program has a single thread of execution that                       
                executes instructions from the start to the finish with no simultaneity or                        
                overlap among instructions (no concurrency); there is only one program                            
                counter that traces the path of execution of instructions through the program.                    
                By contrast, the defining characteristic of multithreading is that multiple                       
                threads execute instructions concurrently, i.e., more than one thread is                          
                executing at the same time, and each thread may be executing instructions in                      
                a different part of the program, as indicated by its individual program                           
                counter.  If there was a processor available for each thread, all threads could                   
                run simultaneously at exactly the same time, but, for a machine with one                          
                processor, the threads must take turns running their tasks a little at a time.                    
                As stated in LaFore, Peter Norton's Inside OS/2, page 134:                                        
                       A computer program, when it is running, executes a sequence of                             
                       instructions which are stored in the computer's memory.  This                              
                       activity—executing a sequence of stored instructions—is called a                           
                       thread, or sometimes a thread of execution.  Think of an instruction                       
                       pointer that points to the next instruction to be executed.  Generally                     
                       the instruction pointer moves forward through memory, pointing to                          
                       each instruction in sequence, but sometimes it jumps to a different                        
                       part of memory (to accommodate loops, function calls, and other                            
                       non-sequential activities).  This instruction pointer tracks the activity                  
                       of a particular thread.                                                                    
                              When a process is started it begins executing a single                              
                       thread. . . .  However, . . . a thread can create a new thread.  Both                      
                       threads can then run at the same time.  What does this mean?  Again,                       
                       imagine that each thread has its own instruction pointer, showing                          
                       where it is in the instruction sequence in memory.  The scheduler lets                     
                       one instruction pointer move through memory for a while, then the                          


                                                       39                                                         

Page:  Previous  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  Next

Last modified: September 9, 2013