Recitation 7 (Oct. 25) Outline Minglong Shao Office hours: Reminders

Slides:



Advertisements
Similar presentations
Recitation 8 (Nov. 1) Outline Process & job control Lab 5 Reminder Lab 5: Due Thursday Minglong Shao Office hours: Thursdays 5-6PM.
Advertisements

Recitation 8: 10/28/02 Outline Processes Signals –Racing Hazard –Reaping Children Annie Luo Office Hours: Thursday 6:00.
1 CS345 Operating Systems Φροντιστήριο Άσκησης 1.
Exceptional Control Flow Processes Today. Control Flow Processors do only one thing: From startup to shutdown, a CPU simply reads and executes (interprets)
Carnegie Mellon 1 Exceptional Control Flow : Introduction to Computer Systems Recitation 9: Monday, October 21 st, 2013 Ian Hartwig Section E.
Carnegie Mellon Introduction to Computer Systems /18-243, spring th Lecture, Mar. 5 th Instructors: Gregory Kesden and Markus Püschel.
15-213, Fall 06 Outline Shell Lab Processes Signals.
15-213/ Intro to Computer Systems by btan with reference to Spring 10’s slides.
UNIX Process Control Bach 7 Operating Systems Course Hebrew University Spring 2007.
Recitation 8 (Nov. 1) Outline Lab 5 hints Virtual Memory Reminder Shell Lab: Due THIS Thursday TA: Kun Gao Modified from Minglong Shao’s Recitation, Fall.
Advanced OS Chapter 3p2 Sections 3.4 / 3.5. Interrupts These enable software to respond to signals from hardware. The set of instructions to be executed.
Signal Signal : - is a notification sent to a process to notify it of some event - interrupts whatever the process is doing and force it to handle a signal.
CSSE Operating Systems
Section A (March 14) Outline Exceptions Process Signals Non-local jumps Reminders Lab4: Due Next Thursday TA: Kun Gao Shamelessly Modified from Minglong.
Processes, Signals, I/O, Shell lab
Exceptional Control Flow Part II Topics Process Hierarchy Signals CS213.
Carnegie Mellon 1 Processes, Signals, I/O, Shell Lab : Introduction to Computer Systems Recitation 9: 10/21/2013 Tommy Klein Section B.
UNIX Signals Bach 7.2 Operating Systems Course The Hebrew University Spring 2010.
Introduction to Processes CS Intoduction to Operating Systems.
1Reference “Introduction To Unix Signals Programming” in the reference material section Man page – sigprocmask, alarm “Understanding the Linux Kernel”
Recitation 9: Section L (1:30pm - 2:20pm) Monday, October 22, 2012 Processes, Signals and Shell Lab Siddharth Dhulipalla.
Operating Systems Chapter 2
Computer Architecture and Operating Systems CS 3230: Operating System Section Lecture OS-1 Process Concepts Department of Computer Science and Software.
Lecture 3 Process Concepts. What is a Process? A process is the dynamic execution context of an executing program. Several processes may run concurrently,
Creating and Executing Processes
Agenda  Working with Processes: Purpose Running Programs within same process (execl, execlp, execle, execv, execvp, execve) “Spawning” other process (fork,
Program Translation and Execution II: Processes Oct 1, 1998 Topics User-level view of processes Implementation of processes setjmp/longjmp class12.ppt.
Concurrent Processes Processes can concurrently run same program. Processes can concurrently run same program. Processes can start other processes. Processes.
Operating Systems Process Creation
What is a Process? u A process is an executable “cradle” in which a program may run u This “cradle” provides an environment in which the program can run,
1 Signals (continued) CS 241 April 9, 2012 University of Illinois.
UNIX Signals * POSIX-Defined Signals * Signaling Processes * Signal Mask * sigaction * kill and sigaction * alarm * Interval Timers * POSIX.1b Timers *
Recitation: Signaling S04, Recitation, Section A Debug Multiple Processes using GDB Debug Multiple Processes using GDB Dup2 Dup2 Signaling Signaling.
S -1 Processes. S -2 wait and waitpid (11.2) Recall from a previous slide: pid_t wait( int *status ) wait() can: (a) block; (b) return with status; (c)
1 Exceptional Control Flow Ⅱ. 2 Outline Kernel Mode and User Mode Process context switches Three States of Processes Context Switch System Calls and Error.
1 Lecture 19: Unix signals and Terminal management n what is a signal n signal handling u kernel u user n signal generation n signal example usage n terminal.
CS241 Systems Programming Discussion Section Week 2 Original slides by: Stephen Kloder.
CS241 Systems Programming Discussion Section Week 2 Original slides by: Stephen Kloder.
Exceptional Control Flow II Oct 23, 2001 Topics Exceptions Process context switches class17.ppt “The course that gives CMU its Zip!”
Process Manipulation. Process Manipulation in UNIX Basic process manipulation: creation, program loading, exiting, … fork(), exec(), wait(), exit() Process.
Recitation 7 – 3/18/02 Outline fork and scheduling Signals
G.Jyostna.
Exceptional Control Flow Oct 24, 2000
Unix Process Management
Processes A process is a running program.
Exceptional Control Flow Part II
Exceptional Control Flow
Example questions… Can a shell kill itself? Can a shell within a shell kill the parent shell? What happens to background processes when you exit from.
Tarek Abdelzaher Vikram Adve Marco Caccamo
Exceptional Control Flow
Exceptional Control Flow Part II
Lecture 5: Process Creation
Exceptional Control Flow
LINUX System Programming with Processes (additional)
Exceptional Control Flow
Recitation 9: Processes, Signals, TSHLab
Processes Prof. Ikjun Yeom TA – Mugyo
Exceptional Control Flow
CS 105 “Tour of the Black Holes of Computing!”
CS 105 “Tour of the Black Holes of Computing!”
Lecture 6: Multiprogramming and Context Switching
Exceptional Control Flow
CS510 Operating System Foundations
EECE.4810/EECE.5730 Operating Systems
Signals.
Exceptional Control Flow
Chapter 3 Process Description and Control
Recitation 9: Processes, Signals, TSHLab
Exceptional Control Flow
System Programming: Process Management
Presentation transcript:

Recitation 7 (Oct. 25) Outline Minglong Shao Office hours: Reminders Exceptions Process Signals Non-local jumps Reminders Lab4: Due Thursday Minglong Shao shaoml+213@cs.cmu.edu Office hours: Thursdays 5-6PM Wean Hall 1315

Exceptional control flow (ECF) Abrupt changes in the control flow React to changes in system state that are not captured by internal program variables and are not necessarily related to the execution of the program Happens at all levels of a computer system Exceptions Concurrent processes Signals Non-local jumps

Exceptions Interrupt (asynchronous exceptions) Traps Faults Aborts I/O interrupt, hardware reset, software reset, etc. Traps System calls, breakpoint traps, etc. Faults Page fault, protection fault, etc. Aborts Parity error, machine check, etc.

Process concept An instance of running program Multiple processes run “concurrently” by time slicing Context switching Control flow passes from one process to another Preemptive scheduler of OS

Process IDs & process groups A process has its own, unique process ID pid_t getpid(); A process belongs to exactly one process group pid_t getpgrp(); A new process belongs to which process group? Its parent’s process group A process can make a process group for itself and its children pid_t pid = getpid(); setpgid(0, 0); getpgrp()

Create a new process int fork(void) Test your understanding… Create a new process that is identical to the parent process Return 0 to child process Return child’s pid to the parent process Call once, return twice Test your understanding… Problem 1

Problem 1 #include <unistd.h> #include <stdio.h> int cnt = 0; int main(void) { if (fork() == 0){ cnt ++; fork(); cnt++; } printf("%d", cnt); return 0; Possible output: 133 313 331

Reaping child process Child process becomes zombie when terminates Still consume system resources Parent performs reaping on terminated child pid_t wait(int *status) pid_t waitpid(pid_t pid, int *status, int options) Straightforward for reaping a single child Tricky for Shell implementation! Multiple child processes Both foreground and background Practice time again: problem 2

Problem 2 int main(){ int status; int counter = 1; if (fork() == 0){ printf("%d", counter); }else { printf("9"); counter --; exit(0); if (wait(&status) > 0){ printf("6"); } printf("8"); Answers: A. Y B. N C. Y D. N E. Y

Signals Section 8.5 in text Read at least twice … really! A signal tells our program that some event has occurred Can we use signals to count events? No Why? Signals not queued!!

Important signals (Fig 8.23) SIGINT Interrupt signal from terminal (ctrl-c) SIGTSTP Stop signal from terminal (ctrl-z) SIGCHLD A child process has stopped or terminated

Signals: sending other events OS Kernel blocked pending OS procedure Process 1 Process 2 blocked kill(pid, SIGINT) pending 1 OS procedure other events divide by zero: SIGFPE ctrl-c: SIGINT child process exit: SIGCHLD OS Kernel

Signals: receiving Check when schedule the process to run OS Kernel blocked pending 1 OS procedure OS Kernel

Receiving a signal An example: problem 3 Default action The process terminates [and dumps core] The process stops until restarted by a SIGCONT signal (ctrl-z) The process ignore the signal Can modify (additional action) “Handle the signal” -- install signal handler void sigint_handler(int sig); signal(SIGINT, sigint_handler); An example: problem 3

Problem 3 void handler(int sig){ static int beeps = 0; printf("YO\n"); if (++beeps < 2) alarm(1); /* next SIGALRM will be delivered in 1s */ else{ printf("MA\n"); kill(getpid(), SIGKILL); } int main(){ Signal(SIGALRM, handler); while (1) ; printf(" is Great!\n"); return 0; 1. Output: YO MA 2. The program will terminate

Signals not queued Output: sent SIGUSR2 to parent counter = 1 int counter = 0; void handler(int sig) { counter++; sleep(1); return; } int main() int i; signal(SIGUSER2, handler); if (fork() == 0){ for (i = 0; i < 5; i++){ kill(getppid(), SIGUSR2); printf(“sent SIGUSR2 to parent\n”); exit(0); wait(NULL); printf(“counter = %d\n”, counter); Output: sent SIGUSR2 to parent counter = 1

Race hazard A data structure is shared by two pieces of code that can run concurrently Different behaviors of program depending upon how the schedule interleaves the execution of code.

An example of race hazard sigchld_handler() { pid = waitpid(…); deletejob(pid); } eval() { pid = fork(); if(pid == 0) { /* child */ execve(…); /* parent */ /* signal handler may run BEFORE addjob()*/ addjob(…);

An okay schedule time Shell Signal Handler Child fork() addjob() execve() exit() sigchld_handler() deletejobs()

A problematic schedule time Shell Signal Handler Child fork() execve() exit() sigchld_handler() deletejobs() addjob() Job added to job list after the signal handler tried to delete it!

Solution: blocking signals sigchld_handler() { pid = waitpid(…); deletejob(pid); } eval() { sigprocmask(SIG_BLOCK, …) pid = fork(); if(pid == 0) { /* child */ sigprocmask(SIG_UNBLOCK, …) execve(…); /* parent */ /* signal handler might run BEFORE addjob() */ addjob(…); More details 8.5.6 (page 633)

Non-local jump int setjmp(jmp_buf env) Must called before longjmp Stores current register context, stack pointer, and PC in the jump buffer env First called, return 0 if no error void longjmp(jmp_buf env, int i) Restores register context from jump buffer env Jumps back to where previous setjmp is called, behaves like setjmp just completes. But this time it returns i, not 0 Can only jump to an active context A function that has been called but not yet completed

Non-local jump (cont) Let’s see an example: problem 4 int sigsetjmp(jmp_buf env) Also saves blocked signals void siglongjmp(jmp_buf env, int i) Restores blocked signals besides others Let’s see an example: problem 4

Problem 4 jmp_buf stuff; jmp_buf more_stuff; int bar(){ if (setjmp(more_stuff) == 0) return 3; else return 6; } int foo(){ char c = getc(stdin); if (c == 'x') longjmp(stuff, 42); else if (c == 'y') longjmp(more_stuff, 17); return bar(); return -1; int main() { int n; n = setjmp(stuff); while ((n+=foo())<0) sleep(1); printf("%d\n", n); } Answer: 1. 3 2. 45 3. 45 4. ? 5. ?

Summary Process Reaping child processes Signals Non-local jumps fork(), waitpid(), execl() (and variant) Reaping child processes Signals signal(), install handler, signals not queued Non-local jumps Check man page to understand the system calls better man waitpid (fork, signal, …) Read test book!