Linux系统调用及用户编程接口(API)学习

Linux系统调用

系统调用指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过 这组“特殊”接口来获得操作系统内核提供的服务。

为什么用户程序不能直接访问系统内核提供的服 务呢?这是由于在Linux中,为了更好地保护内核空间,将程序的运行空间分为用户空间和内核空间(也就是 常称的用户态和内核态),它们分别运行在不同的级别上,逻辑上是相互分离的。因此,用户进程通常情况下 不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。

但是,在有些情况下,用户空间的进程需要获得一定的系统服务(调用内核空间程序),这时操作系 统就必须利用系统提供用户的“特殊接口”———系统调用规定用户进程进入内核空间的具体位置。在进行系 统调用时,程序运行空间需要从用户空间进入内核空间,处理完成后再返回用户空间。

Linux系统调用 还算精简(只有250个左右),它继承了UNIX系统调用中最基本和最有用的部分。这些系统调用按照功能逻辑 大致可分为进程控制、进程间通信、文件系统控制、存储管理、网络管理、套接字控制、用户管理等几类。

用户编程接口(API)

前面讲到的系统调用并不直接与程序员进行交互,它仅仅是一个通过软 中断机制向内核提交请求以获取内核服务的接口。实际使用中,程序员调用的通常都是用户编程接口(API) 。

例如,创建进程的API函数fork()函数对应于内核空间的sys_fork()系统调用,但并不是所有的函数 都对应一个系统调用。有时,一个API函数会需要几个系统调用来共同完成函数的功能,甚至还有一些API函数 不需要调用相应的系统调用(因此它所完成的不是内核提供的服务)。

系统命令

系统命令相对 于API更高了一层,它实际上是一个可执行程序,它的内部引用了用户编程接口(API)来实现相应的功能,它 们之间的关系如下图1:

时间: 2024-09-29 05:22:54

Linux系统调用及用户编程接口(API)学习的相关文章

《LINUX与UNIX SHELL编程指南》学习笔记

linux下文件的几种类型:目录,符号链接.套接字文件.....要注意,说到的文件类型是一个不一样的概念.linux下文件的类型不是后缀名上进行区别."-"表示该文件是一个普通类型的文件.什么是普通类型文件?你得记住linux下几种类型的文件.不属于那里面列出的,就属于普通类型文件了. chmod 77- 文件名 读 4 写 2 执行 1 专业点的描述:chmod改变权限的方式分为:符号模式(就是使用了用户符号进行表示)和绝对模式(就是"chmod 777 文件名"

FTK应用程序编程接口(API)手册-1【转】

转自:http://blog.csdn.net/absurd/article/details/6702047 框架函数 框架函数支撑FTK的主体,它负责初始化应用程序,启动主循环和退出主循环.它对任何一个FTK应用程序都是不可缺少的,即使应用程序没有使用任何控件(当然这也没有什么意义),所以我们先介绍这些函数. 1.初始化FTK 原型:Ret ftk_init(int argc, char* argv[]); 说明:用于初始化FTK,比如平台相关的初始化,加载配置文件,初始化Display,字体

Linux系统调用详解(实现机制分析)--linux内核剖析(六)

系统调用概述 计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同时运行的多个进程都需要访问这些资源,为了更好的管理这些资源进程是不允许直接操作的,所有对这些资源的访问都必须有操作系统控制.也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用(System Call).在linux中系统调用是用户空间访问内核的唯一手段,除异常和陷入外,他们是内核唯一的合法入口. 一般情况下应用程序通过应用编程接口API,而不是直接通过系统调用来编程.在Unix世界,最流行的API

Linux系统调用的运行过程【转】

本文转自:http://blog.csdn.net/kernel_learner/article/details/7331505 在Linux中,系统调用是用户空间访问内核的唯一手段,它们是内核唯一的合法入口.        一般情况下,应用程序通过应用编程接口(API)而不是直接通过系统调用来编程,而且这种编程接口实际上并不需要和内核提供的系统调用对应.一个API定义了一组应用程序使用的编程接口.它们可以实现成一个系统调用,也可以通过调用多个系统调用来实现,即使不使用任何系统调用也不存在问题.

《linux c编程指南》学习手记4

7.1 文件系统简介 7.1.1 文件 文件类型:普通文件.目录文件.链接文件.设备文件.管道文件 文件权限:r w x 访问权限:文件所有者.文件所有者同组用户.其他用户 7.1.2 索引节点 7.1.3 文件系统 树形层次结构系统,文件最终都归结到根目录/上 7.2 基于文件描述符的IO操作 7.2.1文件的创建.打开与关闭 1 文件的创建 create 2 文件的打开 open (文件操作不能保证都是成功的,因此文件操作都要进行检测,如果错误要终止程序) 3 文件的关闭 close 7.2

Mysql C API编程:用C语言编写的Mysql编程接口

软件开发中我们经常要访问数据库,存取数据,之前已经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细讲解如何使用Mysql的C语言API进行数据库编程. API,全称Application Programming Interfaces,即应用程序编程接口,我们可以调用这些接口,执行API函数提供的功能. Mysql C语言API就是用C语言编写的Mysql编程接口,使用这些接口函数可以实现对Mysql数据库的查询等操作. Mysql的安装 要进行Mysql编程首先要在充当Mysql服务器的电脑和

【Qt编程】基于Qt的词典开发系列<八>--用户登录及API调用的实现

在上一篇文章<调用网络API>中,我只讲述了如何直观的使用API接口以及调用API后返回的结果,本文则从程序实现的角度来实现API的调用,当然本程序的实现也是借助于扇贝网的API接口文档http://www.shanbay.com/help/developer/api/. 由API文档可知,要想调用其API,必须先注册.因此,我就注册了,账户名为nineheadedbird, 密码为123456.显然,我们要查词,首先必须得登录该账户.如果用浏览器,那就很简单,只需单纯的输入用户名和密码就可以

《linux c编程指南》学习手记2

第5章 使用make make寻找makefile的规则是在当前目录下依次查找3个文件----GNUmakefile文件,Makefile文件,makefile文件 第6章 进程控制 进程属性: 进程标识符 所占内存空间 相关文件描述符 安全信息 进程环境 信号处理 资源安排 同步处理 进程状态 system函数: 通过调用 fork exec waitpid函数完成,任何一个错误,都会导致system错误 本文转自博客园xingoo的博客,原文链接:<linux c编程指南>学习手记2,如需

浅析Linux中的时间编程和实现原理(四)Linux 内核的工作

回顾 近年来,随着 Linux 的广泛使用,对时间编程提出了更高的要求.实时应用.多媒体软件对时钟和定时器的精度要求不断提高,在早期 Linux 内核中,定时器所能支持的最高精度是一个 tick.为了提高时钟精度,人们只能提高内核的 HZ 值 (一个内核参数,代表内核时钟中断的频率).更高的 HZ 值,意味着时钟中断更加频繁,内核要花更多的时间进行时钟处理.而内核的任何工作对于应用来说纯粹是无益的开销.当 HZ 值提高到 1000 之后,如果继续提高,Linux 的可用性将下降. 另外一方面,我