# write-linux1.0-from-scrath **Repository Path**: AprilSloan/write-linux1.0-from-scrath ## Basic Information - **Project Name**: write-linux1.0-from-scrath - **Description**: ... - **Primary Language**: C - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-05-30 - **Last Updated**: 2024-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # write-linux1.0-from-scratch 这是一个从零编写linux1.0的工程。 ## chapter目录 在主目录下有chapter01、chapter02等目录,代表第一章、第二章内容,每一章都有一个相应的任务。每一章下有几个小节,每一节完成任务的某一部分,在每个小节下都可以运行、调试操作系统。 在前两章的小节中执行`make`会使用bochs调试。在纯汇编环境中,bochs要比qemu更好用。 从第三章开始,执行`make`会运行操作系统。如果想要调试,在一个终端执行`make qemu`,在另一个终端执行`make gdb`。 ## 工程目录 - 1.简单的bootloader - 1.1 简单的启动盘 - 1.2 打印Hello World - 1.3 boot和loader - 1.4 完善setup.s - 2.内核初始化 - 2.1 添加内核代码 - 2.2 完善内核加载与移动 - 2.3 开始编写内核 - 2.4 设置idt - 2.5 获取机器系统参数 - 3.printk函数 - 3.1 qemu - 3.2 初始化屏幕相关参数 - 3.3 printk函数(1) - 3.4 printk函数(2) - 3.5 printk函数(3) - 3.6 增量编译 - 4.初始化 - 4.1 PIC初始化 - 4.2 异常初始化 - 4.3 时钟初始化 - 5.内存管理 - 5.1 虚拟地址 - 5.2 内存初始化 - 5.3 页面的分配和回收 - 5.4 kmalloc和kfree - 6.进程管理 - 6.1 任务初始化 - 6.2 系统调用 - 6.3 fork - pcb初始化 - 6.4 fork - 设置地址空间 - 6.5 任务调度 - 6.6 时钟中断 - 6.7 进程控制 - 6.8 信号 - 6.9 缺页异常 - 7.硬盘操作 - 7.1 硬盘中断 - 7.2 读取扇区 - 7.3 查找扇区 - 7.4 缓冲区初始化 - 7.5 申请需求 - 7.6 写入扇区 - 8.文件系统 ## 博客结构 画图描述逻辑,讲解为什么这样设计,相对于上一节的影响 添加代码要同时添加对代码出错的处理