# Summary * [Introduction](README.md) ## Lab 0 * [Lab 0](lab0.md) * [实验目的](lab0/lab0_1_goals.md) * [准备知识](lab0/lab0_2_prepare.md) * [了解OS实验](lab0/lab0_2_1_about_labs.md) * [设置实验环境](lab0/lab0_2_2_environment.md) * [开发OS实验的简单步骤](lab0/lab0_2_2_1_lab_steps.md) * [通过虚拟机使用Linux实验环境(推荐:最容易的实验环境安装方法)](lab0/lab0_2_2_2_vm_experiment.md) * [安装使用Linux实验环境(适合希望自己安装Linux系统的同学)](lab0/lab0_2_2_3_install.md) * [实验中可能使用的软件](lab0/lab0_2_2_3_1_softwares.md) * [了解编程开发调试的基本工具](lab0/lab0_2_3_tools.md) * [gcc的基本用法](lab0/lab0_2_3_1_gcc_usage.md) * [编译简单的 C 程序](lab0/lab0_2_3_1_1_compile_c_prog.md) * [AT&T汇编基本语法](lab0/lab0_2_3_1_2_att_asm.md) * [GCC基本内联汇编](lab0/lab0_2_3_1_3_gcc_inline_asm.md) * [GCC扩展内联汇编](lab0/lab0_2_3_1_4_extend_gcc_asm.md) * [make和Makefile](lab0/lab0_2_3_2_make_makefile.md) * [gdb使用](lab0/lab0_2_3_3_gdb.md) * [进一步的相关内容](lab0/lab0_2_3_4_further.md) * [基于硬件模拟器实现源码级调试](lab0/lab0_2_4_debug_with_emulator.md) * [安装硬件模拟器QEMU](lab0/lab0_2_4_1_install_qemu.md) * [Linux运行环境](lab0/lab0_2_4_1_1_linux_runtime.md) * [Linux环境下的源码级安装过程](lab0/lab0_2_4_1_2_linux_source_install.md) * [获得并应用修改](lab0/lab0_2_4_1_2_1_patch_qemu.md) * [配置、编译和安装](lab0/lab0_2_4_1_2_2_configure_make_install_qemu.md) * [使用硬件模拟器QEMU](lab0/lab0_2_4_2_qemu_usage.md) * [运行参数](lab0/lab0_2_4_2_1_qemu_runtime_arguments.md) * [常用调试命令](lab0/lab0_2_4_2_2_qemu_monitor_debug.md) * [基于qemu内建模式调试ucore] * [结合gdb和qemu源码级调试ucore](lab0/lab0_2_4_4_gdb_qemu_debug_ucore.md) * [编译可调试的目标文件](lab0/lab0_2_4_4_1_make_obj.md) * [ucore 代码编译](lab0/lab0_2_4_4_2_ucore_make.md) * [使用远程调试](lab0/lab0_2_4_4_3_remote_debug.md) * [使用gdb配置文件](lab0/lab0_2_4_4_4_gdb_config_file.md) * [加载调试目标](lab0/lab0_2_4_4_5_load_debug_target.md) * [设定调试目标架构](lab0/lab0_2_4_4_6_set_debug_arch.md) * [了解处理器硬件](lab0/lab0_2_5_cpu_hardware.md) * [Intel 80386运行模式](lab0/lab0_2_5_1_intel_80386_modes.md) * [Intel 80386内存架构](lab0/lab0_2_5_2_intel_80386_mem.md) * [Intel 80386寄存器](lab0/lab0_2_5_3_intel_80386_registers.md) * [了解ucore编程方法和通用数据结构](lab0/lab0_2_6_ucore_programming.md) * [面向对象编程方法](lab0/lab0_2_6_1_oop.md) * [通用数据结构双向循环链表](lab0/lab0_2_6_2_generic_data_structure.md) * [双向循环链表](lab0/lab0_2_6_2_1_linked_list.md) * [附录A.ucore实验中的常用工具](lab0/lab0_ref_ucore-tools.md) * [附录B.ucore实验参考资料](lab0/lab0_ref_ucore-resource.md) ## Lab 1 * [Lab 1](lab1.md) * [实验目的](lab1/lab1_1_goals.md) * [实验内容](lab1/lab1_2_labs.md) * [练习](lab1/lab1_2_1_exercise.md) * [练习1](lab1/lab1_2_1_1_ex1.md) * [练习2](lab1/lab1_2_1_2_ex2.md) * [练习3](lab1/lab1_2_1_3_ex3.md) * [练习4](lab1/lab1_2_1_4_ex4.md) * [练习5](lab1/lab1_2_1_5_ex5.md) * [练习6](lab1/lab1_2_1_6_ex6.md) * [扩展练习](lab1/lab1_2_1_7_ex7.md) * [项目组成](lab1/lab1_2_2_files.md) * [从机器启动到操作系统运行的过程](lab1/lab1_3_booting.md) * [BIOS启动过程](lab1/lab1_3_1_bios_booting.md) * [bootloader启动过程](lab1/lab1_3_2_bootloader.md) * [保护模式和分段机制](lab1/lab1_3_2_1_protection_mode.md) * [地址空间](lab1/lab1_3_2_2_address_space.md) * [硬盘访问概述](lab1/lab1_3_2_3_dist_accessing.md) * [ELF文件格式概述](lab1/lab1_3_2_4_elf.md) * [操作系统启动过程](lab1/lab1_3_3_booting_os.md) * [函数堆栈](lab1/lab1_3_3_1_function_stack.md) * [中断与异常](lab1/lab1_3_3_2_interrupt_exception.md) * [lab1中对中断的处理实现](lab1/lab1_3_3_3_lab1_interrupt.md) * [实验报告要求](lab1/lab1_4_lab_requirement.md) * [附录A“关于A20 Gate”](lab1/lab1_appendix_a20.md) * [附录B“第一条执行指令”](lab1/lab1_5_appendix.md) ## Lab 2 * [Lab 2 物理内存管理](lab2.md) * [实验目的](lab2/lab2_3_1_phymemlab_goal.md) * [实验内容](lab2/lab2_3_2_phymemlab_contents.md) * [练习](lab2/lab2_3_2_1_phymemlab_exercise.md) * [项目组成](lab2/lab2_3_2_2_phymemlab_files.md) * [物理内存管理](lab2/lab2_3_3_phymem_manage.md) * [实验执行流程概述](lab2/lab2_3_3_1_phymemlab_overview.md) * [探测系统物理内存布局](lab2/lab2_3_3_2_search_phymem_layout.md) * [以页为单位管理物理内存](lab2/lab2_3_3_3_phymem_pagelevel.md) * [物理内存页分配算法实现](lab2/lab2_3_3_4_phymem_allocation.md) * [实现分页机制](lab2/lab2_3_3_5_paging.md) * [段页式管理基本概念](lab2/lab2_3_3_5_1_segment_and_paging.md) * [建立段页式管理中需要考虑的关键问题](lab2/lab2_3_3_5_2_key_problems_in_seg_page.md) * [系统执行中地址映射的四个阶段](lab2/lab2_3_3_5_4_maping_relations.md) * [建立虚拟页和物理页帧的地址映射关系](lab2/lab2_3_3_5_3_setup_paging_map.md) * [实验报告要求](lab2/lab2_3_4_phymemlab_require.md) * [附录A. 探测物理内存分布和大小的方法](lab2/lab2_3_5_probe_phymem_methods.md) * [附录B. 实现物理内存探测](lab2/lab2_3_6_implement_probe_phymem.md) * [附录C. 链接地址/虚地址/物理地址/加载地址以及edata/end/text的含义](lab2/lab2_3_7_phymemlab_concepts.md) * [附录D. 自映射机制](lab2/lab2_3_3_6_self_mapping.md) ## Lab 3 * [Lab 3](lab3.md) * [实验目的](lab3/lab3_1_goals.md) * [实验内容](lab3/lab3_2_lab2.md) * [练习](lab3/lab3_2_1_exercises.md) * [项目组成](lab3/lab3_2_2_files.md) * [虚拟内存管理](lab3/lab3_3_vmm.md) * [基本原理概述](lab3/lab3_3_1_vmm_principles.md) * [实验执行流程概述](lab3/lab3_3_2_labs_steps.md) * [关键数据结构和相关函数分析](lab3/lab3_3_3_data_structures.md) * [Page Fault异常处理](lab3/lab3_4_page_fault_handler.md) * [页面置换机制的实现](lab3/lab3_5_swapping.md) * [页替换算法](lab3/lab3_5_1_page_swapping.md) * [页面置换机制](lab3/lab3_5_2_page_swapping_principles.md) * [实验报告要求](lab3/lab3_6_labs_requirement.md) ## Lab 4 * [Lab 4](lab4.md) * [实验目的](lab4/lab4_1_goals.md) * [实验内容](lab4/lab4_2_labs.md) * [练习](lab4/lab4_2_1_exercises.md) * [项目组成](lab4/lab4_2_2_files.md) * [内核线程管理](lab4/lab4_3_kernel_thread_management.md) * [实验执行流程概述](lab4/lab4_3_1_lab_steps.md) * [设计关键数据结构 -- 进程控制块](lab4/lab4_3_2_pcb.md) * [创建并执行内核线程](lab4/lab4_3_3_create_exec_kernel_thread.md) * [创建第0个内核线程idleproc](lab4/lab4_3_3_1_create_kthread_idleproc.md) * [创建第1个内核线程initproc](lab4/lab4_3_3_2_create_kthread_initproc.md) * [调度并执行内核线程initproc](lab4/lab4_3_3_3_sched_run_kthread.md) * [实验报告要求](lab4/lab4_4_labs_requirement.md) * [附录A:实验四的参考输出](lab4/lab4_5_appendix_a.md) * [附录B:【原理】进程的属性与特征解析](lab4/lab4_6_appendix_b.md) ## Lab 5 * [Lab 5](lab5.md) * [实验目的](lab5/lab5_1_goals.md) * [实验内容](lab5/lab5_2_lab2.md) * [练习](lab5/lab5_2_1_exercises.md) * [项目组成](lab5/lab5_2_2_files.md) * [用户进程管理](lab5/lab5_3_user_process.md) * [实验执行流程概述](lab5/lab5_3_1_lab_steps.md) * [创建用户进程](lab5/lab5_3_2_create_user_process.md) * [进程退出和等待进程](lab5/lab5_3_3_process_exit_wait.md) * [系统调用实现](lab5/lab5_3_4_syscall.md) * [实验报告要求](lab5/lab5_4_lab_requirement.md) * [附录 A:【原理】用户进程的特征](lab5/lab5_5_appendix.md) ## Lab 6 * [Lab 6](lab6.md) * [实验目的](lab6/lab6_1_goals.md) * [实验内容](lab6/lab6_2_labs.md) * [练习](lab6/lab6_2_1_exercises.md) * [项目组成](lab6/lab6_2_2_files.md) * [调度框架和调度算法设计与实现](lab6/lab6_3_scheduler_design.md) * [实验执行流程概述](lab6/lab6_3_1_exercises.md) * [进程状态](lab6/lab6_3_3_process_state.md) * [进程调度实现](lab6/lab6_3_4_process_implement.md) * [内核抢占点](lab6/lab6_3_4_1_kernel_preempt_point.md) * [进程切换过程](lab6/lab6_3_4_2_process_switch.md) * [调度框架和调度算法](lab6/lab6_3_5_scheduler_framework.md) * [设计思路](lab6/lab6_3_5_1_designed.md) * [数据结构](lab6/lab6_3_5_2_data_structure.md) * [调度点的相关关键函数](lab6/lab6_3_5_3_scheduler_point_functions.md) * [RR 调度算法实现](lab6/lab6_3_5_4_RR.md) * [Stride Scheduling](lab6/lab6_3_6_stride_scheduling.md) * [基本思路](lab6/lab6_3_6_1_basic_method.md) * [使用优先队列实现 Stride Scheduling](lab6/lab6_3_6_2_priority_queue.md) * [实验报告要求](lab6/lab6_4_labs_requirement.md) ## Lab 7 * [Lab 7](lab7.md) * [实验目的](lab7/lab7_1_goals.md) * [实验内容](lab7/lab7_2_labs.md) * [练习](lab7/lab7_2_1_exercises.md) * [项目组成](lab7/lab7_2_2_files.md) * [同步互斥机制的设计与实现](lab7/lab7_3_synchronization_implement.md) * [实验执行流程概述](lab7/lab7_3_1_experiment.md) * [同步互斥机制的底层支撑](lab7/lab7_3_2_synchronization_basic_support.md) * [计时器](lab7/lab7_3_2_1_timer.md) * [屏蔽与使能中断](lab7/lab7_3_2_2_interrupt.md) * [等待队列](lab7/lab7_3_2_3_waitqueue.md) * [信号量](lab7/lab7_3_3_semaphore.md) * [管程和条件变量](lab7/lab7_3_4_monitors.md) * [实验报告要求](lab7/lab7_4_lab_requirement.md) * [附录](lab7/lab7_5_appendix.md) ## Lab 8 * [Lab 8](lab8.md) * [实验目的](lab8/lab8_1_goals.md) * [实验内容](lab8/lab8_2_labs.md) * [练习](lab8/lab8_2_1_exercises.md) * [项目组成](lab8/lab8_2_2_files.md) * [文件系统设计与实现](lab8/lab8_3_fs_design_implement.md) * [ucore 文件系统总体介绍](lab8/lab8_3_1_ucore_fs_introduction.md) * [通用文件系统访问接口](lab8/lab8_3_2_fs_interface.md) * [文件系统抽象层 - VFS](lab8/lab8_3_4_fs_abstract.md) * [file & dir接口](lab8/lab8_3_4_1_file_dir_interface.md) * [inode 接口 ](lab8/lab8_3_4_2_inode_interface.md) * [Simple FS 文件系统](lab8/lab8_3_3_sfs.md) * [文件系统的布局](lab8/lab8_3_3_1_fs_layout.md) * [索引节点](lab8/lab8_3_3_2_inode.md) * [设备层文件 IO 层](lab8/lab8_3_5_dev_file_io_layer.md) * [关键数据结构](lab8/lab8_3_5_1_data_structure.md) * [stdout设备文件](lab8/lab8_3_5_2_stdout_dev_file.md) * [stdin 设备文件](lab8/lab8_3_5_3_stdin_dev_file.md) * [实验执行流程概述](lab8/lab8_3_6_labs_steps.md) * [文件操作实现](lab8/lab8_3_7_file_op_implement.md) * [打开文件](lab8/lab8_3_7_1_file_open.md) * [读文件](lab8/lab8_3_7_2_file_read.md) * [实验报告要求](lab8/lab8_4_lab_requirement.md)