* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Chapter
Survey
Document related concepts
Transcript
Introduction to Parallel Processing Chapter No.3 Program Programmer’s Perspective an ordered set of instructions O.S perspective an executable file stored in secondary memory, typically on a disk. Program Process From OS view, process relates to execution Process creation involves 4 major steps: setting up the process description allocating an address space loading the program into the allocated address space, and passing the process description to the scheduler Process Description O.S describe a process by means of a description table known as process control block (PCB) PCB contains all the information related to to the whole life cycle of a process like process identification, owner, process status, description of the allocated address space and so on. Different O.S uses different names for process description table like process table in UNIX, Process Information Block in OS/2, and Task control block in IBM mainframe operating systems. Allocating an Address Space Allocation of an address space to a process can be divided into two steps: sharing the address among the created processes (shared memory). Allocating address space to each process (per process address spaces). Loading the Program Into Allocated Address Space The executable program file is loaded into the allocated address space and this is done using the different memory management schemes adopted by the O.S. Passing the Process Description to the Scheduler The created process is passed to scheduler which allocates the processor to the competing processes. This is managed by setting up and manipulating queues of PCBs. The concept of process Process Creation Sub-models Simpler model used by IBM/PCP, IBM/360/DOS did not allow process to further breakdown into sub-processes. Process Spawning a process may create a new process called a child process. Child process can be created by the programmer by using standard process creation mechanisms. Spawned processes form a process hierarchy known as process tree. Process Spawning (Independent Processes) A B D C E Process Scheduling Sub-models Process Model Scheduling is performed on per process basis, i.e. the smallest work to be schedules is a process. Process-thread Model in this model smaller units of work is known as thread and they are scheduled as entities. Thread Thread, like a process is a sequence of instructions. smaller chunks of code (lightweight) threads are created within and belong to process and share the resource of the process. for parallel thread processing, scheduling is performed on a per-thread basis finer-grain, less overhead on switching from thread to thread. Thread Most of the O.S released in the 1980’s and 1990’s are based on process thread model such as OS/2, Windows NT or SunOS 5.0. Threads have similar life cycle to the processes and are mainly managed in the same way. Single-thread Process or Multi-thread (Dependent) Process Threads The Concepts of Concurrent Execution (N-client 1-server) •Concurrent execution is the temporal behavior of N-client 1 server model where one client is served at any given moment. Server t Server Clients Sequential nature Clients t Simultaneous nature The concepts of concurrent execution (N-client 1-server) Preemption rule Non preemptive preemptive Time shared Pre-emptive Prioritized Non pre-emptive Time-shared t Client Priotized Server Client Server Priority Parallel Execution N-client N-server model Synchronous: each server starts service at the same moment. Asynchronous: the servers do not work in concert. Synchronous (lock step) Clients Asynchronous Servers Clients Servers Concurrent and Parallel Programming Languages Sequential languages languages that do not support N-client model (C, Pascal, Fortran, PROLOG, LISP) Concurrent languages employ constructs to implement the N-client 1 server model by specifying concurrent threads and processes but lack language constructs to describe Nserver model (Ada, Concurrent Pascal, Modula-2, concurrent PROLOG). Concurrent and Parallel Programming Languages Data parallel language introduces special data structures that are processed in parallel, element by element (high performance Fortran, DAP Fortran, DAP PROLOG,Connection Machine LISP) Parallel languages extends the specifications of N-client model of concurrent languages with processor allocation language constructs that enable use of N-server model (Occam-2, 3L Parallel C, Strand-88) Types and levels of parallelism Available and utilized parallelism available: in program or in the problem solutions utilized: during execution Types of available parallelism functional arises from the logic of a problem solution data arises from data structures that allow parallel operations on their elements, such as vectors or metrices in their problem solution. Give rise to a parallel execution for data parallel part of computation. Levels of Available Functional Parallelism Parallelism at the instruction level (fine-grained) particular instructions of a program executed in parallel. Parallelism at the loop level (middle-grained) consecutive loop iterations are candidates for parallel execution. May be restricted due to data dependencies between subsequent lop iterations called recurrences. Parallelism at the procedure level (middle-grained) parallel execution of procedure. Parallelism at the program level (coarse-grained) multiple independent users are performing executions in parallel. Available and Utilized Levels of Functional Parallelism Available levels User (program) level Procedure level Loop level Instruction level 1. Exploited by architecture 2. Exploited by means of operating systems Utilized levels 2 User level Process level Thread level Instruction level 1 Utilization of Functional Parallelism Available parallelism can be utilized by architecture, instruction-level functional parallel architectures or instruction level parallel architectures ( ILP-architectures). compilers parallel optimizing compiler operating system multitasking Concurrent Execution Models Multithreading concurrent execution at the thread level. Multiple threads are generated for each process, and these threads are executed concurrently on a single processor under the control of one O.S. Multitasking process level concurrent execution. Multiprogramming user level concurrent execution. Timesharing user level concurrent execution. Concurrent Execution Models User level Multiprogramming time-sharing Process level Thread level Multitasking Multi-threading Utilization of Data Parallelism Using data-parallel architecture permits parallel or pipelined operations on data elements. Classification of Parallel Architectures Flynn’s classification SISD SIMD MISD (Multiple Instruction Single Date) MIMD Basic Parallel Technique Pipelining (time) A number of functional units are employed in sequence to perform a single computation. Each functional unit represent a certain stage of computation. Pipeline allows overlapped execution of instructions. It increases the overall processor’s throughput. Car Wash Example IN Soap cycle Rinse cycle Wax cycle Dry cycle Chevy Chevy gets Rinse Wax station Dry station IN soap station idle idle idle Soap Chevy gets Wax station Dry station station idle rinse idle idle Soap Rinse Chevy gets Dry station station idle station idle Wax idle Soap Rinse Wax Chevy gets station idle station idle station idle dry Ford IN Ford Rinse Wax Dry Chevy OUT gets soap station idle station idle station idle Car Wash Example IN Soap cycle Rinse cycle Wax cycle Dry cycle Chevy Chevy gets Rinse Wax station Dry station IN soap station idle idle idle Ford IN Ford gets Chevy gets Wax station Dry station soap rinse idle idle Volvo IN Volvo gets Ford gets Chevy gets Dry station soap rinse Wax idle Saturn gets Volvo gets Ford gets Chevy gets Saturn soap rinse Wax dry IN Toyota Toyota Saturn gets Volvo gets Ford gets Chevy OUT gets soap rinse wax dry IN Replication Replication (space) a number of functional units perform multiply computation simultaneously more processors more memory more I/O more computers e.g. array processors.