Introduction to Operating Systems and Concurrency.

Slides:



Advertisements
Similar presentations
Processes and Threads Chapter 3 and 4 Operating Systems: Internals and Design Principles, 6/E William Stallings Patricia Roy Manatee Community College,
Advertisements

Threads, SMP, and Microkernels
More on Processes Chapter 3. Process image _the physical representation of a process in the OS _an address space consisting of code, data and stack segments.
Critical Sections and Race Conditions. Administrivia Install and build Nachos if you haven’t already.
Threads, SMP, and Microkernels Chapter 4. Process Resource ownership - process is allocated a virtual address space to hold the process image Scheduling/execution-
Review: Chapters 1 – Chapter 1: OS is a layer between user and hardware to make life easier for user and use hardware efficiently Control program.
CMPT 300: Operating Systems I Dr. Mohamed Hefeeda
1 School of Computing Science Simon Fraser University CMPT 300: Operating Systems I Dr. Mohamed Hefeeda.
OS Fall ’ 02 Introduction Operating Systems Fall 2002.
1 CS 333 Introduction to Operating Systems Class 2 – OS-Related Hardware & Software The Process Concept Jonathan Walpole Computer Science Portland State.
OS Spring’03 Introduction Operating Systems Spring 2003.
1 Last Class: Introduction Operating system = interface between user & architecture Importance of OS OS history: Change is only constant User-level Applications.
Operating Systems CS208. What is Operating System? It is a program. It is the first piece of software to run after the system boots. It coordinates the.
1 Chapter 4 Threads Threads: Resource ownership and execution.
1 Process Description and Control Chapter 3 = Why process? = What is a process? = How to represent processes? = How to control processes?
A. Frank - P. Weisberg Operating Systems Introduction to Tasks/Threads.
Threads CS 416: Operating Systems Design, Spring 2001 Department of Computer Science Rutgers University
OS Spring’04 Introduction Operating Systems Spring 2004.
1 Threads Chapter 4 Reading: 4.1,4.4, Process Characteristics l Unit of resource ownership - process is allocated: n a virtual address space to.
ThreadsThreads operating systems. ThreadsThreads A Thread, or thread of execution, is the sequence of instructions being executed. A process may have.
Basics of Operating Systems March 4, 2001 Adapted from Operating Systems Lecture Notes, Copyright 1997 Martin C. Rinard.
Chapter 51 Threads Chapter 5. 2 Process Characteristics  Concept of Process has two facets.  A Process is: A Unit of resource ownership:  a virtual.
CSE 451: Operating Systems Autumn 2013 Module 6 Review of Processes, Kernel Threads, User-Level Threads Ed Lazowska 570 Allen.
Welcome to the World of Nachos CPS 110 Spring 2004 Discussion Session 1.
Protection and the Kernel: Mode, Space, and Context.
CPS 210: Operating Systems. The operating system (OS) is the interface between user applications and the hardware. An OS implements a sort of virtual.
1 Lecture 4: Threads Operating System Fall Contents Overview: Processes & Threads Benefits of Threads Thread State and Operations User Thread.
Chapter 1. Introduction What is an Operating System? Mainframe Systems
Chapter 6 Operating System Support. This chapter describes how middleware is supported by the operating system facilities at the nodes of a distributed.
Threads and Concurrency. A First Look at Some Key Concepts kernel The software component that controls the hardware directly, and implements the core.
Recall: Three I/O Methods Synchronous: Wait for I/O operation to complete. Asynchronous: Post I/O request and switch to other work. DMA (Direct Memory.
Operating Systems ECE344 Ashvin Goel ECE University of Toronto OS-Related Hardware.
1 Chapter 2: Computer-System Structures  Computer System Operation  I/O Structure  Storage Structure  Storage Hierarchy  Hardware Protection  General.
Lecture 3 Process Concepts. What is a Process? A process is the dynamic execution context of an executing program. Several processes may run concurrently,
Operating Systems ECE344 Ashvin Goel ECE University of Toronto Thread Scheduling.
CPS 110/EE 153 Course Intro. The operating system (OS) is the interface between user applications and the hardware. An OS implements a sort of virtual.
Race Conditions Defined 1. Every data structure defines invariant conditions. defines the space of possible legal states of the structure defines what.
Background: Operating Systems Brad Karp UCL Computer Science CS GZ03 / M th November, 2008.
Computers Operating System Essentials. Operating Systems PROGRAM HARDWARE OPERATING SYSTEM.
1 CSE451 Architectural Supports for Operating Systems Autumn 2002 Gary Kimura Lecture #2 October 2, 2002.
We will focus on operating system concepts What does it do? How is it implemented? Apply to Windows, Linux, Unix, Solaris, Mac OS X. Will discuss differences.
1 Computer Systems II Introduction to Processes. 2 First Two Major Computer System Evolution Steps Led to the idea of multiprogramming (multiple concurrent.
Processes & Threads Introduction to Operating Systems: Module 5.
1 Lecture 1: Computer System Structures We go over the aspects of computer architecture relevant to OS design  overview  input and output (I/O) organization.
Lecture on Central Process Unit (CPU)
Administrivia Nachos guide and Lab #1 are on the web. Form project teams of 2-3. Lab #1 due February 5. Synchronization.
Operating Systems Unit 2: – Process Context switch Interrupt Interprocess communication – Thread Thread models Operating Systems.
Threads, SMP, and Microkernels Chapter 4. Processes and Threads Operating systems use processes for two purposes - Resource allocation and resource ownership.
CSCI/CMPE 4334 Operating Systems Review: Exam 1 1.
Chapter 6 Limited Direct Execution Chien-Chung Shen CIS/UD
Processes and Threads Chapter 3 and 4 Operating Systems: Internals and Design Principles, 6/E William Stallings Patricia Roy Manatee Community College,
Multiprogramming. Readings r Chapter 2.1 of the textbook.
Introduction to Operating Systems Concepts
Process concept.
CS 6560: Operating Systems Design
CS490 Windows Internals Quiz 2 09/27/2013.
More Threads and Synchronization
Chapter 4: Threads.
Operating Systems and Systems Programming
Threads, SMP, and Microkernels
CSE 451: Operating Systems Spring 2012 Module 6 Review of Processes, Kernel Threads, User-Level Threads Ed Lazowska 570 Allen.
Mid Term review CSC345.
Lecture Topics: 11/1 General Operating System Concepts Processes
Threads and Concurrency
Threads Chapter 4.
CSE 451: Operating Systems Autumn 2003 Lecture 2 Architectural Support for Operating Systems Hank Levy 596 Allen Center 1.
CSE 451: Operating Systems Autumn 2001 Lecture 2 Architectural Support for Operating Systems Brian Bershad 310 Sieg Hall 1.
CSE 451: Operating Systems Winter 2003 Lecture 2 Architectural Support for Operating Systems Hank Levy 412 Sieg Hall 1.
CS510 Operating System Foundations
CS703 – Advanced Operating Systems
Presentation transcript:

Introduction to Operating Systems and Concurrency

The operating system (OS) is the interface between the user and the hardware. An OS implements a sort of virtual machine that is easier to program than the raw hardware. Operating Systems: The Big Picture [McKinley] physical machine interface User Applications Operating System Architecture virtual machine interface

The OS and the Hardware The OS is the “permanent” software with the power to: control/abstract/mediate access to the hardware CPUs and memory I/O devices so user code can be: simpler device-independent portable even “transportable” I/O Bus Memory Bus Processor Cache Main Memory Disk Controller Disk Graphics Controller Network Interface Graphics Network interrupts I/O Bridge

Memory and the CPU 0 2n2n code library OS data OS code Program A data Data Program B Data registers CPU R0 Rn PC main memory x x

The Big Questions The basic issues/questions in this course are how to: allocate memory and storage to multiple programs? share the CPU among concurrently executing programs? suspend and resume programs? share data safely among concurrent activities? protect one executing program’s storage from another? protect the code that implements the protection, and mediates access to resources? prevent programs from taking over the machine? allow programs to interact safely?

A First Look at Some Key Concepts kernel The software component that controls the hardware directly, and implements the core privileged OS functions. Modern hardware has features that allow the OS kernel to protect itself from untrusted user code. thread An executing stream of instructions and its CPU register context. virtual address space An execution context for thread(s) that provides n independent name space for addressing some or all of physical memory. process An execution of a program, consisting of a virtual address space, one or more threads, and some OS state.

The Kernel Today, all “real” operating systems have protected kernels. The kernel resides in a well-known file: the “machine” automatically loads it into memory (boots) on power-on/reset. Our “kernel” is called the executive in NT. The kernel is (mostly) a library of service procedures shared by all user programs, but the kernel is protected: User code cannot access internal kernel data structures directly, and it can invoke the the kernel only at well-defined entry points (system calls). Kernel code is like user code, but the kernel is privileged: The kernel has direct access to all hardware functions, and defines the machine entry points for interrupts and exceptions.

A Protected Kernel 0 2n2n code library OS data OS code Program A data Data Program B Data registers CPU R0 Rn PC main memory x x mode CPU mode (a field in some status register) indicates whether the CPU is running in a user program or in the protected kernel. Some instructions or data accesses are only legal when the CPU is executing in kernel mode. physical address space

Processes and the Kernel data 0 2 n n-1 data 0x7FFFFFFF 0x xFFFFFFFF 0x0 n-bit virtual address space 32-bit virtual address space system call traps...and upcalls (e.g., signals)

Threads A thread is a schedulable stream of control. defined by CPU register values (PC, SP) suspend: save register values in memory resume: restore registers from memory Multiple threads can execute independently: They can run in parallel on multiple CPUs... - physical concurrency …or arbitrarily interleaved on a single CPU. - logical concurrency Each thread must have its own stack.

Threads vs. Processes 1. The process is a kernel abstraction for an independent executing program. includes at least one “thread of control” also includes a private address space (VAS) - requires OS kernel support (but some use process to mean what we call thread) 2. Threads may share an address space threads have “context” just like vanilla processes - thread context switch vs. process context switch every thread must exist within some process VAS processes may be “multithreaded” data Thread::Fork

Why Threads Are Important 1. There are lots of good reasons to use threads. “easy” coding of multiple activities in an application e.g., servers with multiple independent clients parallel programming to reduce execution time 2. Threads are great for experimenting with concurrency. context switches and interleaved executions race conditions and synchronization can be supported in a library (Nachos) without help from OS 3. We will use threads to implement processes in Nachos. (Think of a thread as a process running within the kernel.)

Concurrency Working with multiple threads (or processes) introduces concurrency: several things are happening “at once”. How can I know the order in which operations will occur? physical concurrency On a multiprocessor, thread executions may be arbitrarily interleaved at the granularity of individual instructions. logical concurrency On a uniprocessor, thread executions may be interleaved as the system switches from one thread to another. context switch (suspend/resume) Warning: concurrency can cause your programs to behave unpredictably, e.g., crash and burn.

Logical Concurrency Illustrated reality logical concept context switch

Context Switches: Voluntary and Involuntary On a uniprocessor, the set of possible execution schedules depends on when context switches can occur. Voluntary: one thread explicitly yields the CPU to another. E.g., a Nachos thread can suspend itself with Thread::Yield. It may also block to wait for some event with Thread::Sleep. Involuntary: the system scheduler suspends an active thread, and switches control to a different thread. Thread scheduler tries to share CPU fairly by timeslicing. Suspend/resume at periodic intervals (e.g., nachos -rs) Involuntary context switches can happen “any time”.

The Dark Side of Concurrency With interleaved executions, the order in which processes execute at runtime is nondeterministic. depends on the exact order and timing of process arrivals depends on exact timing of asynchronous devices (disk, clock) depends on scheduling policies Some schedule interleavings may lead to incorrect behavior. Open the bomb bay doors before you release the bomb. Two cooks can’t both stir the same pan at the same time. The system must provide a way to coordinate concurrent activities to avoid incorrect interleavings.

Example: A Concurrent Color Stack InitColorStack() { push(blue); push(purple); } PushColor() { if (s[top] == purple) { ASSERT(s[top-1] == blue); push(blue); } else { ASSERT(s[top] == blue); ASSERT(s[top-1] == purple); push(purple); }

Interleaving the Color Stack #1 PushColor() { if (s[top] == purple) { ASSERT(s[top-1] == blue); push(blue); } else { ASSERT(s[top] == blue); ASSERT(s[top-1] == purple); push(purple); } ThreadBody() { while(1) PushColor(); }

Interleaving the Color Stack #2 if (s[top] == purple) { ASSERT(s[top-1] == blue); push(blue); } else { ASSERT(s[top] == blue); ASSERT(s[top-1] == purple); push(purple); }

Interleaving the Color Stack #3 if (s[top] == purple) { ASSERT(s[top-1] == blue); push(blue); } else { ASSERT(s[top] == blue); ASSERT(s[top-1] == purple); push(purple); } Consider a yield here on blue’s first call to PushColor(). X

Interleaving the Color Stack #4 if (s[top] == purple) { ASSERT(s[top-1] == blue); push(blue); } else { ASSERT(s[top] == blue); ASSERT(s[top-1] == purple); push(purple); } Consider yield here on blue’s first call to PushColor(). X

Race Conditions Defined 1. Every data structure defines invariant conditions. defines the space of possible legal states of the structure defines what it means for the structure to be “well-formed” 2. Operations depend on and preserve the invariants. The invariant must hold when the operation begins. The operation may temporarily violate the invariant. The operation restores the invariant before it completes. 3. Arbitrarily interleaved operations violate invariants. Rudely interrupted operations leave a mess behind for others. 4. Therefore we must constrain the set of possible schedules.