DragonOS/docs/kernel/process_management
LoGin a900ef4719
feat(exec): 实现多线程exec的去线程化功能 (#1682)
* feat(exec): 实现多线程exec的去线程化功能

- 在de_thread()中实现线程组清理与PID交换逻辑
- 添加GROUP_EXEC标志防止exec期间创建新线程
- 修改fork、exit、signal处理以支持去线程化语义

Signed-off-by: longjin <longjin@DragonOS.org>

* fix(process): 修复多线程exec时父进程提前回收旧leader的问题

- 在de_thread中增加对旧leader的回收逻辑,确保由exec线程负责回收
- 新增reap_blocked_by_group_exec函数,在do_wait和do_waitpid中检查并跳过被exec阻
塞的进程回收

Signed-off-by: longjin <longjin@DragonOS.org>

* feat(ipc/sighand): 实现线程组exec的同步机制

- 在SigHand结构体中添加group_exec_wait_queue和group_exec_notify_count字段,用于
线程组exec期间的同步
- 新增wait_group_exec_event_interruptible和wait_group_exec_event_killable方法,
支持可中断和可终止的等待
- 在de_thread函数中使用新的等待机制替代忙等待,提高效率
- 在进程退出时正确处理group_exec_notify_count的递减和唤醒操作
- 修复fork时对GROUP_EXEC和GROUP_EXIT标志的检查,防止在exec期间创建新线程
- 调整进程父子关系处理逻辑,确保wait系统调用在__WNOTHREAD标志下的正确行为
- 在wait_queue模块中新增killable等待模式,支持可终止的信号等待

Signed-off-by: longjin <longjin@DragonOS.org>

* docs: 新增de_thread机制文档并清理调试日志

- 新增de_thread机制原理文档,详细说明多线程exec的去线程化流程
- 清理exec.rs和exit.rs中的调试日志输出

Signed-off-by: longjin <longjin@DragonOS.org>

* refactor(ipc): 添加 with_group_exec_check 方法以统一处理线程组并发插入

- 在 SigHand 结构体中新增 with_group_exec_check 方法,用于在
GROUP_EXEC/GROUP_EXIT 锁下执行关键区操作,避免并发插入线程组
- 重构 ProcessManager
中的线程组加入逻辑,使用新方法替代原有的手动标志检查,提升代码可维护性

Signed-off-by: longjin <longjin@DragonOS.org>

* feat(ipc): 重构线程组exec状态管理

- 新增`start_group_exec`方法,合并设置exec标志与记录执行者操作
- 重构`exchange_tid_and_raw_pids`方法,整合线程ID与原始PID交换逻辑
- 修复`finish_group_exec`调用条件判断逻辑

Signed-off-by: longjin <longjin@DragonOS.org>

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2026-01-19 14:00:25 +08:00
..
de_thread.md feat(exec): 实现多线程exec的去线程化功能 (#1682) 2026-01-19 14:00:25 +08:00
index.rst feat(exec): 实现多线程exec的去线程化功能 (#1682) 2026-01-19 14:00:25 +08:00
kthread.md chore: update docker image version in script && update doc (#1076) 2024-12-16 01:48:46 +08:00
load_binary.md 新的内存管理模块 (#303) 2023-07-22 16:27:02 +08:00