给当前任务。但原来 add_signal_to_current 只写到 task 级别的 pending,调度检查信号时却读的是 process 级别的 signals,信号根本没被检查到,任务就一直重试页错误→死循环。修法是让 add_signal_to_current 同时同步到 process 的 SignalFlags,这样 check_signals 能发现并杀掉进程。 2. 用户栈布局问题:exec 构建用户栈时原来用 max_virt_mem + PAGE_SIZE 作为栈顶,但 max_virt_mem 已经指向了最后一个段末尾(也就是用户栈应该开始的位置),再加 PAGE_SIZE 就把栈放在了空白区域之外,导致缺页拿到的是 COW 共享帧而非独立帧。改为直接用 max_virt_mem 就修好了。