Commit de49859
Changed files (1)
doc
doc/assignment1.md
@@ -8,61 +8,61 @@ Instructions: Please answer the following questions in complete sentences. Your
1. Define the concepts interrupt and trap, and explain the purpose of an interrupt vector.
- 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 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
- ```
+ 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 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
+ ```ruby
+ #!/usr/bin/env ruby
- pid = fork do
- Signal.trap("USR1") do
- puts "done"
- exit 0
- end
+ pid = fork do
+ Signal.trap("USR1") do
+ puts "done"
+ exit 0
+ end
- loop do
- print "."
- sleep 1
+ loop do
+ print "."
+ sleep 1
+ end
end
- end
- Process.detach(pid)
- sleep 5
- Process.kill("USR1", pid)
- ```
+ 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
- ```
+ ```bash
+ モ ruby lib/sigtrap.rb
+ .....done
+ ```
1. How does a computer system with von Neumann architecture execute an instruction?