首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统调用是一个进程吗?

系统调用是一个进程吗?
EN

Unix & Linux用户
提问于 2020-02-07 07:25:23
回答 2查看 197关注 0票数 0

根据我的理解,系统调用是一组内核代码,它是通过异常或中断执行的。我需要知道系统呼叫是否是一个过程?

EN

回答 2

Unix & Linux用户

发布于 2020-02-07 08:01:14

进程可以进行系统调用。最初,在x86机器上,这需要加载寄存器以指示需要哪个调用,然后执行‘int0x80’指令。该软件中断指令导致x86处理器切换到内核,在内核中查看寄存器中的值,然后进行打开、读、写、关闭、查找或任何所需的系统调用。

问一个系统呼叫是否是一个过程,就像问“鸟是不是旅行计划”一样?答案不是。你可以计划你的旅行去看一只鸟。一个进程,为了做任何有用的事情,会进行系统调用(理论上说,另一个进程可以监视共享内存或使用ptrace,这样一个进程就不需要进行系统调用,永远不会有100%的应答),但它们根本不是一回事。

票数 3
EN

Unix & Linux用户

发布于 2020-02-08 13:47:52

进程是正在运行的某些代码的实例。以二进制/bin/bash为例。该代码存在于磁盘上。每次执行/bin/bash时,都会创建一个新进程。

在给定的瞬间,每个CPU要么以用户模式执行,要么以内核模式执行。用户模式表示用户空间代码的执行,内核模式是内核代码的执行。

系统调用是某些用户代码进入内核模式的一种方式。系统调用是在进程上下文中进行的。当执行系统调用时,同一个进程进入内核模式。没有创建新进程来运行系统调用。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/566257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档