2017-05-26 215 views
0

Iam困惑系统调用和指令集是否是同义的? MOV,LOAD,CALL,IN,OUT,ADD,SUB等指令是否属于系统调用类别?系统调用指令如open(),close(),read(),write()。如果不是那么它们之间有什么关系。有人可以解释并清除混淆。系统调用和指令集有什么区别

回答

0

需要几本书来解释不同之处。我特别推荐Operating Systems : Three Easy Pieces和一些关于计算机体系结构的书,或者至少在虚构的Y86 instruction集上的幻灯片。

一种instruction set architecture定义由一些处理器和如何每个机器指令改变计算机的(观察到的)状态理解machine code(例如改变virtual address space - 包括所述program countercall stack pointer,存储器locationsprocessor registers内容等... )

A system call由某些应用程序完成以从操作系统内核请求服务。从应用程序的角度来看,这通常是一个基本的机器指令(例如SYSENTERSYSCALL),但内核在返回应用程序之前会运行大量代码(在内核中)。

换句话说,操作系统kernel提供应用程序的过程,所述处理器理解通过系统调用原语(能够运行任何由内核提供的系统调用的增强普通特权的机器代码的错觉;用于Linux看到syscalls(2)为详尽的清单)。另请阅读关于SYSENTER in LinuxSYSENTER on OsDev

问题是,对于不同的CPU modes,某些特权机器指令(例如那些访问外设或MMU)只允许内核使用。如果您的应用程序代码尝试它们,处理器会引发一些异常。

+0

系统调用是否转换为指令集提供的指令?或者我可以说系统调用是指令集上方的一层 –

+0

您正在比较苹果和橙子。系统调用是内核提供的抽象 –

+0

它们之间没有关系吗?我的意思是系统调用必须使用指令集的指令才能在机器级执行 –

0

我们从用户空间调用到内核的函数是调用系统调用

一种指令集是一组能够由CPU(ç entral P rocessing Ù NIT)来识别和执行的机器代码指令。

相关问题