JOS操作系统实践Lab3:抢占式调度与进程管理

5星 · 超过95%的资源 需积分: 13 33 下载量 46 浏览量 更新于2024-10-25 收藏 307KB PDF 举报
"MIT 6.828操作系统实践课程主要教授操作系统的基础工程原理,包括虚拟内存、内核与用户模式、系统调用、线程、上下文切换、中断、进程间通信以及并发活动的协调,以及软件和硬件之间的接口。学生将在构建名为JOS的操作系统中实践这些概念,它具有类似Unix的功能,但以exokernel风格实现,即Unix功能主要作为用户级库而非内建于内核中。JOS操作系统主要由启动、内存管理、用户环境、抢占式多任务、文件系统及进程生成、shell等部分组成。在Lab3中,学生将实现抢占式调度,包括进程管理和中断处理,涉及env.c和trap.c中的关键代码,以及中断描述符表IDT的设置和通用中断处理。实验过程中,学生需自行排查错误,通过panic或cprintf输出信息辅助调试。" MIT的6.828课程深入讲解了操作系统设计的核心概念,尤其是Lab3,其重点在于实现进程管理和中断处理。在这一阶段,学生需要编写一系列函数,如env_init()、env_setup_vm()、segment_alloc()、load_icode()、env_create()、env_run()来管理进程环境,以及trapentry.S中的相关代码、trap_dispatch()、idt_init()、syscall()来处理中断和系统调用。实验强调了在没有预设检查函数的情况下,通过打印信息进行自我调试的重要性。 实验的背景知识提到,JOS操作系统在启动后启用了内存分页管理,i386_init()函数初始化进程结构和中断处理,随后调用env_run()执行首个进程。为了确保进程间的隔离,处理器在执行特权指令时会触发中断,从用户态切换到内核态,完成任务后再返回用户态。在Lab3中,目标是使JOS支持多进程,尽管此时仅有一个进程,但在后续实验中将实现进程创建其他进程的能力。 在进程管理的实现中,JOS采用双向链表来组织和管理进程,类似于物理页面的管理方式。首先,需要建立适当的数据结构,然后分配内存空间给进程,并将ELF格式的二进制代码映射到进程的内存空间中,以便执行初始化后的进程。这个过程涉及到进程控制块的设置、进程创建和调度等复杂操作,是操作系统核心功能的一部分。 Lab3提供了实践经验,让学生深入理解操作系统的内核机制,包括如何在用户态和内核态之间切换、如何管理进程状态以及如何处理中断和系统调用,这些都是构建一个现代操作系统所必不可少的关键技能。