b. ramamurthy pag e 1 task control: signals and alarms chapter 7 and 8 7/2/2015

23
B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 04/27/22

Upload: sybil-powell

Post on 21-Dec-2015

219 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

B. RAMAMURTHY

Page 1

Task Control:Signals and Alarms

Chapter 7 and 8

04/19/23

Page 2: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Multi-taskingPage 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 messagesHow to (software) interrupt a process? signals

04/19/23

Page 3: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

ExamplesPage 3

Consider g++ myProg.c You want to kill this process after you started the

compilation..hit cntrl-CConsider execution of a program called “badprog”

>badprogIt 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

04/19/23

Page 4: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Linux ProcessesPage 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-taskingChapter 8: Task communication and

synchronization

04/19/23

Page 5: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Process creationPage 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.

04/19/23

Page 6: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Termination of a processPage 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.

04/19/23

Page 7: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Process controlPage 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.

04/19/23

Page 8: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

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.

04/19/23

Page 9: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Page 9

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

04/19/23

Page 10: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Page 10

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

04/19/23

Page 11: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Example Code

1. int retVal;

2. printf(" Just one process so far\n");3. printf(" Invoking/Calling fork() system call\n");

4. retVal = fork(); /* create new process*/

5. if (retVal == 0)6. printf(" I am the child %d \n",getpid());

7. else if (retVal > 0)8. printf(" I am the parent, child has pid %d \n", retVal);

9. else10. printf(" Fork returned an error %d \n", retVal);

04/19/23

Page 11

Page 12: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Input/output Resources

What is standard IO?These are resources allocated to the

process at the time of creation:From Wikipedia/Standard_streams

04/19/23

Page 12

Page 13: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

SignalsPage 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 othersSIGHUP, SIGINT, SIGILL, SIGTRAP, SIGFPE,

SIGKILLSIGALRM (sent by kernel to a process after an

alarm timer has expired)SIGTERM signal (signal id, function) simply arms the signal

04/19/23

Page 14: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

04/19/23Page

14

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 Term Termination signal SIGUSR1 30,10,16 Term User-defined signal 1 SIGUSR2 31,12,17 Term User-defined signal 2 SIGCHLD 20,17,18 Ign Child stopped or terminated SIGCONT 19,18,25 Cont Continue if stopped SIGSTOP 17,19,23 Stop Stop process SIGTSTP 18,20,24 Stop Stop typed at tty SIGTTIN 21,21,26 Stop tty input for background process SIGTTOU 22,22,27 Stop tty output for background process

The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.

Page 15: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Realtime signals

Linux supports real-time signals as originally defined in the POSIX.1b 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.

04/19/23

Page 15

Page 16: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Intercept SignalsPage 16

Task1

Task2

Two essential parameters are destination process identifierand the signal code number: kill (pid, signal)Signals are a useful way of handling intermittent data arrivals or rare errorconditions.

04/19/23

Page 17: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Handling SignalsPage 17

Look at the examples:Catching SIGALRM Ignoring SIGALRMsigtest.csigHandler.cpingpong.cSee /usr/include/sys/iso/signal_iso.h for

signal numbers

04/19/23

Page 18: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Signals and AlarmsPage 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 tctime(&t); will convert time to ascii formatAlarm 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

04/19/23

Page 19: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Sample programsPage 19

Starting new tasks in linux: page 165Programs in pages: 174-180 on signals and

alarmsSee demos directory for the codeSee page 175 for the second programSee page 178 … for the third program

04/19/23

Page 20: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

PingpongPage 20

Parent

Child

PSIG 43

CSIG 42

04/19/23

Page 21: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Observe in pingpong.c

pause(): indefinitesleep(): sleep is random/finite timeWhile loopSignal handlersRe-arming of the signals

04/19/23

Page 21

Page 22: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

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

04/19/23

Page 23: B. RAMAMURTHY Pag e 1 Task Control: Signals and Alarms Chapter 7 and 8 7/2/2015

Summary

04/19/23

Page 23

We studied signals and alarms and their specification and example programs