Linux系统调用及用户编程接口(API)学习
Linux系统调用
系统调用指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。
为什么用户程序不能直接访问系统内核提供的服务呢?这是由于在Linux中,为了更好地保护内核空间,将程序的运行空间分为用户空间和内核空间(也就是常称的用户态和内核态),它们分别运行在不同的级别上,逻辑上是相互分离的。因此,用户进程通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。
但是,在有些情况下,用户空间的进程需要获得一定的系统服务(调用内核空间程序),这时操作系统就必须利用系统提供用户的“特殊接口”———系统调用规定用户进程进入内核空间的具体位置。在进行系统调用时,程序运行空间需要从用户空间进入内核空间,处理完成后再返回用户空间。
Linux系统调用还算精简(只有250个左右),它继承了UNIX系统调用中最基本和最有用的部分。这些系统调用按照功能逻辑大致可分为进程控制、进程间通信、文件系统控制、存储管理、网络管理、套接字控制、用户管理等几类。
用户编程接口(API)
前面讲到的系统调用并不直接与程序员进行交互,它仅仅是一个通过软中断机制向内核提交请求以获取内核服务的接口。实际使用中,程序员调用的通常都是用户编程接口(API)。
例如,创建进程的API函数fork()函数对应于内核空间的sys_fork()系统调用,但并不是所有的函数都对应一个系统调用。有时,一个API函数会需要几个系统调用来共同完成函数的功能,甚至还有一些API函数不需要调用相应的系统调用(因此它所完成的不是内核提供的服务)。
系统命令
系统命令相对于API更高了一层,它实际上是一个可执行程序,它的内部引用了用户编程接口(API)来实现相应的功能,它们之间的关系如下图1:
转自: http://blog.csdn.net/mybelief321/article/details/8988862
Linux系统调用及用户编程接口(API)学习相关推荐
- python 调用linux内核api_Linux系统调用及用户编程接口(API)学习
Linux系统学习 系统调用指操作系统提供给用户程序调用的一组"特殊"接口,用户程序可以通过这组"特殊"接口来获得操作系统内核提供的服务. 为什么用户程序不能直 ...
- python如何实现接口安全_利用pypy沙箱模式实现安全的开放式Python用户编程接口的方法与流程...
本发明涉及人机交互技术领域,具体为一种利用pypy沙箱模式实现安全的开放式Python用户编程接口的方法. 背景技术: 编程是人与计算机交互最直接与高效的方式,由于其专业性与敏感性,一般产品不会提供该 ...
- [转载]Z-stack 应用程序编程接口(API)-网络层
原文地址:Z-stack 应用程序编程接口(API)-网络层作者:vexation NWK 层为更高层提供了如下功能:· · 网络管理 · 地址管理 · 网络参数与功能函数 除了管理功能,NW ...
- USB联机线编程接口(API)
USB联机线编程接口(API) 2013-10-19 本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用. 关键字:USB隔离线.USB点对点通讯.USB通 ...
- USB数据共享、联机线、联网线编程接口(API)
本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用. USB联机线编程接口(API) 2017-11-26 一.概述 USB2.0理论传输速率最高为480M ...
- java api接口报500_应用程序编程接口API,我们来聊一聊这个熟悉的名词
API,全称叫做Application Programming interface,也就是应用程序接口,API是一些预先定义的函数,我是学Java的,当我要使用这些函数的时候,便可以直接调用Java ...
- 《LINUX与UNIX SHELL编程指南》学习笔记
linux下文件的几种类型:目录,符号链接.套接字文件.....要注意,说到的文件类型是一个不一样的概念.linux下文件的类型不是后缀名上进行区别. "-"表示该文件是一个普通类 ...
- Linux设备驱动:DMA 接口API
目录 DMA概述 DMA与cache的一致性 相关API DMA数据结构 DMA概述 DMA是一种无需CPU的参加就可以让外设与系统内存之间进行双向数据传输的硬件机制. 它可以使系统CPU从实际的I/ ...
- 数据挖掘与机器学习:Weka Java 编程接口 API
文章目录 1 环境配置 2 数据模型 2.1 Instances:数据集 2.2 Instance:数据实例 2.3 Attribute:属性类 3 DataSource 4 DataSink 5 数 ...
最新文章
- SpringBoot第二十四篇: springboot整合docker
- WinForms多线程编程之多线程计算器
- R语言 文本挖掘 tm包 使用
- django中的项目使用mysql中的配置新建用户授予权限
- laravel基本信息
- 【清单】语言、框架及库的官方文档、examples、tutorials
- String是java中的基本数据类型吗
- gcc离线安装 ubuntu 不用编译_「ubuntu安装gcc」ubuntu18.04安装gcc详细步骤(附问题集) - seo实验室...
- 计算机到期收益率公式,用到期收益率计算债券价格
- ASP.NET的六大对象介绍
- 在线AI日语视频音频翻译中文字幕
- 【python】pythonPTA编程练习2
- redis--客户端
- 天童美语植树节:前人栽树后人乘凉
- 用SmartDraw绘制需求分析过程中的功能图
- 7-1 统计正数和负数的个数然后计算这些数的平均值 (15 分)-java
- Linux命令行技巧——使用目录栈进行导航
- android elevation 白色,关于android:elevation的疑问
- 欧姆龙r88d系列服务器说明书,欧姆龙R88D/R88M选型使用手册(中文)
- 信号完整性分析1——信号完整性分析概论
热门文章
- getResources()方法
- Visual LISP 第5章 编辑源程序代码(1)文本编辑工具
- 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09
- XP与Ubuntu双系统的问题
- c++学习笔记之构造函数
- 使用tensorflow出现 ImportError: DLL load failed: 找不到指定的程序
- 读书笔记《单核工作法》_6:颠倒you'xian'ji
- [云炬创业基础笔记]第十一章创业计划书测试3
- USTC English Club Note20171023(2)
- 科大星云诗社动态20201118