diff options
| author | mo khan <mo@mokhan.ca> | 2021-02-08 10:18:07 -0700 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2021-02-08 10:18:07 -0700 |
| commit | 5c420f26a447501884f1bfa2dee838cc75bdf7b7 (patch) | |
| tree | 872eff766293d1aa432536044a41201638bc8b18 /doc | |
| parent | 8a3baed5a50d724046aee329d7e1271902d2368d (diff) | |
answer question 1 in assignment 1
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/assignment1.md | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/doc/assignment1.md b/doc/assignment1.md index 5cc7dc2..6824f8c 100644 --- a/doc/assignment1.md +++ b/doc/assignment1.md @@ -11,7 +11,58 @@ Instructions: Please answer the following questions in complete sentences. Your An interrupt vector is a list or table of interrupts. Each interrupt has an address to the interrupt routine to execute when the interrupt is signaled. A trap is a way to capture a triggered signal to allow programs to respond to - and handl the signal. + and handle the signal. + + Signals can be sent to a particular process via the `kill` program. + A list of signals that can be sent are listed below: + + ```bash + モ kill -L + 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP + 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 + 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM + 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP + 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ + 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR + 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 + 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 + 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 + 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 + 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 + 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 + 63) SIGRTMAX-1 64) SIGRTMAX + ``` + + Programs can also trap a signal and handle them. In the following example + the Ruby program is trapping the `SIGUSR1` signal to reload a configuration + file. + + ```ruby + #!/usr/bin/env ruby + + pid = fork do + Signal.trap("USR1") do + puts "done" + exit 0 + end + + loop do + print "." + sleep 1 + end + end + + Process.detach(pid) + sleep 5 + Process.kill("USR1", pid) + ``` + + When this program is run it will print a '.' 5 times then exit + + ```bash + モ ruby lib/sigtrap.rb + .....done + ``` 1. How does a computer system with von Neumann architecture execute an instruction? |
