Describe the execution flow of an Interrupt Service Routine (ISR). What are the critical restrictions when writing code inside an ISR?