CS162 Operating Systems and Systems Programming Lecture 3. Concurrency: Processes, Threads, and Address Spaces. Review: History of OS

Similar documents
Disciplina Sistemas de Computação

Page 1. CS162 Operating Systems and Systems Programming Lecture 3. Concurrency: Processes, Threads, and Address Spaces

Page 1. Virtual Machines (Recap)" Nachos: Virtual OS Environment" System Virtual Machines: Layers of OSs"

Page 1. Virtual Machines (Recap)" Nachos: Virtual OS Environment (Recap)" System VMs: Layers of OSs (Recap)"

ICS Principles of Operating Systems

Chapter 5: Threads. Outline

Lecture 2 Fundamental OS Concepts. Bo 2018, Spring

Page 1. CS194-3/CS16x Introduction to Systems. Lecture 5. Concurrency, Processes and threads, Overview of ACID. Goals for Today

CS162 Operating Systems and Systems Programming Lecture 4. Thread Dispatching. January 28, 2010 Ion Stoica

Chapter 4: Multithreaded Programming

Arvind Krishnamurthy Spring Threads, synchronization, scheduling Virtual memory File systems Networking

CS162 Operating Systems and Systems Programming Lecture 4. Thread Dispatching

Chapter 4: Multithreaded Programming

Chapter 4: Multithreaded Programming

Chapter 5: Threads. Overview Multithreading Models Threading Issues Pthreads Windows XP Threads Linux Threads Java Threads

Chapter 5: Processes & Process Concept. Objectives. Process Concept Process Scheduling Operations on Processes. Communication in Client-Server Systems

Chapter 4: Threads. Chapter 4: Threads

OPERATING SYSTEM. Chapter 4: Threads

Page 1. Goals for Today" Why Processes & Threads?" Putting it together: Process" CS162 Operating Systems and Systems Programming Lecture 3

Chapter 4: Threads. Chapter 4: Threads

Chapter 4: Multithreaded Programming. Operating System Concepts 8 th Edition,

CS 450 Operating System Week 4 Lecture Notes

Chapter 3: Processes. Operating System Concepts 8 th Edition,

Chapter 4: Threads. Operating System Concepts 8 th Edition,

W4118 Operating Systems. Junfeng Yang

Chapter 4: Threads. Chapter 4: Threads. Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues

CS162 Operating Systems and Systems Programming Lecture 3 Concurrency and Thread Dispatching

Distributed Systems Operation System Support

Agenda Process Concept Process Scheduling Operations on Processes Interprocess Communication 3.2

Motivation. Threads. Multithreaded Server Architecture. Thread of execution. Chapter 4

Chapter 3: Processes

Part V. Process Management. Sadeghi, Cubaleska RUB Course Operating System Security Memory Management and Protection

Processes and Threads

CSE 120 Principles of Operating Systems

Chapter 4: Threads. Operating System Concepts 9 th Edition

CMPT 300. Introduction to Operating Systems. Operating Systems Processes & Threads

CSE 120 Principles of Operating Systems

Chapter 4: Threads. Operating System Concepts. Silberschatz, Galvin and Gagne

Lecture 4: Threads; weaving control flow

Chapter 4: Multithreaded Programming Dr. Varin Chouvatut. Operating System Concepts 8 th Edition,

Processes and Threads

Yi Shi Fall 2017 Xi an Jiaotong University

September 16 th, 2015 Prof. John Kubiatowicz

What s in a process?

Page 1. Goals for Today" Putting it together: Process" Why Processes & Threads?" CS162 Operating Systems and Systems Programming Lecture 3

Threads. Raju Pandey Department of Computer Sciences University of California, Davis Spring 2011

Chapter 4: Multithreaded Programming

Questions answered in this lecture: CS 537 Lecture 19 Threads and Cooperation. What s in a process? Organizing a Process

Chapter 4: Threads. Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads

Outline. Threads. Single and Multithreaded Processes. Benefits of Threads. Eike Ritter 1. Modified: October 16, 2012

Chapter 4: Threads. Operating System Concepts 9 th Edition

Recall: Use of Threads Version of program with Threads (loose syntax): Recall: Memory Footprint: Two-Threads. Recall: Dispatch Loop

