What is Concurrent Programming?

Slides:



Advertisements
Similar presentations
Threads, SMP, and Microkernels
Advertisements

Introduction to Operating Systems CS-2301 B-term Introduction to Operating Systems CS-2301, System Programming for Non-majors (Slides include materials.
Silberschatz, Galvin and Gagne  Operating System Concepts Chapter 5: Threads Overview Multithreading Models Threading Issues Pthreads Solaris.
Chapter 11 Operating Systems
Processes Part I Processes & Threads* *Referred to slides by Dr. Sanjeev Setia at George Mason University Chapter 3.
What is Concurrent Programming? Maram Bani Younes.
1 COMPSCI 110 Operating Systems Who - Introductions How - Policies and Administrative Details Why - Objectives and Expectations What - Our Topic: Operating.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 3: Operating Systems Computer Science: An Overview Tenth Edition.
Silberschatz, Galvin and Gagne  Operating System Concepts Chapter 3: Operating-System Structures System Components Operating System Services.
 2004 Deitel & Associates, Inc. All rights reserved. 1 Chapter 4 – Thread Concepts Outline 4.1 Introduction 4.2Definition of Thread 4.3Motivation for.
Silberschatz, Galvin and Gagne  2002 Modified for CSCI 399, Royden, Operating System Concepts Operating Systems Lecture 13 Threads Read Ch 5.1.
Computers Operating System Essentials. Operating Systems PROGRAM HARDWARE OPERATING SYSTEM.
Ihr Logo Operating Systems Internals & Design Principles Fifth Edition William Stallings Chapter 2 (Part II) Operating System Overview.
DISTRIBUTED COMPUTING. Computing? Computing is usually defined as the activity of using and improving computer technology, computer hardware and software.
Lecture 5: Threads process as a unit of scheduling and a unit of resource allocation processes vs. threads what to program with threads why use threads.
Chapter 4: Multithreaded Programming. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts What is Thread “Thread is a part of a program.
An operating system is the software that makes everything in the computer work together smoothly and efficiently. What is an Operating System?
Department of Computer Science and Software Engineering
Thread basics. A computer process Every time a program is executed a process is created It is managed via a data structure that keeps all things memory.
Slide 6-1 Chapter 6 System Software Considerations Introduction to Information Systems Judith C. Simon.
Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9 th Edition Chapter 4: Threads.
Page 1 2P13 Week 1. Page 2 Page 3 Page 4 Page 5.
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8 th Edition Chapter 4: Threads.
1 Chapter 5: Threads Overview Multithreading Models & Issues Read Chapter 5 pages
Chapter 2 Operating System Overview Dave Bremer Otago Polytechnic, N.Z. ©2008, Prentice Hall Operating Systems: Internals and Design Principles, 6/E William.
Lecture 5. Example for periority The average waiting time : = 41/5= 8.2.
CMPS Operating Systems Prof. Scott Brandt Computer Science Department University of California, Santa Cruz.
Chapter 4 – Thread Concepts
Chapter 4: Threads Modified by Dr. Neerja Mhaskar for CS 3SH3.
Introduction to threads
COMPSCI 110 Operating Systems
Chapter 4: Multithreaded Programming
OPERATING SYSTEM CONCEPT AND PRACTISE
Chapter 4: Threads.
Chapter 4: Threads.
Processes and threads.
Processes and Threads Processes and their scheduling
Chapter 4 – Thread Concepts
Chapter 2 Processes and Threads Today 2.1 Processes 2.2 Threads
Operating System (013022) Dr. H. Iwidat
Chapter 4: Multithreaded Programming
Lecture 21 Concurrency Introduction
Introduction to Operating System (OS)
Quick Introduction to OS
Chapter 4: Threads.
Operating System Concepts
Chapter 4: Threads.
Operating System Architecture OS
Chapter 15, Exploring the Digital Domain
Chapter 4: Threads.
What is Concurrent Programming?
Introduction to Operating Systems
Language Processors Application Domain – ideas concerning the behavior of a software. Execution Domain – Ideas implemented in Computer System. Semantic.
Threads Chapter 4.
Introduction to Operating Systems
Multiprocessor and Real-Time Scheduling
Multithreaded Programming
What is Concurrent Programming?
Operating Systems (CS 340 D)
Subject Name: Operating System Concepts Subject Number:
Chapter 4: Threads & Concurrency
The Main Features of Operating Systems
CS510 Operating System Foundations
Chapter 2 Operating System Overview
Chapter-1 Computer is an advanced electronic device that takes raw data as an input from the user and processes it under the control of a set of instructions.
Chapter 4: Threads.
Operating System Overview
Lecture Topics: 11/1 Hand back midterms
An Introduction to Operating Systems
Chapter 3: Process Management
Presentation transcript:

What is Concurrent Programming? Maram Bani Younes

Ordinary Program An "ordinary" program consists of data declarations, assignment and control-flow statements in a programming language. Modern languages include structures such as procedures and modules for organizing large software systems through abstraction and encapsulation, but the statements that are actually executed are still the elementary statements that compute expressions, move data and change the flow of control. These machine instructions are executed sequentially on a computer and access data stored in the main or secondary memories.

Concurrent Program A concurrent program is a set of sequential programs that can be executed in parallel. Process: the word for the sequential programs that comprise a concurrent program Program: the word for this set of processes. Parallel: systems in which the executions of several programs overlap in time by running them on separate processors. Concurrent: potential parallelism, in which the executions may, but need not, overlap. The parallelism may only be apparent since it may be implemented by sharing the resources of a small number of processors, often only one. Like any abstraction, concurrent programming is important because the behavior of a wide range of real systems can be modeled and studied without unnecessary detail.

Multitasking Multitasking is a simple generalization from the concept of overlapping I/O with a computation to overlapping the computation of one program with that of another. Multitasking is the central function of the kernel of all modern operating systems. A scheduler program is run by the operating system to determine which process should be allowed to run for the next interval of time. The scheduler can take into account priority considerations, and usually implements time-slicing, where computations are periodically interrupted to allow a fair sharing of the computational resources, in particular, of the CPU. You are intimately familiar with multitasking; it enables you to write a document on a word processor while printing another document and simultaneously downloading a file.

Multithreading Multitasking has become so useful that modern programming languages support it within programs by providing constructs for multithreading. Threads enable the programmer to write concurrent (conceptually parallel) computations within a single program. For example, interactive programs contain a separate thread for handling events associated with the user interface that is run concurrently with the main thread of the computation.

The Terminology of Concurrency The term process is used in the theory of concurrency, while the term thread is commonly used in programming languages. The process runs in its own address space managed by the operating system. The thread runs within the address space of a single process and may be managed by a multithreading kernel within the process. The term thread was popularized by pthreads (POSIX threads), a specification of concurrency constructs that has been widely implemented, especially on UNIX systems.

Multiple Computers (Multi-processor) The days of one large computer serving an entire organization are long gone. Today, computers hide in unforeseen places like automobiles and cameras. In your personal "computer" (in the singular) contains more than one processor: the graphics processor is a computer specialized for the task of taking information from the computer's memory and rendering it on the display screen. I/O and communications interfaces are also likely to have their own specialized processors. Thus, in addition to the multitasking performed by the operating systems kernel.

Multiple Computers (Multi-processor) Multiprocessors are systems designed to bring the computing power of several processors to work in concert on a single computationally intensive problem. Multiprocessors are extensively used in scientific and engineering simulation, for example, in simulating the atmosphere for weather forecasting and studying climate. The entire Internet can be considered to be one distributed system working to disseminate information in the form of email and web pages.

The Challenge of Concurrent Programming The challenge in concurrent programming comes from the need to synchronize the execution of different processes and to enable them to communicate. Independent and dependent processes : If the processes were totally independent, the implementation of concurrency would only require a simple scheduler to allocate resources among them. If an I/O process accepts a character typed on a keyboard, it must somehow communicate it to the process running the word processor, If there are multiple windows on a display, processes must somehow synchronize access to the display so that images are sent to the window with the current focus.

Challenges It turns out to be extremely difficult to implement safe and efficient synchronization and communication. When your personal computer "freezes up“ OR When using one application causes another application to "crash,“ The cause is generally an error in synchronization or communication. Since such problems are time- and situation-dependent, they are difficult to reproduce, diagnose and correct.

Conclusion We have defined concurrent programming informally, based upon your experience with computer systems. Our goal is to study concurrency abstractly, rather than a particular implementation in a specific programming language or operating system. (We Will Study It in JAVA environment). We have to carefully specify the abstraction that describe the allowable data structures and operations.

Review Sequential vs Concurrent Process vs Program Multithreading vs Multitasking Multiprocessor