CSCI 511 Operating Systems Chapter 3,4 (Part A) Processes and Threads

Slides:



Advertisements
Similar presentations
Thursday, June 08, 2006 The number of UNIX installations has grown to 10, with more expected. The UNIX Programmer's Manual, 2nd Edition, June, 1972.
Advertisements

Processes CSCI 444/544 Operating Systems Fall 2008.
CS162 Operating Systems and Systems Programming Lecture 3 Concurrency: Processes, Threads, and Address Spaces September 7, 2005 Prof. John Kubiatowicz.
CS162 Operating Systems and Systems Programming Lecture 3 Concurrency: Processes, Threads, and Address Spaces September 8, 2008 Prof. John Kubiatowicz.
Process Concept An operating system executes a variety of programs
Chapter 51 Threads Chapter 5. 2 Process Characteristics  Concept of Process has two facets.  A Process is: A Unit of resource ownership:  a virtual.
Processes Part I Processes & Threads* *Referred to slides by Dr. Sanjeev Setia at George Mason University Chapter 3.
CSE 451: Operating Systems Autumn 2013 Module 6 Review of Processes, Kernel Threads, User-Level Threads Ed Lazowska 570 Allen.
COSC 3407: Operating Systems Lecture 3: Processes.
Chapter 4: Threads. From Processes to Threads 4.3 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Threads.
Process Management. Processes Process Concept Process Scheduling Operations on Processes Interprocess Communication Examples of IPC Systems Communication.
Implementing Processes and Process Management Brian Bershad.
Lecture 3 Process Concepts. What is a Process? A process is the dynamic execution context of an executing program. Several processes may run concurrently,
Hardware process When the computer is powered up, it begins to execute fetch-execute cycle for the program that is stored in memory at the boot strap entry.
11/13/20151 Processes ICS 240: Operating Systems –William Albritton Information and Computer Sciences Department at Leeward Community College –Original.
CS 162 Discussion Section Week 2. Who am I? Haoyuan (HY) Li Office Hours: 1pm-3pm
Silberschatz, Galvin and Gagne  Operating System Concepts Process Concept An operating system executes a variety of programs:  Batch system.
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.
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.
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.
1 Module 3: Processes Reading: Chapter Next Module: –Inter-process Communication –Process Scheduling –Reading: Chapter 4.5, 6.1 – 6.3.
1 Chapter 5: Threads Overview Multithreading Models & Issues Read Chapter 5 pages
CS 162 Discussion Section Week 2. Who am I? Prashanth Mohan Office Hours: 11-12pm Tu W at.
Processes and Threads Chapter 3 and 4 Operating Systems: Internals and Design Principles, 6/E William Stallings Patricia Roy Manatee Community College,
Lecture 3 Process.
August 29, 2012 Ion Stoica CS162 Operating Systems and Systems Programming Lecture 2 Concurrency: Processes, Threads,
Processes and threads.
Operating Systems CMPSC 473
CSCI 511 Operating Systems Chapter 3,4 (Part A) Processes and Threads
Process Management Process Concept Why only the global variables?
Chapter 3: Process Concept
CS 6560: Operating Systems Design
Operating System Concepts
Operating Systems (CS 340 D)
CSCS 511 Operating Systems Ch3, 4 (Part B) Further Understanding Threads Dr. Frank Li Skipped sections 3.5 & 3.6 
Chapter 2 Processes and Threads Today 2.1 Processes 2.2 Threads
Process Management Presented By Aditya Gupta Assistant Professor
Processes Overview: Process Concept Process Scheduling
Chapter 3: Process Concept
Intro to Processes CSSE 332 Operating Systems
Operating Systems (CS 340 D)
Threads & multithreading
Operating Systems Processes and Threads.
Chapter 3 Process Management.
CSCI 511 Operating Systems Ch3, 4 (Part B) Further Understanding Threads Dr. Frank Li Skipped sections 3.5 & 3.6 
CS162 Operating Systems and Systems Programming Lecture 3 Concurrency: Processes, Threads, and Address Spaces September 8th, 2010 Prof. John Kubiatowicz.
CS162 Operating Systems and Systems Programming Lecture 2 Concurrency: Processes, Threads, and Address Spaces January 28, 2008 Prof. Anthony D. Joseph.
Lecture 2: Processes Part 1
January 24th, 2011 Ion Stoica CS162 Operating Systems and Systems Programming Lecture 2 Concurrency: Processes, Threads,
Threads and Data Sharing
Concurrency: Threads, Address Spaces, and Processes
More examples How many processes does this piece of code create?
Anthony D. Joseph and Ion Stoica
CS162 Operating Systems and Systems Programming Lecture 3 Concurrency: Processes, Threads, and Address Spaces September 5, 2007 Prof. John Kubiatowicz.
CSE 451: Operating Systems Spring 2012 Module 6 Review of Processes, Kernel Threads, User-Level Threads Ed Lazowska 570 Allen.
Lecture Topics: 11/1 General Operating System Concepts Processes
CSE 451: Operating Systems Autumn 2003 Lecture 5 Threads
Threads Chapter 4.
Processes and Process Management
Anthony D. Joseph and Ion Stoica
Chapter 3: Processes.
CS162 Operating Systems and Systems Programming Lecture 3 Concurrency: Processes, Threads, and Address Spaces January 25, 2006 Prof. Anthony D. Joseph.
Operating Systems: A Modern Perspective, Chapter 6
Chapter 2 Processes and Threads 2.1 Processes 2.2 Threads
CS510 Operating System Foundations
CS162 Operating Systems and Systems Programming Lecture 3 Concurrency: Processes, Threads, and Address Spaces September 7, 2005 Prof. John Kubiatowicz.
ICS Principles of Operating Systems
Presentation transcript:

