Task Control Signals and Alarms Chapter 7 and

  • Slides: 23
Download presentation
Task Control: Signals and Alarms Chapter 7 and 8 Page 1 B. RAMAMURTHY 9/16/2021

Task Control: Signals and Alarms Chapter 7 and 8 Page 1 B. RAMAMURTHY 9/16/2021

Multi-tasking Page 2 How to create multiple tasks? Ex: Xinu create() How to control

Multi-tasking Page 2 How to create multiple tasks? Ex: Xinu create() How to control them? ready() resched() How to synchronize them? How to communicate among them? XINU: semaphores, send and receive messages How to (software) interrupt a process? signals 9/16/2021

Examples Page 3 Consider g++ my. Prog. c You want to kill this process

Examples Page 3 Consider g++ my. Prog. c You want to kill this process after you started the compilation. . hit cntrl-C Consider execution of a program called “badprog” >badprog It core dumps. . What happened? The error in the program results in a signal to kernel to stop and dump the offending code Consider “kill –p <pid>” Kill issues a termination signal to the process identified by the pid 9/16/2021

Linux Processes Page 4 Similar to XINU Procs. Lets understand how to create a

Linux Processes Page 4 Similar to XINU Procs. Lets understand how to create a linux process and control it. Chapter 7 and 8 of text book. Chapter 7 : multi-tasking Chapter 8: Task communication and synchronization 9/16/2021

Process creation Page 5 • Four common events that lead to a process creation

Process creation Page 5 • Four common events that lead to a process creation are: 1) When a new batch-job is presented for execution. 2) When an interactive user logs in / system initialization. 3) When OS needs to perform an operation (usually IO) on behalf of a user process, concurrently with that process. 4) To exploit parallelism an user process can spawn a number of processes. 9/16/2021

Termination of a process Page 6 • Normal completion, time limit exceeded, memory •

Termination of a process Page 6 • Normal completion, time limit exceeded, memory • • • unavailable Bounds violation, protection error, arithmetic error, invalid instruction IO failure, Operator intervention, parent termination, parent request, killed by another process A number of other conditions are possible. Segmentation fault : usually happens when you try write/read into/from a non-existent array/structure/object component. Or access a pointer to a dynamic data before creating it. (new etc. ) Bus error: Related to function call and return. You have messed up the stack where the return address or parameters are stored. 9/16/2021

Process control Page 7 Process creation in unix is by means of the system

Process control Page 7 Process creation in unix is by means of the system call fork(). OS in response to a fork() call: Allocate slot in the process table for new process. Assigns unique pid to the new process. . Makes a copy of the process image, except for the shared memory. both child and parent are executing the same code following fork() Move child process to Ready queue. it returns pid of the child to the parent, and a zero value to the child. 9/16/2021

Process control (contd. ) Page 8 All the above are done in the kernel

Process control (contd. ) Page 8 All the above are done in the kernel mode in the process context. When the kernel completes these it does one of the following as a part of the dispatcher: Stay in the parent process. Control returns to the user mode at the point of the fork call of the parent. Transfer control to the child process. The child process begins executing at the same point in the code as the parent, at the return from the fork call. Transfer control another process leaving both parent and child in the Ready state. 9/16/2021

Process Creation (contd. ) Parent process create children processes, which, in turn create other

Process Creation (contd. ) Parent process create children processes, which, in turn create other processes, forming a tree of processes Generally, process identified and managed via a process identifier (pid) Resource sharing Parent and children share all resources Children share subset of parent’s resources Parent and child share no resources Execution Parent and children execute concurrently Parent waits until children terminate Page 9 9/16/2021

Process Termination Process executes last statement and asks the operating system to delete it

Process Termination Process executes last statement and asks the operating system to delete it (exit) Output data from child to parent (via wait) Process’ resources are deallocated by operating system Parent may terminate execution of children processes (abort) Child has exceeded allocated resources Task assigned to child is no longer required If parent is exiting Some operating system do not allow child to continue if its parent terminates All children terminated - cascading termination Page 10 9/16/2021

