1 / 7

The Stack

The Stack. This is a special data structure: The first item to be placed into the stack will be the last item taken out. Two basic operations: Push: Places items on the stack New items will be placed on top of old ones. Pop: Removes items from the stack.

jodyr
Download Presentation

The Stack

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The Stack • This is a special data structure: • The first item to be placed into the stack will be the last item taken out. • Two basic operations: • Push: Places items on the stack • New items will be placed on top of old ones. • Pop: Removes items from the stack. • Removes most recently placed item from the stack and returns it. • Cannot pop a specific item from the stack without popping items pushed after it.

  2. The Process Context • Programs running in memory are called “processes” • A process would make use of registers, while the processor will use the Program Counter to keep track of which instruction in the program is to be executed next. • The contents of the registers and the Program Counter is called the “context” of the process.

  3. Saving the Process Context • When an interrupt occurs, the currently executing process must be suspended so that the interrupt handler can handle the interrupt. • We must save the address of the next instruction of the process to be executed so that we can resume the process at the point it was interrupted. • The handler may modify register values, and the original values must be saved. • The suspended process must be able to resume after the handler has finished handling the interrupt, and it must continue as though the interrupt never occurred. • To achieve this it is vital to save the context of the process.

  4. Using the Stack • The stack is a natural tool for saving process contexts. We can modify the interrupt handling procedure thus: • Suppose a process P with context Cp is running when an interrupt I occurs. • Save the context of P into the stack: push(Cp). • The result is that the address of the next instruction to be executed is saved together with the current register values. • Place the address of the interrupt handler into the program counter (you can obtain the address from an interrupt vector table, or from a fixed location. E.g. in MIPS the interrupt handler is always at address 0x4000040). This will cause the interrupt handler to be executed.

  5. Using the Stack • When the interrupt handler finishes, do a pop() to restore the context of Process P. • The PC is now restored to the address of the next instruction to be executed in Process P, the registers are restored to their former values • This causes the process P to continue executing at the point where it left off.

  6. Nested Interrupts • As an interrupt handler is executing, it is possible that a higher priority interrupt occurs. • In this case, the interrupt handler is treated like any other process • The context of the interrupt handler is pushed onto the stack. • The new interrupt handler is executed. • When it ends, the context of the previous handler is restored, and the previous handler executes to completion.

  7. Nested Interrupts • When the previous interrupt handler ends, it restores the context of the interrupted process, and the process continues where it left off.

More Related