CSE 120 Principles of Operating Systems

Notes. CS 537 Lecture 5 Threads and Cooperation. Questions answered in this lecture: What s in a process?

Page 1. Goals for Today" Virtualizing Resources" Important Aspects of Memory Multiplexing" CS162 Operating Systems and Systems Programming Lecture 20

Chapter 4: Threads. Overview Multithreading Models Threading Issues Pthreads Windows XP Threads Linux Threads Java Threads. Operating System Concepts

Processes. CS 475, Spring 2018 Concurrent & Distributed Systems

CSE 153 Design of Operating Systems Fall 2018

Threads. Computer Systems. 5/12/2009 cse threads Perkins, DW Johnson and University of Washington 1

CSE 4/521 Introduction to Operating Systems

Chapter 3: Process Concept

Chapter 3: Processes. Operating System Concepts 8th Edition

Threads. CS-3013 Operating Systems Hugh C. Lauer. CS-3013, C-Term 2012 Threads 1

10/10/ Gribble, Lazowska, Levy, Zahorjan 2. 10/10/ Gribble, Lazowska, Levy, Zahorjan 4

CS420: Operating Systems

CS307: Operating Systems

Chapter 3: Processes. Operating System Concepts Essentials 8 th Edition

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto

Killing Zombies, Working, Sleeping, and Spawning Children

Lecture 17: Threads and Scheduling. Thursday, 05 Nov 2009

Chapter 3: Processes

TDIU25: Operating Systems II. Processes, Threads and Scheduling

Operating Systems Overview. Chapter 2

Chapter 3: Process-Concept. Operating System Concepts 8 th Edition,

Chapter 4: Processes. Process Concept

Operating Systems 2 nd semester 2016/2017. Chapter 4: Threads

Chapter 3: Processes. Operating System Concepts 9 th Edition

CS370 Operating Systems

Chapter 4: Processes

Process and Its Image An operating system executes a variety of programs: A program that browses the Web A program that serves Web requests

Midterm 1. Administrivia. Virtualizing Resources. CS162 Operating Systems and Systems Programming Lecture 12. Address Translation

Goals. Processes and Threads. Concurrency Issues. Concurrency. Interlacing Processes. Abstracting a Process

Chapter 4: Threads. Operating System Concepts with Java 8 th Edition

Chapter 3: Processes. Operating System Concepts Essentials 2 nd Edition

Process Description and Control

September 14 th, 2015 Prof. John Kubiatowicz

What s in a traditional process? Concurrency/Parallelism. What s needed? CSE 451: Operating Systems Autumn 2012

Chapter 4: Multithreaded

Advanced Operating Systems (CS 202) Scheduling (1)

Processes and Threads. Processes and Threads. Processes (2) Processes (1)

CSC Operating Systems Spring Lecture - II OS Structures. Tevfik Ko!ar. Louisiana State University. January 17 th, 2007.

Announcements. Operating System Structure. Roadmap. Operating System Structure. Multitasking Example. Tevfik Ko!ar

Roadmap. Tevfik Ko!ar. CSC Operating Systems Fall Lecture - III Processes. Louisiana State University. Processes. September 1 st, 2009

Chapter 3: Processes

CS162 Operating Systems and Systems Programming Lecture 12. Address Translation. Page 1

CHAPTER 3 - PROCESS CONCEPT

Four Components of a Computer System. Operating System Concepts 7 th Edition, Jan 12, 2005

Chapter 3: Processes. Operating System Concepts 9 th Edit9on

CSCE 313 Introduction to Computer Systems. Instructor: Dezhen Song

Threads and Too Much Milk! CS439: Principles of Computer Systems February 6, 2019

Transcription:

