是什么系统调用和指令集之间的区别(What is the difference between sy

2019-09-30 15:22发布

IAM困惑系统调用和指令集是否是同义词? 不喜欢MOV,LOAD,CALL指令,IN,OUT,ADD,SUB等下跌的系统调用的类别? 系统调用指令一样的open(),关闭(),读(),write()方法。 如果没有,那么什么是它们之间的关系。 有人可以请解释并清除混乱。

Answer 1:

需要几本书来解释的差异。 我建议特别是操作系统:三个简单的小品 ,有的书上的计算机体系结构,或者至少一些幻灯片上的虚拟Y86指令集。

一指令集架构定义了机器代码由一些处理器理解和每个机器指令是如何改变的计算机的(观察到的)的状态(例如变化的内容处理器寄存器 -包括在程序计数器和调用堆栈指针 ,存储器位置中的虚拟地址空间 ,等...)

一个系统调用是由一些应用程序从操作系统内核请求服务完成。 但从应用程序的角度来看,这往往是一种基本机器指令(例如SYSENTERSYSCALL ),但内核将返回给应用程序之前运行一个大很多的代码(在内核里)。

换句话说,操作系统的内核提供的应用进程,处理器理解通过系统调用原语(能够运行任何由内核提供的系统调用的增强普通特权的机器代码的错觉;用于Linux见(2)的系统调用用于一个详尽的列表)。 还阅读关于SYSENTER在Linux中和SYSENTER上OsDev 。

的一点是,与各种CPU模式一些特权的机器指令(例如那些访问外围设备或MMU )只允许内核。 如果您的应用程序代码尝试它们,处理器,则会产生一些异常。



Answer 2:

我们从用户空间调用到内核的功能是调用系统调用

指令集是一组能够由CPU(C entral P rocessing 单位犬)来识别和执行的机器代码指令。



Answer 3:

说明: - 它总是给执行单独的任务。

系统调用: - 它是一组指令,由单一的名称被系统识别一起被称为被称为系统调用。



文章来源: What is the difference between system calls and instruction set