到目前为止,我已经研究过Linux中的通配符是位于/ etc / glob或称为glob()的C函数中的二进制文件。如今,它在任何基于Unix的系统中都是本机,但是当我们键入类似的内容时,很难理解它的运行位置:
mv * folder
ls *
是在用户空间还是内核空间中运行?
这是context
这是在您提供的示例中的shell级别上完成的,例如bash,tcsh等。我将假定使用C库函数glob(3)来完成此操作。这是严格的用户空间。
是代表用户程序执行内核时使用的内核空间,即系统调用?还是所有内核线程的地址空间(例如调度程序)?
是和是。
他们将使用系统调用glob(3)来完成此任务。系统调用在内核空间中进行。此外,glob(3)还会进行其他系统调用,例如opendir(),它们也在内核空间中运行。