CSCI 511 Operating Systems Chapter 3,4 (Part A) Processes and Threads Dr. Frank Li

Objective How does OS provide multiprogramming? What are Processes? How are processes related to Threads and Address Spaces?

Concurrency “Thread” of execution Independent Fetch/Decode/Execute loop Operating in some address space Uni-programming: one “thread “ of execution at a time E.g., MS/DOS, early Macintosh, Batch processing Easier for operating system builder Get rid of concurrency by defining it away Q: Does this make sense for PCs at that time? Multiprogramming: more than one “thread “ of execution at a time MULTIX, UNIX, OS/2, Win NT/2000/XP Often called “multitasking”

The Basic Problem of Concurrency The basic problem of concurrency involves resources: Hardware: single CPU, single DRAM, single I/O devices Multiprogramming API: each running program thinks it has exclusive access to machine OS Has to coordinate all activity Multiple users, I/O interrupts, … How can keep this 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

What happens during execution? Fetch Exec R0 … R31 F0 F30 PC Addr 232-1 … Data1 Data0 Inst237 Inst236 Inst5 Inst4 Inst3 Inst2 Inst1 Inst0 Execution sequence: Fetch Instruction based on value at PC Decode Execute (possibly using registers) Write Results to registers PC = Next Instruction(PC) Repeat PC Addr 0

How can we give the illusion of multiple processors? CPU3 CPU2 CPU1 Shared Memory CPU1 CPU2 CPU3 Time Q: How do we provide the illusion of multiple processors? Multiplex in time! Each virtual “CPU” needs a structure to hold: Program Counter (PC) Registers (Integer, Floating point, others…) Q: How switch from one CPU to the next? Save PC and registers in current state block Load PC and registers from new state block Q: What triggers switch? voluntary yield or Timer or I/O, other events.

Properties of simple multiprogramming Consequence of sharing: Each thread can access the data of every other thread Threads can share instructions (good for sharing, bad for protection) This (unprotected) model common in: Embedded applications Win 3.1/Machintosh (switch only with yield) Win 95/ME (switch with both yield and timer)

How to protect execution threads from one another? Need three important things: Protection of memory Every task does not have access to all memory Protection of I/O devices Every task does not have access to every device Preemptive switching from task to task Use of timer Must not be possible to disable timer from user code

Recall: Program’s Address Space the set of accessible addresses & state associated with them Q: How many possible addresses for a 32-bit processor ? What happens when you read or write to an address? Perhaps acts like regular memory Perhaps ignores writes Perhaps causes I/O operation (Memory-mapped I/O) Perhaps causes exception (fault) Program Address Space

Providing Separate Address Space: Load a new Translation Map on Switch Data 2 Stack 1 Heap 1 OS heap & Stacks Code 1 Stack 2 Data 1 Heap 2 Code 2 OS code OS data Code Data Heap Stack Code Data Heap Stack Prog 1 Virtual Address Space 1 Prog 2 Virtual Address Space 2 Translation Map 1 Translation Map 2 Physical Address Space

Traditional UNIX Process Process: Operating system abstraction to represent what is needed to run a single program Often called a “Heavyweight Process” A sequential stream of execution in its own address space A process contains 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 inside a heavyweight process !

