lab4-19335074 -黄玟瑜1
需积分: 0 30 浏览量
更新于2022-08-04
收藏 1.17MB PDF 举报
【操作系统实验:中断处理与混合编程】
实验报告涵盖了操作系统课程中的中断处理和混合编程主题,由中山大学计算机科学与技术(超算)专业的学生黄玟瑜完成,指导教师为陈鹏飞。实验主要分为四个部分:混合编程的基本思路、使用C/C++编写内核、中断的处理以及时钟中断。
**1. 混合编程的基本思路**
混合编程是指在一个程序中同时使用高级语言(如C或C++)和低级语言(如汇编)来利用各自的优势。在Example 1中,实验展示了如何在C函数(c_func.c)和C++函数(cpp_func.cpp)中定义函数,然后在汇编函数(asm_func.asm)中调用它们。关键在于理解如何在不同语言间传递控制权,例如,通过`global`和`extern`关键字在汇编代码中声明C函数,以及在C++中使用`extern "C"`来避免名称修饰。
**1.1 复现Example 1**
实验者创建了四个文件:c_func.c,cpp_func.cpp,asm_func.asm和main.cpp。汇编函数function_from_asm调用C和C++函数,而main.cpp则调用汇编函数。通过Makefile管理编译过程,将四个源文件分别编译为.o目标文件,再链接为可执行文件。
**2. 使用C/C++编写内核**
在Example 2中,实验者学习了如何构建内核。这个过程涉及了内核的加载、编译、包含头文件和运行步骤。内核加载通常涉及到设置内存映射,初始化数据结构,以及设置中断描述符表(IDT)。实验者详细介绍了每个步骤,包括make构建过程,以及如何在内核中输出学号。
**3. 中断的处理**
中断是操作系统响应硬件事件的关键机制。实验者在Example 3中初始化了IDT,这是处理中断的基础。IDT定义了处理器如何响应各种中断和异常。此外,实验者还修改了中断处理函数,以理解中断处理流程。
**4. 时钟中断**
时钟中断是定时器硬件产生的周期性中断,用于调度任务和保持系统时钟同步。在Example 4中,实验者编程8259A中断控制器,使其能够触发中断,并编写了一个时钟中断处理程序,该程序在接收到中断时显示学号,类似于跑马灯效果,展示了中断处理的实际应用。
实验报告深入浅出地探讨了操作系统中的核心概念,通过实践操作使学生对中断处理和混合编程有了更直观的理解。通过这样的实验,学生不仅能掌握理论知识,还能提高动手能力和问题解决技巧,为将来从事操作系统开发或相关领域的工作打下坚实基础。