instructions in this assignment you will implement interrupt support f
Search for question
Question
Instructions
In this assignment, you will implement interrupt support for our operating
system. Interrupts are powerful methods of stopping current CPU execution in
favour of another task, which is the foundation for modern multitask OSes.
## Learning Outcome
1. You should be able to understand the purpose of the interrupt descriptor table.
2. You should know what ISR is used for.
3. You should know what IRQs are used for
4. You should know the concept of Interrupts in operating systems.
## Relevant Material
1. https://wiki.osdev.org/Interrupts
2. https://wiki.osdev.org/Interrupts Tutorial
3. Tanenbaum. Section 3.7
4. Nick Blundell. Section 3.3.1
5. https://github.com/cfenollosa/os-tutorial/tree/master/18-interrupts
## **Task 1:** Interrupt Descriptor Table (IDT)
The task is to implement IDT for your operating system. This will allow for
catching interrupts from hardware and software.
1. Define the Interrupt Descriptor Table and its pointer header files.
2. Define at least three Interrupt Service Routines (ISRs) for three different
interrupts. You can also define all 256
3. Set up the IDT using the lidt instruction in assembly language.
## Task 2: Interrupt Service Routines (ISRs)
1. Implement the three ISRs in C or C++.
2. Each ISR should print a message to the screen indicating which interrupt was
triggered.
1. You can trigger interrupts with the asm("int 0x0<NUMBER>”); command
## Task 3: Interrupt Requests (IRQs) 1. Implement simple IRQ support for IRQ0 to IRQ15
## Task 4: Keyboard Logger
1. Implement an ISR for IRQ1, which is used for the PS/2 keyboard.
2. Read the scancode from the keyboard and store it in a buffer.
3. Translate the scancode to ASCII using a lookup table. You need to make the
lookup table. You can find many examples on the internet.
4. Print the ASCII character to the screen.
## Submission
<aside>
Keep your report private (in Overleaf or similar), but keep your git
repository public. There are checks in place for detecting code cheating, so it's
best just to do the work yourself, write the report, and get the grade.
</aside>
- Report(no limit)
code (no gpt)/n