How does OS multiplex processes? The current state of process held in a process control block (PCB): This is a “snapshot” of the execution and protection environment Only one PCB active at a time Give out CPU time to different processes (Scheduling): Only one process “running” at a time. Why? Give high priority to important processes Give pieces of resources to different processes (Protection): Controlled access to non-CPU resources Some mechanisms: Memory Mapping: Give each process their own address space Kernel/User dual mode: Arbitrary multiplexing of I/O through system calls PCB Only one CPU

CPU Switch From Process to Process Notice the Idle / executing state of P_0 and P-1? Performing a state save of the current process and a state restore of another process Context switch time is “pure” overhead! The context switch time is usually a few ms, depends on CPU hardware support E.g., Sun UltraSPARC – multiple sets of registers, changing the pointer to another register set The objective of multiprogramming is to have some process running at all times, to maximize CPU utilization. Context switch Code executed in kernel above is overhead Overhead sets minimum practical switching time

Diagram of Process State As a process executes, it changes state new: The process is being created running: Instructions are being executed waiting: Process waiting for some event to occur ready: The process is waiting to run terminated: The process has finished execution

Process Scheduling PCBs move from queue to queue as they change state Decisions about which order to remove from queues are scheduling decisions Many algorithms possible (a few lectures from now)

Create a new process Must construct new PCB Must set up new page tables for address space Copy data from parent process Semantics of Unix fork() are that a child process gets a complete copy of the parent memory Originally very expensive Much less expensive with “copy on write” Copy I/O state (file handles, etc) Parent / child process  form a tree of processes (E.g. p91) Clone( ) in Linux  decide how much a child process is alike parent process by parameters

Process =? Program Program Process main () { …; } A() { … main () { …; } A() { … Heap Stack A main Program Process More to a process than just a program: Program is just part of the process state e.g. 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 e.g. cc starts up cpp, cc1, cc2, ld, etc

Multiple Processes to Contribute on Task High Creation/memory Overhead (Relatively) High Context-Switch Overhead Need Communication mechanism: Separate Address Spaces Isolates Processes Interprocess Communication a) Shared-Memory Mapping Accomplished by mapping addresses to common DRAM Read and Write through memory Interprocess Communication b) Message Passing send() and receive() messages Works across network

Interprocess Communication a) Shared Memory Communication Data 2 Code Data Heap Stack Shared Code Data Heap Stack Shared Stack 1 Heap 1 Code 1 Stack 2 Data 1 Prog 2 Virtual Address Space 2 Prog 1 Virtual Address Space 1 Heap 2 Code 2 Shared Communication occurs by “simply” reading/writing to shared address page Really low overhead communication But introduces complex synchronization problems

Interprocess Communication b) Message Passing Mechanism for processes to communicate and to synchronize their actions Message system – processes communicate with each other without resorting to shared variables IPC 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) logical (e.g., logical properties) Read more in text

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 Q: Why separate the concept of a thread from that of a process? 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 of a process Address spaces encapsulate protection Keeps buggy program from trashing the system “Passive” component of a process

Examples of multithreaded programs Most modern OS kernel 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 Network Servers Concurrent requests from network Again, single program, multiple concurrent operations File server, Web server … Parallel Programming (More than one physical CPU) Split program into multiple threads for parallelism This is called Multiprocessing

Thread State State shared by all threads in a process/addr space Contents of memory (global variables, heap) I/O state (file system, network connections, etc) State “private” to each thread Kept in Thread Control Block (TCB) CPU registers (including, program counter) Execution stack – Q: what is Execution stack? Execution Stack Parameters, Temporary variables return PCs are kept while called procedures are executing

Execution Stack Example A(int tmp) { if (tmp<2) B(); printf(tmp); } B() { C(); C() { A(2); A(1); A: tmp=1 ret=exit B: ret=A+2 C: ret=b+1 A: tmp=2 ret=C+1 Stack Pointer Stack Growth Execution Stack holds temporary results Permits recursive execution Crucial to modern languages

Classification of OSs Real operating systems have either Many One # of addr spaces: Many One # threads Per AS: MS/DOS, early Macintosh Traditional UNIX Embedded systems (VxWorks, JavaOS,etc.) Mach, OS/2, Linux Win NT to XP, Solaris, HP-UX, OS X Real operating systems have either One or many address spaces One or many threads per address space

In Conclusion … Processes have two parts Threads (Concurrency) Address Spaces (Protection) Concurrency accomplished by multiplexing CPU Time Unloading current thread (PC, registers) Loading new thread (PC, 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