本实验报告为西北工业大学计算机学院开设的《计算机操作系统》课程设计,专注于在操作系统环境下运行用户态程序的实际操作与分析,旨在帮助学生深入理解操作系统原理及其应用。
西工大计算机学院的《计算机操作系统》2022年最新报告详细介绍了编写代码的步骤及相关代码,并提供了实验截图供参考。以下是部分实验内容:
为了在系统用户态模式下加载并运行可执行程序,需要基于Project 2进行以下修改:编辑`user.c`, `elf.c`, `userseg.c`, `kthread.c`, `sysall.c`, 和 `main.c` 文件,并对 Makefile 进行如下调整:
- 删除 `-Werror` 参数,因为它会将所有警告视为错误处理。
- 添加 `-fno-stack-protector` 以防止堆栈溢出。
具体修改内容包括:
1. 修改“src/GeekOS/user.c”文件中的函数 `Spawn()`。该函数用于生成新的用户级进程。
2. 修改“src/GeekOS/user.c”文件中的函数 `Switch_To_User_Context()`,调度程序在执行新进程前调用此函数以切换到用户的地址空间。
3. 修改“src/GeekOS/elf.c”文件中的函数 `Parse_ELF_Executable()`。该实现要求与Project 1相同,因此可以直接使用 Project 1 中的 elf.c 文件。
以上步骤为完成实验所需的基本修改内容。