diff --git a/docs/introduction/build_system.md b/docs/introduction/build_system.md index ab0e76c80..8b6cb21c8 100644 --- a/docs/introduction/build_system.md +++ b/docs/introduction/build_system.md @@ -215,6 +215,7 @@ make run-docker ### 5.1 创建磁盘镜像   首先,您需要使用**普通用户**权限运行`tools/create_hdd_image.sh`,为DragonOS创建一块磁盘镜像文件。该脚本会自动完成创建磁盘镜像的工作,并将其移动到`bin/`目录下。 +   请注意,由于权限问题,请务必使用**普通用户**权限运行此脚本。(运行后,需要提升权限时,系统可能会要求您输入密码) diff --git a/docs/kernel/debug/debug-kernel-with-gdb.md b/docs/kernel/debug/debug-kernel-with-gdb.md index a6266e6e1..99f3813ce 100644 --- a/docs/kernel/debug/debug-kernel-with-gdb.md +++ b/docs/kernel/debug/debug-kernel-with-gdb.md @@ -3,6 +3,7 @@ ## 前言   GDB是一个功能强大的开源调试工具,能够帮助您更好的诊断和修复程序中的错误。 +   它提供了一套丰富的功能,使您能够检查程序的执行状态、跟踪代码的执行流程、查看和修改变量的值、分析内存状态等。它可以与编译器配合使用,以便您在调试过程中访问程序的调试信息。   此教程将告诉您如何在DragonOS中使用`rust-gdb`来调试内核,包括如何开始调试以及相应的调试命令。 @@ -29,6 +30,7 @@ debug = true ### 1.2 运行DragonOS   准备工作完成后,您就可以编译、运行DragonOS来开展后续的调试工作了。 +   在DragonOS根目录中开启终端,使用`make run`即可开始编译运行DragonOS,如需更多编译命令方面的帮助,详见 > [构建DragonOS](https://docs.dragonos.org/zh_CN/latest/introduction/build_system.html)。 diff --git a/docs/kernel/process_management/kthread.md b/docs/kernel/process_management/kthread.md index 4e69ca82f..f6db6afc4 100644 --- a/docs/kernel/process_management/kthread.md +++ b/docs/kernel/process_management/kthread.md @@ -9,6 +9,7 @@   内核线程的创建是通过调用`KernelThreadMechanism::create()`或者`KernelThreadMechanism::create_and_run()`函数,向`kthreadd`守护线程发送创建任务来实现的。也就是说,内核线程的创建,最终是由`kthread_daemon`来完成。   当内核线程被创建后,默认处于睡眠状态,要使用`ProcessManager::wakeup`函数将其唤醒。 +   当内核其他模块想要停止一个内核线程的时候,可以调用`KernelThreadMechanism::stop()`函数,等待内核线程的退出,然后获得返回值并清理内核线程的pcb。   内核线程应当经常检查`KernelThreadMechanism::should_stop()`的结果,以确定其是否要退出。当检测到需要退出时,内核线程返回一个返回码,即可退出。(注意资源的清理) diff --git a/docs/kernel/sched/cfs.md b/docs/kernel/sched/cfs.md index 284f11ec2..488ec57e9 100644 --- a/docs/kernel/sched/cfs.md +++ b/docs/kernel/sched/cfs.md @@ -16,6 +16,7 @@   ``FairSchedEntity``是完全公平调度器中最重要的结构体,他代表一个实体单位,它不止表示一个进程,它还可以是一个组或者一个用户,但是它在cfs队列中所表示的就单单是一个调度实体。这样的设计可以为上层提供更多的思路,比如上层可以把不同的进程归纳到一个调度实体从而实现组调度等功能而不需要改变调度算法。   在cfs中,整体的结构是**一棵树**,每一个调度实体作为``cfs_rq``中的一个节点,若该调度实体不是单个进程(它可能是一个进程组),则在该调度实体中还需要维护一个自己的``cfs_rq``,这样的嵌套展开后,每一个叶子节点就是一个单独的进程。需要理解这样一棵树,**在后续文档中会以这棵树为核心讲解**。 +   该结构体具体的字段意义请查阅源代码。这里提及几个重要的字段: diff --git a/tools/build_in_docker.sh b/tools/build_in_docker.sh index 8098bdc12..206f17979 100644 --- a/tools/build_in_docker.sh +++ b/tools/build_in_docker.sh @@ -1,6 +1,6 @@ docker rm -f dragonos-build || echo "No existed container" cpu_count=$(cat /proc/cpuinfo |grep "processor"|wc -l) -docker run --rm --privileged=true --cap-add SYS_ADMIN --cap-add MKNOD -v $(pwd):/data -v /dev:/dev -v dragonos-build-cargo:/root/.cargo/registry --name dragonos-build -i dragonos/dragonos-dev:v1.2 bash << EOF +docker run --rm --privileged=true --cap-add SYS_ADMIN --cap-add MKNOD -v $(pwd):/data -v /dev:/dev -v dragonos-build-cargo:/root/.cargo/registry --name dragonos-build -i dragonos/dragonos-dev:v1.8 bash << EOF source ~/.cargo/env source ~/.bashrc cd /data