Page 552 - (ISC)² CISSP Certified Information Systems Security Professional Official Study Guide
P. 552

reduced.

               Multiprogramming is considered a relatively obsolete technology and
               is rarely found in use today except in legacy systems. There are two

               main differences between multiprogramming and multitasking:

                    Multiprogramming usually takes place on large-scale systems, such
                    as mainframes, whereas multitasking takes place on personal
                    computer (PC) operating systems, such as Windows and Linux.

                    Multitasking is normally coordinated by the operating system,
                    whereas multiprogramming requires specially written software

                    that coordinates its own activities and execution through the
                    operating system.

               Multithreading Multithreading permits multiple concurrent tasks
               to be performed within a single process. Unlike multitasking, where
               multiple tasks occupy multiple processes, multithreading permits
               multiple tasks to operate within a single process. A thread is a self-
               contained sequence of instructions that can execute in parallel with

               other threads that are part of the same parent process. Multithreading
               is often used in applications where frequent context switching between
               multiple active processes consumes excessive overhead and reduces
               efficiency. In multithreading, switching between threads incurs far less
               overhead and is therefore more efficient. Many Intel CPUs since the
               2002 release of Xeon included the proprietary multithreading
               technology known as hyperthreading, which is the ability to virtualize

               two processors per physical core in order to allow for the concurrent
               scheduling of tasks. In modern Windows implementations, for
               example, the overhead involved in switching from one thread to
               another within a single process is on the order of 40 to 50 instructions,
               with no substantial memory transfers needed. By contrast, switching
               from one process to another involves 1,000 instructions or more and

               requires substantial memory transfers as well.

               A good example of multithreading occurs when multiple documents
               are opened at the same time in a word processing program. In that
               situation, you do not actually run multiple instances of the word
               processor—this would place far too great a demand on the system.
               Instead, each document is treated as a single thread within a single
   547   548   549   550   551   552   553   554   555   556   557