What is Concurrent Programming? Maram Bani Younes.

Slides:



Advertisements
Similar presentations
Threads, SMP, and Microkernels
Advertisements

Concurrent and Distributed Systems Introduction to CET306 Harry R. Erwin, PhD University of Sunderland.
Introduction to Operating Systems CS-2301 B-term Introduction to Operating Systems CS-2301, System Programming for Non-majors (Slides include materials.
Chair of Software Engineering OOSC - Summer Semester Object-Oriented Software Construction Bertrand Meyer.
Silberschatz, Galvin and Gagne  Operating System Concepts Chapter 5: Threads Overview Multithreading Models Threading Issues Pthreads Solaris.
Chair of Software Engineering ATOT - Lecture 25, 30 June Advanced Topics in Object Technology Bertrand Meyer.
Chapter 11 Operating Systems
Introduction. Why Study OS? Understand model of operation –Easier to see how to use the system –Enables you to write efficient code Learn to design an.
SOFTWARE.
Processes Part I Processes & Threads* *Referred to slides by Dr. Sanjeev Setia at George Mason University Chapter 3.
Computer for Health Sciences
Operating System A program that controls the execution of application programs An interface between applications and hardware 1.
1.1 1 Introduction Foundations of Computer Science  Cengage Learning.
Operating System Overview Dr. Sunny Jeong & Mr. M.H. Park Operating Systems: Internals and Design Principles, 6/E William Stallings.
1 COMPSCI 110 Operating Systems Who - Introductions How - Policies and Administrative Details Why - Objectives and Expectations What - Our Topic: Operating.
Chapter 6 Operating System Support. This chapter describes how middleware is supported by the operating system facilities at the nodes of a distributed.
Threads, Thread management & Resource Management.
Operating System Concepts Ku-Yaw Chang Assistant Professor, Department of Computer Science and Information Engineering Da-Yeh University.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 3: Operating Systems Computer Science: An Overview Tenth Edition.
Fall 2000M.B. Ibáñez Lecture 01 Introduction What is an Operating System? The Evolution of Operating Systems Course Outline.
1 COMPSCI 110 Operating Systems Who - Introductions How - Policies and Administrative Details Why - Objectives and Expectations What - Our Topic: Operating.
Processes and Threads Processes have two characteristics: – Resource ownership - process includes a virtual address space to hold the process image – Scheduling/execution.
Silberschatz, Galvin and Gagne  Operating System Concepts Chapter 3: Operating-System Structures System Components Operating System Services.
Chapter 101 Multiprocessor and Real- Time Scheduling Chapter 10.
Operating Systems. Definition An operating system is a collection of programs that manage the resources of the system, and provides a interface between.
 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 System Concepts and Architectures 2.3 Services Fall 2011 Student: Fan Bai
DISTRIBUTED COMPUTING. Computing? Computing is usually defined as the activity of using and improving computer technology, computer hardware and software.
CS333 Intro to Operating Systems Jonathan Walpole.
Chapter 4: Threads. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Chapter 4: Threads Overview Multithreading.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
Operating Systems Objective n The historic background n What the OS means? n Characteristics and types of OS n General Concept of Computer System.
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
Application Software System Software.
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.
CGS 3763 Operating Systems Concepts Spring 2013 Dan C. Marinescu Office: HEC 304 Office hours: M-Wd 11: :30 AM.
Faculty of Sciences and Social Sciences HOPE Chapter 2 Operating System Overview Stewart Blakeway FML
Slide 6-1 Chapter 6 System Software Considerations Introduction to Information Systems Judith C. Simon.
Processes and Threads MICROSOFT.  Process  Process Model  Process Creation  Process Termination  Process States  Implementation of Processes  Thread.
Silberschatz, Galvin and Gagne ©2013 Operating System Concepts – 9 th Edition Chapter 4: Threads.
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8 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.
Threads by Dr. Amin Danial Asham. References Operating System Concepts ABRAHAM SILBERSCHATZ, PETER BAER GALVIN, and GREG GAGNE.
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8 th Edition Chapter 4: Threads.
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.
Chapter 4 – Thread Concepts
OPERATING SYSTEM CONCEPT AND PRACTISE
Processes and Threads Processes and their scheduling
Chapter 4 – Thread Concepts
Chapter 4: Multithreaded Programming
Operating System Concepts
Chapter 15, Exploring the Digital Domain
What is Concurrent Programming?
What is Concurrent Programming?
Introduction to Operating Systems
Threads Chapter 4.
Introduction to Operating Systems
Multithreaded Programming
What is Concurrent Programming?
CS510 Operating System Foundations
Chapter 2 Operating System Overview
Chapter 4: Threads.
Presentation transcript:

What is Concurrent Programming? Maram Bani Younes

Ordinary Program An "ordinary" program consists of data declarations and 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; instead, 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.

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 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. If the processes were totally independent, the implementation of concurrency would only require a simple scheduler to allocate resources among them. But if an I/O process accepts a character typed on a keyboard, it must somehow communicate it to the process running the word processor, and 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 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

The Concurrent Programming Abstraction