系统调用概念

原创 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()为例,展示了上述事件的发生序列:


系统调用与API的区别

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

系统调用基本概念

系统调用时值就是函数调用,值时调用的函数是系统函数,处于内核态而已。用户在调用系统调用时会向内核传递一个系统调用号,然后系统调用处理程序通过此号从系统调用表中找到相应的内核函数执行(系统调用服务例程)...
  • wrx1721267632
  • wrx1721267632
  • 2016年01月18日 16:17
  • 941

Linux系统调用相关概念

目录: 1. Linux系统调用原理 2. 系统调用的实现 3. Linux系统调用分类及列表 4.系统调用、用户编程接口(API)、系统命令和内核函数的关系 5...
  • jediael_lu
  • jediael_lu
  • 2013年02月16日 15:30
  • 1764

操作系统概念(第三章) 进程

进程进程概念进程进程是执行中的程序,这只是非正式的说法。进程不只是程序代码,程序代码称为文本段(代码段),还包括当前活动,通过程序计数器(PC)的值和处理器寄存器的内容来表示。此外,进程还包括进程堆栈...
  • u013007900
  • u013007900
  • 2015年11月21日 14:36
  • 1273

白话空间统计之五:空间关系的概念化(上)

空间统计分析与传统的统计分析,最大的区别就在于空间统计学把空间信息和空间关系都直接整合到了算法之中。如果取消掉空间相关的特性,空间统计学与传统统计学就没有多大的区别了。   因此在做空间统计时,都要求...
  • allenlu2008
  • allenlu2008
  • 2015年08月06日 16:40
  • 3667

Linux进程概念&相关系统调用(6.3)

一 进程和程序区别  程序:存储在磁盘上可执行指令的集合,是一个文件.典型格式elf  进程:程序的一次执行过程,伴随资源的分配和释放 进程执行的时候需要的资源:内存,时间片,CPU ,文件 ...
  • haoge921026
  • haoge921026
  • 2015年06月03日 19:13
  • 670

Linux系统调用相关概念

目录: 1. Linux系统调用原理 2. 系统调用的实现 3. Linux系统调用分类及列表 4.系统调用、用户编程接口(API)、系统命令和内核函数的关系 5...
  • jinhong_lu
  • jinhong_lu
  • 2015年06月17日 10:23
  • 458

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

仔细揣摩了一段时间.        系统调用过程,用户进程进入内核态,进程栈进入内核态栈, cpu进入内核态,cpu用户态各寄存器的值保存到内核态栈,执行内核态代码. 执行完从内核态返回到用户态,包...
  • jeanter
  • jeanter
  • 2016年06月28日 15:28
  • 1122

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

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

操作系统中最基本的概念——库调用和系统调用

http://blog.csdn.net/clearriver/archive/2009/05/05/4152780.aspx Unix操作系统设计上的陈述: 理解库函数的区别和系统调用,首先要里...
  • Lyintong
  • Lyintong
  • 2016年03月20日 15:24
  • 783
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:系统调用概念
举报原因:
原因补充:

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