Review: History of OS CS162 Operating Systems and Systems Programming Lecture 3 Concurrency: Processes, Threads, and Address Spaces September 8, 2008 Prof. John Kubiatowicz http://inst.eecs.berkeley.edu/~cs162 Why Study? To understand how user needs and hardware constraints influenced (and will influence) operating systems Several Distinct Phases: Hardware Expensive, Humans Cheap» Eniac, Multics Hardware Cheaper, Humans Expensive» s, Workstations, Rise of GUIs Hardware Really Cheap, Humans Really Expensive» Ubiquitous devices, Widespread networking Rapid Change in Hardware Leads to changing OS Batch Multiprogramming Timeshare Graphical UI Ubiquitous Devices Cyberspace/Metaverse/?? Gradual Migration of Features into Smaller Machines Situation today is much like the late 60s Small OS: 100K lines/large: 10M lines (5M browser!) 100-1000 people-years Lec 3.2 Review: Migration of OS Concepts and Features Review: Implementation Issues (How is the OS implemented?) Policy vs. Mechanism Policy: What do you want to do? Mechanism: How are you going to do it? Should be separated, since policies change Algorithms used Linear, Tree-based, Log Structured, etc Event models used threads vs event loops Backward compatability issues Very important for Windows 2000/XP/Vista/ POSIX tries to help here System generation/configuration How to make generic OS fit on specific hardware Lec 3.3 Lec 3.4

Goals for Today How do we provide multiprogramming? What are Processes? How are they related to Threads and Address Spaces? Note: Some slides and/or pictures in the following are adapted from slides 2005 Silberschatz, Galvin, and Gagne. Many slides generated from my lecture notes by Kubiatowicz. Lec 3.5 Concurrency Thread of execution Independent Fetch/Decode/Execute loop Operating in some Address space Uniprogramming: one thread at a time MS/DOS, early Macintosh, Batch processing Easier for operating system builder Get rid concurrency by defining it away Does this make sense for personal computers? Multiprogramming: more than one thread at a time Multics, UNIX/Linux, OS/2, Windows NT/2000/XP, Mac OS X Often called multitasking, but multitasking has other meanings (talk about this later) ManyCore Multiprogramming, right? Lec 3.6 The Basic Problem of Concurrency Recall (61C): What happens during execution? The basic problem of concurrency involves resources: Hardware: single CPU, single DRAM, single I/O devices Multiprogramming API: users think they have exclusive access to shared resources OS Has to coordinate all activity Multiple users, I/O interrupts, How can it keep all these things straight? Basic Idea: Use Virtual Machine abstraction Decompose hard problem into simpler ones Abstract the notion of an executing program Then, worry about multiplexing these abstract machines Dijkstra did this for the THE system Few thousand lines vs 1 million lines in OS 360 (1K bugs) Lec 3.7 R0 R31 F0 F30 Fetch Exec Execution sequence: Fetch Instruction at Decode Execute (possibly using registers) Write results to registers/mem = Next Instruction() Repeat Addr 2 32-1 Data1 Data0 Inst237 Inst236 Inst5 Inst4 Inst3 Inst2 Inst1 Inst0 Addr 0 Lec 3.8

How can we give the illusion of multiple processors? CPU1 CPU2 CPU3 Shared Memory Assume a single processor. How do we provide the illusion of multiple processors? Multiplex in time! Each virtual CPU needs a structure to hold: Program Counter (), Pointer (SP) Registers (Integer, Floating point, others?) How switch from one CPU to the next? Save, SP, and registers in current state block Load, SP, and registers from new state block What triggers switch? Timer, voluntary yield, I/O, other things CPU1 CPU2 CPU3 CPU1 CPU2 Time Lec 3.9 Properties of this simple multiprogramming technique All virtual CPUs share same non-cpu resources I/O devices the same Memory the same Consequence of sharing: Each thread can access the data of every other thread (good for sharing, bad for protection) Threads can share instructions (good for sharing, bad for protection) Can threads overwrite OS functions? This (unprotected) model common in: Embedded applications Windows 3.1/Machintosh (switch only with yield) Windows 95 ME? (switch with both yield and timer) Lec 3.10 Modern Technique: SMT/Hyperthreading Hardware technique Exploit natural properties of superscalar processors to provide illusion of multiple processors Higher utilization of processor resources Can schedule each thread as if were separate CPU However, not linear speedup! If have multiprocessor, should schedule each processor first Original technique called Simultaneous Multithreading See http://www.cs.washington.edu/research/smt/ Alpha, SPARC, Pentium 4 ( Hyperthreading ), Power 5 Lec 3.11 Administriva: Second Try for Project Signup Still working on section assignments Wednesday 2-3 oversubscribed Thinking of trying to:» add Wednesday 1-2» remove Tuesday 1-2 Would this help? Also, some people signed up twice Some people didn t sign up at all Try again? Project Signup: Group/Section Assignment Link Due date: Tomorrow (9/9) by 11:59pm Sections: Go to Telebears-assigned Section this week (Tue/Wed) Lec 3.12

