根据我的理解,系统调用是一组内核代码,它是通过异常或中断执行的。我需要知道系统呼叫是否是一个过程?
发布于 2020-02-07 08:01:14
进程可以进行系统调用。最初,在x86机器上,这需要加载寄存器以指示需要哪个调用,然后执行‘int0x80’指令。该软件中断指令导致x86处理器切换到内核,在内核中查看寄存器中的值,然后进行打开、读、写、关闭、查找或任何所需的系统调用。
问一个系统呼叫是否是一个过程,就像问“鸟是不是旅行计划”一样?答案不是。你可以计划你的旅行去看一只鸟。一个进程,为了做任何有用的事情,会进行系统调用(理论上说,另一个进程可以监视共享内存或使用ptrace,这样一个进程就不需要进行系统调用,永远不会有100%的应答),但它们根本不是一回事。
发布于 2020-02-08 13:47:52
进程是正在运行的某些代码的实例。以二进制/bin/bash为例。该代码存在于磁盘上。每次执行/bin/bash时,都会创建一个新进程。
在给定的瞬间,每个CPU要么以用户模式执行,要么以内核模式执行。用户模式表示用户空间代码的执行,内核模式是内核代码的执行。
系统调用是某些用户代码进入内核模式的一种方式。系统调用是在进程上下文中进行的。当执行系统调用时,同一个进程进入内核模式。没有创建新进程来运行系统调用。
https://unix.stackexchange.com/questions/566257
复制相似问题