系统调用概念

原创 2015年11月18日 14:53:09

“操作系统”通常包含以下两种含义:

1、表示完整的软件包,包括用来管理计算机资源的核心层软件,以及附带的所有标准软件工具,诸如命令行解释器、图形用户界面、文件操作工具和文本编辑器等;

2、狭义上的操作系统是指管理和分配计算机资源(如CPU、RAM和设备)的核心层软件。

内核负责管理分配计算机资源,作为计算机和用户之间的沟通桥梁而存在。因此就有内核态和用户态的概念。执行硬件指令可以在两种状态间转换。与之对应,可以将虚拟内存分为内核空间和用户空间。在用户态运行时,CPU只能访问用户空间;在内核态运行时,CPU可以访问内核空间和用户空间。

系统调用是受控的内核入口,借助这一机制,进程可以请求内核以自己的名义去执行某些动作。以应用程序编程接口的形式(API),内核提供了一系列服务。这些服务包括创建新锦程、执行I/O、为进程间通信创建管道等。

需要注意:

1、系统调用将处理器从用户态切换到内核态,以便CPU访问受保护的内核空间;

2、系统调用的组成是固定的,每个系统调用都由一个唯一的数字来标识;

3、每个系统调用都提供一套参数,来规范用户空间与内核空间之间的信息传递;

从编程角度来看,系统调用很像C语言函数调用。下面是一个系统调用事件的发生顺序:

1、应用程序通过调用C语言的外壳函数(wrapper)发起系统调用;

2、对系统调用中断处理例程来说,外壳函数必须保证所有的系统调用参数可用。参数是通过堆栈传递到外壳函数的,但内核希望这些参数置入特定的寄存器。因此,外壳函数将上述参数复制到寄存器;

3、由于所有的系统调用进入内核的方式相同,内核需要设法区分每个系统调用。因此外壳函数会将系统调用编号复制到一个特殊的CPU寄存器中;

4、外壳函数执行一条中断机器指令(int 0x80),引发处理器从用户态切换到内核态,并执行系统中断0x80的中断矢量所指向的代码;

5、为响应0x80中断,内核会调用system_call()例程,来处理中断,具体如下:
(1)在内核栈中保存寄存器值;

(2)审核系统调用编号的有效性;

(3)以系统调用编号对存放所有调用服务例程的列表(内核变量sys_call_table)进行索引,发现并调用相应的系统调用服务例程。若系统调用服务例程带有参数,那么将首先检查参数的有效性。随后该服务例程会执行必要的任务,这可能会涉及对特定参数中指定地址处的值进行修改,以及在用户内存和内核内存间传递数据。最后该服务例程会将结果状态返回给system_call()例程;

(4)从内核态回复寄存器的值,并将系统调用返回值置于堆栈中;

(5)返回外壳函数,同时将处理器切换到用户态;

6、若系统调用服务例程的返回值表明调用出错,外壳函数会使用该值来设置全局变量errno。然后外壳函数会返回调用函数,并返回一个整数型值,以表明系统调用是否成功。

下图以系统调用execve()为例,展示了上述事件的发生序列:


版权声明:

相关文章推荐

操作系统概念学习笔记 7 操作系统结构

操作系统概念学习笔记 7操作系统结构系统设计设计目标系统设计的第一个问题是定义系统的目标与规格。在最高层,系统设计受到硬件选择和系统类型的影响。需求可以分为两个基本类:用户目标和系统目标策略和机制操作...

Windows系统调用架构分析—也谈KiFastCallEntry函数地址的获取

为什么要写这篇文章 1.      因为最近在学习《软件调试》这本书,看到书中的某个调试历程中讲了Windows的系统调用的实现机制,其中讲到了从Ring3跳转到Ring0之后直接进入了KiFastC...

操作系统概念学习笔记 6 系统调用

操作系统概念学习笔记 6系统调用系统调用系统调用(system call),通常用c或c++编写,对底层任务(如需直接访问硬件)可能以汇编语言指令的形式提供。一个系统调用的例子: 编写一个从一个文件...

系统调用与API的区别

1.为什么用户程序不能直接访问系统内核模式提供的服务?      在linux中,将程序的运行空间分为内核与用户空间(内核态和用户态),在逻辑上它们之间是相互隔离的,因此用户程序不能访问内核数据,也...

系统调用概念

系统调用概念本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:系统调用是操作系统提供给用户程序调用的接口。用户程序通过接口来获得操作系统内核提供的服务...

系统调用,上下文切换及中断概念的汇总

仔细揣摩了一段时间.        系统调用,用户进程进入内核态,进程栈进入内核态栈, cpu进入内核态,cpu用户态各寄存器的值保存到内核态栈,执行内核态代码. 执行完从内核态返回到用户态,包括进程...

现代操作系统笔记2(操作系统概念和系统调用)

操作系统概念: 1.进程 本质上是正在执行的一个程序,进程在其地址空间内读写,该地址空间存放有可执行程序、程序的数据以及程序的堆栈,进程的资源集包括寄存器、打开文件的清单、突出的报警、有关进程的清单。...

java读word系统调用工具

  • 2017-10-04 00:22
  • 844KB
  • 下载

3-08 Linux系统调用

(本节笔记的实验代码,在这里) 1.  系统调用(sys_call)的作用与介绍   系统调用并不是由C库或其他库中实现的,用户空间的应用程序用到的系统调用函数sys_call的实现来源于...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)