Administrivia (2) Cs162-xx accounts: Make sure you got an account form If you haven t logged in yet, you need to do so Email addresses We need an email address from you If you haven t given us one already, you should get prompted when you log in again (or type register ) Wednesday: Start Project 1 Go to Nachos page and start reading up Note that all the Nachos code will be printed in your reader (TBA) How to protect threads from one another? Need three important things: 1. Protection of memory» Every task does not have access to all memory 2. Protection of I/O devices» Every task does not have access to every device 3. Preemptive switching from task to task» Use of timer» Must not be possible to disable timer from usercode Lec 3.13 Lec 3.14 Recall: Program s Address Space Address space the set of accessible addresses + state associated with them: For a 32-bit processor there are 2 32 = 4 billion addresses What happens when you read or write to an address? Perhaps Nothing Perhaps acts like regular memory Perhaps ignores writes Perhaps causes I/O operation» (Memory-mapped I/O) Perhaps causes exception (fault) Program Address Space Lec 3.15 Providing Illusion of Separate Address Space: Load new Translation Map on Switch Code Data Prog 1 Virtual Address Space 1 Data 2 1 1 Code 1 2 Data 1 2 Code 2 OS code OS heap & s Code Data Prog 2 Virtual Address Space 2 OS data Translation Map 1 Translation Map 2 Physical Address Space Lec 3.16

Traditional UNIX Process Process: Operating system abstraction to represent what is needed to run a single program Often called a HeavyWeight Process Formally: a single, sequential stream of execution in its own address space Two parts: Sequential Program Execution Stream» Code executed as a single, sequential stream of execution» Includes State of CPU registers Protected Resources:» Main Memory State (contents of Address Space)» I/O state (i.e. file descriptors) Important: There is no concurrency in a heavyweight process Lec 3.17 How do we multiplex processes? The current state of process held in a process control block (B): This is a snapshot of the execution and protection environment Only one B active at a time Give out CPU time to different processes (Scheduling): Only one process running at a time Give more time to important processes Give pieces of resources to different processes (Protection): Controlled access to non-cpu resources Sample mechanisms:» Memory Mapping: Give each process their own address space» Kernel/User duality: Arbitrary multiplexing of I/O through system calls Process Control Block Lec 3.18 CPU Switch From Process to Process Diagram of Process State This is also called a context switch Code executed in kernel above is overhead Overhead sets minimum practical switching time Less overhead with SMT/hyperthreading, but contention for resources instead Lec 3.19 As a process executes, it changes state new: The process is being created ready: The process is waiting to run running: Instructions are being executed waiting: Process waiting for some event to occur terminated: The process has finished execution Lec 3.20

