systemsprogrammingreview · •what unix call creates a process? •fork() duplicates a process so...
TRANSCRIPT
![Page 1: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/1.jpg)
CS 423: Operating Systems Design
Tianyin Xu
CS 423Operating System Design:Systems Programming Review
* Thanks for Prof. Adam Bates for the slides.
![Page 2: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/2.jpg)
CS 423: Operating Systems Design 2
• MP-0 is out.• C4 Readings are out.• If you are enrolled, you should have a VM.• If you haven’t enrolled, you will have a VM after
enrollment.• We will make sure you have enough time to finish
MP-0 if you have a late VM.
MP-0 is out
![Page 3: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/3.jpg)
CS 423: Operating Systems Design
Creating a Process - fork()
3
• What UNIX call creates a process?• fork() duplicates a process so that instead of one
process you get two. ■ The new process and the old process both continue in parallel from the statement that follows the fork()
![Page 4: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/4.jpg)
CS 423: Operating Systems Design
System Calls
4
Function Calls
Caller and callee are in the sameProcess
- Same user- Same “domain of trust”
System Calls
?
![Page 5: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/5.jpg)
CS 423: Operating Systems Design
Review: System Calls
5
Function Calls
Caller and callee are in the sameProcess
- Same user- Same “domain of trust”
System Calls
- OS is trusted; user is not.- OS has super-privileges; user does not- Must take measures to prevent abuse
![Page 6: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/6.jpg)
CS 423: Operating Systems Design
Example System Calls?
6
![Page 7: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/7.jpg)
CS 423: Operating Systems Design
Example System Calls?
7
Example:getuid() //get the user IDfork() //create a child processexec() //executing a program
Don’t confuse system calls with stdlib callsDifferences?Is printf() a system call?Is rand() a system call?
![Page 8: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/8.jpg)
CS 423: Operating Systems Design
Example System Calls?
8
Example:getuid() //get the user IDfork() //create a child processexec() //executing a program
Don’t confuse system calls with stdlib callsDifferences?Is printf() a system call?Is rand() a system call?
![Page 9: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/9.jpg)
CS 423: Operating Systems Design
Syscalls vs. I/O Lib Calls
9
Each system call has analogous procedure calls from the standardI/O library:
System Call Standard I/O call
open fopenclose fcloseread/write getchar/putchar
getc/putcfgetc/fputcfread/fwritegets/putsfgets/fputsscanf/printffscanf/fprintf
lseek fseek
![Page 10: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/10.jpg)
CS 423: Operating Systems Design
Processes
10
■ Possible process states■ Running (occupy CPU)■ Blocked■ Ready (does not occupy CPU)■ Other states: suspended, terminated
Question: in a single processor machine, how many process can be in running state?
![Page 11: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/11.jpg)
CS 423: Operating Systems Design
Processes
11
■ Possible process states■ Running (occupy CPU)■ Blocked■ Ready (does not occupy CPU)■ Other states: suspended, terminated
Question: in a single processor machine, how many process can be in running state?
![Page 12: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/12.jpg)
CS 423: Operating Systems Design
Creating a Process
12
• What UNIX call creates a process?
![Page 13: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/13.jpg)
CS 423: Operating Systems Design
Creating a Process - fork()
13
• What UNIX call creates a process?• fork() duplicates a process so that instead of one
process you get two. ■ The new process and the old process both continue in parallel from the statement that follows the fork()
![Page 14: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/14.jpg)
CS 423: Operating Systems Design 14
• What UNIX call creates a process?• fork() duplicates a process so that instead of one
process you get two. ■ The new process and the old process both continue in parallel from the statement that follows the fork()
• How can you tell the two processes apart?
Creating a Process - fork()
![Page 15: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/15.jpg)
CS 423: Operating Systems Design 15
• What UNIX call creates a process?• fork() duplicates a process so that instead of one
process you get two. ■ The new process and the old process both continue in parallel from the statement that follows the fork()
• How can you tell the two processes apart?• fork() returns
■ 0 to child■ -1 if fork fails■ Child’s PID to parent process
Creating a Process - fork()
![Page 16: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/16.jpg)
CS 423: Operating Systems Design 16
• What UNIX call creates a process?• fork() duplicates a process so that instead of one
process you get two. ■ The new process and the old process both continue in parallel from the statement that follows the fork()
• How can you tell the two processes apart?• fork() returns
■ 0 to child■ -1 if fork fails■ Child’s PID to parent process
■ If the parent code changes a global variable, will the child see the change?
Creating a Process - fork()
![Page 17: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/17.jpg)
CS 423: Operating Systems Design 17
• What UNIX call creates a process?• fork() duplicates a process so that instead of one
process you get two. ■ The new process and the old process both continue in parallel from the statement that follows the fork()
• How can you tell the two processes apart?• fork() returns
■ 0 to child■ -1 if fork fails■ Child’s PID to parent process
■ If the parent code changes a global variable, will the child see the change?■ Nope! On fork, child gets new program counter, stack, file
descriptors, heap, globals, pid!
Creating a Process - fork()
![Page 18: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/18.jpg)
CS 423: Operating Systems Design
Creating a Process
18
• What if we need the child process to execute different code than the parent process?
![Page 19: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/19.jpg)
CS 423: Operating Systems Design 19
• What if we need the child process to execute different code than the parent process?■ Exec function allows child process to execute code that
is different from that of parent■ Exec family of functions provides a facility for
overlaying the process image of the calling process with a new image.
■ Exec functions return -1 and sets errno if unsuccessful
Creating a Process - exec()
![Page 20: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/20.jpg)
CS 423: Operating Systems Design 20
• What is the difference between a thread and a process?
Threads vs. Processes
![Page 21: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/21.jpg)
CS 423: Operating Systems Design 21
• What is the difference between a thread and a process?■ Both provided independent execution sequences, but…■ Each process has its own memory space
■ Remember how child processes can’t see changes to parent’s global variable??
■ Threads run in a shared memory space
Threads vs. Processes
![Page 22: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/22.jpg)
CS 423: Operating Systems Design 22
• What is POSIX?• How do you create a POSIX thread?
Threads vs. Processes
![Page 23: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/23.jpg)
CS 423: Operating Systems Design 23
• What is POSIX?• How do you create a POSIX thread?
Threads vs. Processes
POSIX function descriptionpthread_create create a threadpthread_detach set thread to release resourcespthread_equal test two thread IDs for equalitypthread_exit exit a thread without exiting processpthread_kill send a signal to a threadpthread_join wait for a threadpthread_self find out own thread ID
![Page 24: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/24.jpg)
CS 423: Operating Systems Design
Threads: Lightweight Proc’s
24
Environment (resource) execution
■ (a) Three processes each with one thread■ (b) One process with three threads
Environment (resource) execution
24
![Page 25: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/25.jpg)
CS 423: Operating Systems Design
Threads: Kernel v. User
25
■ What is the difference between kernel and user threads? Pros and Cons?
![Page 26: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/26.jpg)
CS 423: Operating Systems Design
Threads: Kernel v. User
26
■ What is the difference between kernel and user threads? Pros and Cons?
■ Kernel thread packages ■ Each thread can make blocking I/O calls■ Can run concurrently on multiple processors
■ Threads in User-level ■ Fast context switch■ Customized scheduling
![Page 27: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/27.jpg)
CS 423: Operating Systems Design
Hybrid Threads (Solaris)
27
M:N model multiplexes N user-level threads onto M kernel-level threads
Good idea? Bad Idea?
![Page 28: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/28.jpg)
CS 423: Operating Systems Design
Synchronization
28
■ Processes and threads can be preempted at arbitrary times, which may generate problems.
■ Example: What is the execution outcome of the following two threads (initially x=0)?Thread 1:
Read XAdd 1Write X
Thread 2:
Read XAdd 1Write X
How do we account for this?
![Page 29: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/29.jpg)
CS 423: Operating Systems Design
Critical Regions/Sections
29
Process { while (true) {
ENTER CRITICAL SECTIONAccess shared variables; LEAVE CRITICAL SECTIONDo other work
} }
![Page 30: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/30.jpg)
CS 423: Operating Systems Design
Mutex
30
■ Simplest and most efficient thread synchronization mechanism
■ A special variable that can be either in ■ locked state: a distinguished thread that holds or owns the
mutex; or■ unlocked state: no thread holds the mutex
■ When several threads compete for a mutex, the losers block at that call ■ The mutex also has a queue of threads that are waiting to
hold the mutex. ■ POSIX does not require that this queue be accessed FIFO. ■ Helpful note — Mutex is short for “Mutual Exclusion”
![Page 31: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/31.jpg)
CS 423: Operating Systems Design
POSIX Mutex Functions
31
■ int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr); ■ Also see PTHREAD_MUTEX_INITIALIZER
■ int pthread_mutex_destroy(pthread_mutex_t *mutex); ■ int pthread_mutex_lock(pthread_mutex_t *mutex); ■ int pthread_mutex_trylock(pthread_mutex_t *mutex);■ int pthread_mutex_unlock(pthread_mutex_t *mutex);
![Page 32: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/32.jpg)
CS 423: Operating Systems Design
Pseudocode for a blocking implementation of semaphores:
Semaphores
32
void wait (semaphore_t *sp)if (sp->value >0) sp->value--;else {<Add this process to sp->list><block>
}
void signal (semaphore_t *sp)if (sp->list != NULL)
<remove a process from sp->list, put it in ready state>
else sp->value++;
![Page 33: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/33.jpg)
CS 423: Operating Systems Design
Scheduling
33
■ Basic scheduling algorithms■ FIFO (FCFS)■ Shortest job first■ Round Robin■ Priority Scheduling
![Page 34: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/34.jpg)
CS 423: Operating Systems Design
Scheduling
34
■ Basic scheduling algorithms■ FIFO (FCFS)■ Shortest job first■ Round Robin■ Priority Scheduling
■ What is an optimal algorithm in the sense of maximizing the number of jobs finished?
![Page 35: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/35.jpg)
CS 423: Operating Systems Design
Scheduling
35
■ Basic scheduling algorithms■ FIFO (FCFS)■ Shortest job first■ Round Robin■ Priority Scheduling
■ What is an optimal algorithm in the sense of meeting the most deadlines (of real time tasks)?
![Page 36: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/36.jpg)
CS 423: Operating Systems Design 36
■ Non-preemptive scheduling:■ The running process keeps the CPU until it
voluntarily gives up the CPU ■ process exits■ switches to blocked state■ 1 and 4 only (no 3)
■ Preemptive scheduling:■ The running process can be interrupted and
must release the CPU (can be forced to give up CPU)
Running Terminated
Ready Blocked
1
4
3
Scheduling
![Page 37: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/37.jpg)
CS 423: Operating Systems Design
Signals
37
• What is a signal in UNIX/Linux?
![Page 38: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/38.jpg)
CS 423: Operating Systems Design
Signals
38
• What is a signal in UNIX/Linux?■ A way for one process to send a notification to another■ A signal can be “caught”, “ignored”, or “blocked”
![Page 39: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/39.jpg)
CS 423: Operating Systems Design
Signals
39
• What is a signal in UNIX/Linux?■ A way for one process to send a notification to another■ A signal can be “caught”, “ignored”, or “blocked”
■ Signal is generated when the event that causes it occurs. ■ Signal is delivered when a process receives it. ■ The lifetime of a signal is the interval between its generation
and delivery. ■ Signal that is generated but not delivered is pending. ■ Process catches signal if it executes a signal handler when the
signal is delivered. ■ Alternatively, a process can ignore a signal when it is
delivered, that is to take no action. ■ Process can temporarily prevent signal from being delivered by
blocking it.■ Signal Mask contains the set of signals currently blocked.
![Page 40: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/40.jpg)
CS 423: Operating Systems Design
POSIX-required Signals*
40
Signal Description default action
SIGABRT process abort implementation dependent
SIGALRM alarm clock abnormal termination
SIGBUS access undefined part of memory object implementation dependent
SIGCHLD child terminated, stopped or continued ignore
SIGILL invalid hardware instruction implementation dependent
SIGINT interactive attention signal (usually ctrl-C)
abnormal termination
SIGKILL terminated (cannot be caught or ignored)
abnormal termination
* Not an exhaustive list
![Page 41: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/41.jpg)
CS 423: Operating Systems Design
POSIX-required Signals*
41
Signal Description default action
SIGSEGV Invalid memory reference implementation dependent
SIGSTOP Execution stopped stop
SIGTERM termination Abnormal termination
SIGTSTP Terminal stop stop
SIGTTIN Background process attempting read stop
SIGTTOU Background process attempting write stop
SIGURG High bandwidth data available on socket
ignore
SIGUSR1 User-defined signal 1 abnormal termination
* Not an exhaustive list
![Page 42: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/42.jpg)
CS 423: Operating Systems Design
User- generated Signals
42
■ How can you send a signal to a process from the command line?
![Page 43: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/43.jpg)
CS 423: Operating Systems Design
User- generated Signals
43
■ How can you send a signal to a process from the command line?
■ kill
![Page 44: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/44.jpg)
CS 423: Operating Systems Design
User- generated Signals
44
■ How can you send a signal to a process from the command line?
■ kill■ kill -l will list the signals the system understands■ kill [-signal] pid will send a signal to a process.
■ The optional argument may be a name or a number (default is SIGTERM).
■ To unconditionally kill a process, use:■ kill -9 pid which is
kill -SIGKILL pid.
![Page 45: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/45.jpg)
CS 423: Operating Systems Design
Signal Masks
45
■ A process can temporarily prevent a signal from being delivered by blocking it.
■ Signal Mask contains a set of signals currently blocked.■ Important! Blocking a signal is different from ignoring signal.
Why?
![Page 46: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/46.jpg)
CS 423: Operating Systems Design
Signal Masks
46
■ A process can temporarily prevent a signal from being delivered by blocking it.
■ Signal Mask contains a set of signals currently blocked.■ Important! Blocking a signal is different from ignoring signal.
Why? ■ When a process blocks a signal, the OS does not deliver signal
until the process unblocks the signal■ A blocked signal is not delivered to a process until it is unblocked.
■ When a process ignores signal, signal is delivered and the process handles it by throwing it away.
![Page 47: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/47.jpg)
CS 423: Operating Systems Design
Deadlocks
47
![Page 48: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/48.jpg)
CS 423: Operating Systems Design
Deadlocks
48
When do deadlocks occur (hint: 4 preconditions)?
![Page 49: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/49.jpg)
CS 423: Operating Systems Design
Deadlocks
49
• Mutual exclusion• Hold and wait condition• No preemption condition• Circular wait condition
When do deadlocks occur (hint: 4 preconditions)?
![Page 50: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/50.jpg)
CS 423: Operating Systems Design
Resource Allocation Graphs
Deadlocks
50
• resource R assigned to process A• process B is requesting/waiting for resource S• process C and D are in deadlock over resources T and U
assign request
![Page 51: SystemsProgrammingReview · •What UNIX call creates a process? •fork() duplicates a process so that instead of one process you get two. The new process and the old process both](https://reader035.vdocument.in/reader035/viewer/2022071023/5fd7597d3715d239480a81d4/html5/thumbnails/51.jpg)
CS 423: Operating Systems Design
■ shouting■ detection and recovery■ dynamic avoidance (at run-time)■ prevention (by offline design)
● by negating one of the four necessary conditions
Strategies for Dealing with Deadlocks
Deadlocks
51