内核函数如何工作?
How the kernel functions work?
通常在函数调用期间,函数被压入进程的堆栈部分,调用函数等待。但是程序栈需要一个进程吧?但内核不是任何进程的一部分(我所说的内核是指执行文件管理和进程间通信的部分)。但我假设甚至内核也使用某些函数来完成各种事情。那么如果不使用进程,内核中的那些函数是如何组织的呢??
你混淆了不同种类的东西。基本上堆栈是内存中的一个区域和一些硬件支持(注册以保存堆栈顶部 - esp 和注册以保存当前堆栈框架基础 ebp 和 push、pop、call、ret 指令。我的意思是 x86)。当你建立了这个 esp 并为堆栈分配了内存——你就完成了,你可以使用它了。因此,要使用堆栈,您不需要使用 "process"。过程是不同顺序的概念。换句话说,没有什么可以阻止内核为自己分配堆栈 ...
相关的,关于如何在 x86 Linux [=10= 上创建 "syscall"(非内核进程调用 "into" 内核的机制)有一个很好的总结] ...然后内核处理中断(这是内核非常擅长的事情,需要处理来自外围设备和芯片组等的硬件中断)。有关内核如何确定谁创建了中断以及他们想要什么的详细信息,请参阅这篇文章。
通常在函数调用期间,函数被压入进程的堆栈部分,调用函数等待。但是程序栈需要一个进程吧?但内核不是任何进程的一部分(我所说的内核是指执行文件管理和进程间通信的部分)。但我假设甚至内核也使用某些函数来完成各种事情。那么如果不使用进程,内核中的那些函数是如何组织的呢??
你混淆了不同种类的东西。基本上堆栈是内存中的一个区域和一些硬件支持(注册以保存堆栈顶部 - esp 和注册以保存当前堆栈框架基础 ebp 和 push、pop、call、ret 指令。我的意思是 x86)。当你建立了这个 esp 并为堆栈分配了内存——你就完成了,你可以使用它了。因此,要使用堆栈,您不需要使用 "process"。过程是不同顺序的概念。换句话说,没有什么可以阻止内核为自己分配堆栈 ...
相关的,关于如何在 x86 Linux [=10= 上创建 "syscall"(非内核进程调用 "into" 内核的机制)有一个很好的总结] ...然后内核处理中断(这是内核非常擅长的事情,需要处理来自外围设备和芯片组等的硬件中断)。有关内核如何确定谁创建了中断以及他们想要什么的详细信息,请参阅这篇文章。