基于ORANGE'S源码的第三次实验:操作系统实现与调试

需积分: 0 0 下载量 131 浏览量 更新于2024-08-05 收藏 739KB PDF 举报
在本次实验记录中,学生冯亚林(学号191850036,南京大学软件学院)针对操作系统实现项目《ORANGE’S:一个操作系统的实现》进行了深入学习和实践。首先,他从Gitee仓库获取了第七章的源码,并选择文件夹m作为开发框架。在项目开始前,他进行了必要的准备工作,包括大致阅读参考资料、调试程序环境以及运行样例代码,以熟悉项目背景和代码结构。 遇到的问题之一是编译时的“__stack_chk_fail_local”错误,这个问题在Ubuntu环境下通过在makefile的CFLAGS中添加`-fno-stack-protector`选项得以解决。另一个挑战是由于虚拟机是64位的,而源程序是32位的,因此他需要在makefile中明确指定使用32位编译和链接方式。 在实现过程中,学生扩展了makefile的功能,增加了对"makerun"的支持,即在makeimage之后直接在终端执行"bochs"命令来启动虚拟机。他意识到大部分任务已完成,但仍需实现Tab键功能、20秒清屏、ESC按键查找以及Ctrl+Z撤回等特定功能。 在源码阅读方面,他建议按照《orange's》这本书的指导,先从第242页至252页关于键盘输入相关部分开始理解,特别是`keyboard.keyboard.c`中的`keyboard_handler()`函数和`init_keyboard()`方法,这两个函数分别负责键盘中断处理和初始化键盘中断。书中还提到,键盘输入是通过8048或兼容的键盘控制器8042实现的,这部分内容对于理解操作系统如何处理用户输入至关重要。 总结来说,这次实验涉及到了操作系统源码的调试、编译问题的解决、虚拟机环境配置、源码阅读策略以及具体功能的实现,这些都是操作系统实现项目中的核心知识点。通过这个过程,学生不仅提升了编程技能,也加深了对操作系统原理的理解。