Example Code Page 11 1. int ret. Val; 2. 3. printf(" Just one process

Example Code Page 11 1. int ret. Val; 2. 3. printf(" Just one process so farn"); printf(" Invoking/Calling fork() system calln"); 4. ret. Val = fork(); /* create new process*/ 5. 6. if (ret. Val == 0) printf(" I am the child %d n", getpid()); 7. 8. else if (ret. Val > 0) printf(" I am the parent, child has pid %d n", ret. Val); 9. 10. else printf(" Fork returned an error %d n", ret. Val); 9/16/2021

Input/output Resources Page 12 What is standard IO? These are resources allocated to the

Input/output Resources Page 12 What is standard IO? These are resources allocated to the process at the time of creation: From Wikipedia/Standard_streams 9/16/2021

Signals Page 13 Signals provide a simple method for transmitting software interrupts to UNIX

Signals Page 13 Signals provide a simple method for transmitting software interrupts to UNIX process Signals cannot carry information directly, which limits their usefulness as an general inter-process communication mechanism However each type of signal is given a mnemonic name; Ex: SIGINT See signal. h for others SIGHUP, SIGINT, SIGILL, SIGTRAP, SIGFPE, SIGKILL SIGALRM (sent by kernel to a process after an alarm timer has expired) SIGTERM signal (signal id, function) simply arms the signal 9/16/2021

Signal Value Action Comment ------------------------------------SIGHUP 1 Term Hangup detected on controlling terminal or death

Signal Value Action Comment ------------------------------------SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process SIGINT 2 Term Interrupt from keyboard SIGQUI 3 Core Quit from keyboard SIGILL 4 Core Illegal Instruction SIGABR 6 Core Abort signal from abort(3) SIGFP 8 Core Floating point exception SIGKILL 9 Term Kill signal SIGSEG 11 Core Invalid memory reference SIGPIPE 13 Term Broken pipe: write to pipe with no readers SIGALRM 14 Term Timer signal from alarm(2) SIGTERM 15 Termination signal SIGUSR 1 30, 16 Term User-defined signal 1 SIGUSR 2 31, 12, 17 Term User-defined signal 2 SIGCHLD 20, 17, 18 Ign Child stopped or terminated SIGCONT 19, 18, 25 Continue if stopped SIGSTOP 17, 19, 23 Stop process SIGTSTP 18, 20, 24 Stop typed at tty SIGTTIN 21, 26 Stop tty input for background process SIGTTOU 22, 27 Stop tty output for background process The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored. Page 14 9/16/2021

Realtime signals Page 15 Linux supports real-time signals as originally defined in the POSIX.

Realtime signals Page 15 Linux supports real-time signals as originally defined in the POSIX. 1 b real-time extensions (and now included in POSIX. 1 -2001). Linux supports 32 real-time signals, numbered from 32 (SIGRTMIN) to 63 (SIGRT- MAX) Main difference is that these are queued and not lost. Realtime signals are delivered in guaranteed order. 9/16/2021

Intercept Signals Page 16 Task 1 Task 2 Two essential parameters are destination process

Intercept Signals Page 16 Task 1 Task 2 Two essential parameters are destination process identifier and the signal code number: kill (pid, signal) Signals are a useful way of handling intermittent data arrivals or rare error conditions. 9/16/2021

Handling Signals Page 17 Look at the examples: Catching SIGALRM Ignoring SIGALRM sigtest. c

Handling Signals Page 17 Look at the examples: Catching SIGALRM Ignoring SIGALRM sigtest. c sig. Handler. c pingpong. c See /usr/include/sys/iso/signal_iso. h for signal numbers 9/16/2021

Signals and Alarms Page 18 #include <signal. h> unsigned int alarm( unsigned int seconds

Signals and Alarms Page 18 #include <signal. h> unsigned int alarm( unsigned int seconds ); alarm(a); will start a timer for a secsonds and will interrupt the calling process after a secs. time(&t); will get you current time in the variable t declared as time_t t ctime(&t); will convert time to ascii format Alarm has a sigaction function that is set for configuring the alarm handler etc. sigaction(SIGALRM, &act, &oldact) ; the third paramter is for old action configuration 9/16/2021

Sample programs Page 19 Starting new tasks in linux: page 165 Programs in pages:

Sample programs Page 19 Starting new tasks in linux: page 165 Programs in pages: 174 -180 on signals and alarms See demos directory for the code See page 175 for the second program See page 178 … for the third program 9/16/2021

Pingpong Page 20 Parent PSIG 43 Child CSIG 42 9/16/2021

Pingpong Page 20 Parent PSIG 43 Child CSIG 42 9/16/2021

Observe in pingpong. c Page 21 pause(): indefinite sleep(): sleep is random/finite time While

Observe in pingpong. c Page 21 pause(): indefinite sleep(): sleep is random/finite time While loop Signal handlers Re-arming of the signals 9/16/2021

Volatile Page 22 A variable should be declared volatile whenever its value could change

Volatile Page 22 A variable should be declared volatile whenever its value could change unexpectedly. In practice, only three types of variables could change: Memory-mapped peripheral registers Global variables modified by an interrupt service routine Global variables within a multi-threaded application Registers in devices are abstracted for programmatic access as “volatile” type 9/16/2021

Summary Page 23 We studied signals and alarms and their specification and example programs

Summary Page 23 We studied signals and alarms and their specification and example programs 9/16/2021