我能够执行系统调用调用并在内核中进行处理。但我还不清楚几件事。进入 swi 例程后,内核将用户模式寄存器保存在堆栈中。问题是-
是谁的栈?(因为 swi 处理和相应的系统调用例程需要堆栈帧才能工作)
如果是 Kernel 自己的堆栈,将从哪里获得分配的堆栈..?它会开始使用当前的堆栈吗?如果是,那么 current 可以是当时内核中可能正在执行的任何进程。这不会耗尽当前的堆栈吗?
如果它在 swi 处理程序中使用当前正在执行的用户进程的堆栈,那么这将是内核现在正在访问的用户地址空间。这可能吗?由于内核可寻址内存在 1GB 以内(如果在 4GB RAM 内存系统中使用 1:3 的内核与用户地址空间比率)。