Process Scheduling Bs move from queue to queue as they change state Decisions about which order to remove from queues are Scheduling decisions Many algorithms possible (few weeks from now) What does it take to create a process? Must construct new B Inexpensive Must set up new page tables for address space More expensive Copy data from parent process? (Unix fork() ) Semantics of Unix fork() are that the child process gets a complete copy of the parent memory and I/O state Originally very expensive Much less expensive with copy on write Copy I/O state (file handles, etc) Medium expense Lec 3.21 Lec 3.22 Process =? Program Multiple Processes Collaborate on a Task main () { ; A() { Program main () { ; A() { Process More to a process than just a program: Program is just part of the process state I run emacs on lectures.txt, you run it on homework.java Same program, different processes Less to a process than a program: A program can invoke more than one process cc starts up cpp, cc1, cc2, as, and ld A main Lec 3.23 Proc 1 Proc 2 Proc 3 High Creation/memory Overhead (Relatively) High Context-Switch Overhead Need Communication mechanism: Separate Address Spaces Isolates Processes Shared-Memory Mapping» Accomplished by mapping addresses to common DRAM» Read and Write through memory Message Passing» send() and receive() messages» Works across network Lec 3.24

Code Data Shared Prog 1 Virtual Address Space 1 Shared Memory Communication Data 2 1 1 Code 1 2 Data 1 2 Code 2 Shared Code Data Shared Prog 2 Virtual Address Space 2 Communication occurs by simply reading/writing to shared address page Really low overhead communication Introduces complex synchronization problems Lec 3.25 Inter-process Communication (I) Mechanism for processes to communicate and to synchronize their actions Message system processes communicate with each other without resorting to shared variables I facility provides two operations: send(message) message size fixed or variable receive(message) If P and Q wish to communicate, they need to: establish a communication link between them exchange messages via send/receive Implementation of communication link physical (e.g., shared memory, hardware bus, systcall/trap) logical (e.g., logical properties) Lec 3.26 Modern Lightweight Process with Threads Thread: a sequential execution stream within process (Sometimes called a Lightweight process ) Process still contains a single Address Space No protection between threads Multithreading: a single program made up of a number of different concurrent activities Sometimes called multitasking, as in Ada Why separate the concept of a thread from that of a process? Discuss the thread part of a process (concurrency) Separate from the address space (Protection) Heavyweight Process Process with one thread Single and Multithreaded Processes Threads encapsulate concurrency: Active component Address spaces encapsulate protection: Passive part Keeps buggy program from trashing the system Why have multiple threads per address space? Lec 3.27 Lec 3.28

Examples of multithreaded programs Embedded systems Elevators, Planes, Medical systems, Wristwatches Single Program, concurrent operations Most modern OS kernels Internally concurrent because have to deal with concurrent requests by multiple users But no protection needed within kernel Database Servers Access to shared data by many concurrent users Also background utility processing must be done Examples of multithreaded programs (con t) Network Servers Concurrent requests from network Again, single program, multiple concurrent operations File server, Web server, and airline reservation systems Parallel Programming (More than one physical CPU) Split program into multiple threads for parallelism This is called Multiprocessing Some multiprocessors are actually uniprogrammed: Multiple threads in one address space but one program at a time Lec 3.29 Lec 3.30 Thread State Execution Example State shared by all threads in process/addr space Contents of memory (global variables, heap) I/O state (file system, network connections, etc) State private to each thread Kept in TCB Thread Control Block CPU registers (including, program counter) Execution stack what is this? Execution Parameters, Temporary variables return s are kept while called procedures are executing A(int tmp) { if (tmp<2) B(); printf(tmp); B() { C(); C() { A(2); A(1); Pointer A: tmp=1 ret=exit B: ret=a+2 C: ret=b+1 A: tmp=2 ret=c+1 Growth holds temporary results Permits recursive execution Crucial to modern languages Lec 3.31 Lec 3.32

# threads Per AS: One Many # of addr spaces: Classification One MS/DOS, early Macintosh Embedded systems (Geoworks, VxWorks, JavaOS,etc) JavaOS, Pilot() Real operating systems have either One or many address spaces One or many threads per address space Did Windows 95/98/ME have real memory protection? No: Users could overwrite process tables/system DLLs Many Traditional UNIX Mach, OS/2, Linux Windows 9x??? Win NT to XP, Solaris, HP-UX, OS X Lec 3.33 Example: Implementation Java OS Many threads, one Address Space Why another OS? Recommended Minimum memory sizes:» UNIX + X Windows: 32MB» Windows 98: 16-32MB» Windows NT: 32-64MB» Windows 2000/XP: 64-128MB What if we want a cheap network point-of-sale computer?» Say need 1000 terminals» Want < 8MB What language to write this OS in? C/C++/ASM? Not terribly high-level. Hard to debug. Java/Lisp? Not quite sufficient need direct access to HW/memory management Java OS Structure Java APPS OS Hardware Lec 3.34 Summary Processes have two parts Threads (Concurrency) Address Spaces (Protection) Concurrency accomplished by multiplexing CPU Time: Unloading current thread (, registers) Loading new thread (, registers) Such context switching may be voluntary (yield(), I/O operations) or involuntary (timer, other interrupts) Protection accomplished restricting access: Memory mapping isolates processes from each other Dual-mode for isolating I/O, other resources Book talks about processes When this concerns concurrency, really talking about thread portion of a process When this concerns protection, talking about address space portion of a process Lec 3.35