系统调用和指令集之间有什么区别

时间:2017-05-26 12:04:29

标签: system-calls instruction-set

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

3 个答案:

答案 0 :(得分:0)

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

instruction set architecture定义某些处理器理解的machine code以及每台机器指令如何改变计算机的(可观察的)状态(例如更改processor registers的内容 - 包括{{3}和} program counter中的call stack pointer,内存locations等等。)

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

换句话说,操作系统system call为应用程序进程提供了一种错觉,即处理器理解由系统调用原语(能够运行内核提供的任何系统调用)增强的普通非特权机器代码; Linux请参阅kernel以获取详尽的列表。另请阅读syscalls(2)SYSENTER in Linux

关键在于,使用各种SYSENTER on OsDev某些特权机器指令(例如访问外围设备或CPU modes的指令)仅允许内核使用。如果您的应用程序代码尝试它们,处理器将引发一些异常。

答案 1 :(得分:0)

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

指令集是机器代码中的一组命令,可由CPU识别和执行( C entral P rocessing <强>û NIT)。

答案 2 :(得分:0)

说明:-总是可以执行个别任务。

系统调用:-这是一组由系统可识别的单一名称共同调用的指令,称为系统调用。