DragonOS/docs/kernel
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
..
boot feat(boot): 内核启动命令行参数解析 (#969) 2024-10-13 23:39:55 +08:00
configuration riscv: 把内核编译target改为riscv64gc & 获取time csr的频率 & 修正浮点保存与恢复的汇编的问题 (#699) 2024-04-06 22:13:26 +08:00
container refactor: Remove namespace related code (#1218) 2025-06-28 21:20:21 +08:00
core_api fix: remove useless c code (#1116) 2025-03-27 14:16:10 +08:00
cpu_arch doc: usb legacy support 2022-07-19 18:32:32 +08:00
debug chore: update docker image version in script && update doc (#1076) 2024-12-16 01:48:46 +08:00
device feat(loop_device): 新增loop设备子系统 (#1261) 2025-12-24 14:29:46 +08:00
filesystem refactor(block&filesystem): 移除块设备缓存层并实现FAT表缓存 (#1669) 2026-01-15 20:53:43 +08:00
interrupt docs: 添加Tasklet文档并扩展其数据传递能力 (#1624) 2026-01-09 14:33:23 +08:00
ipc feat: 实现 Restartable Sequences (rseq) 机制 (#1565) 2025-12-27 20:34:35 +08:00
ktest docs: 添加gvisor测例修复指引 (#1541) 2025-12-23 12:24:36 +08:00
libs feat(ida): IDA内部改为使用XArray实现 (#934) 2024-09-25 11:20:52 +08:00
locking refactor(kernel): 重构 Mutex 和 WaitQueue 实现,使用状态机避免唤醒丢失 (#1643) 2026-01-13 20:50:15 +08:00
memory_management refactor(mm): 修改异常表安全拷贝的错误处理返回值 (#1395) 2025-11-21 14:26:52 +08:00
net feat(net): 重构网络子系统,引入NAPI机制与TCP socket改进 (#1599) 2026-01-07 22:50:48 +08:00
process_management feat(exec): 实现多线程exec的去线程化功能 (#1682) 2026-01-19 14:00:25 +08:00
sched refactor(kernel): 重构 Mutex 和 WaitQueue 实现,使用状态机避免唤醒丢失 (#1643) 2026-01-13 20:50:15 +08:00
syscall feat: implement sys_capget and sys_capset system calls (#1293) 2025-09-25 17:17:26 +08:00
trace feat: support tracepoint-based ebpf programs (#1190) 2025-06-14 17:34:45 +08:00