资料介绍
在搭建起嵌入式开发环境之后,从本章开始,读者将真正开始学习嵌入式Linux的应用开发。由于嵌入式Linux是经Linux裁减而来的,它的系统调用及用户编程接口API与Linux基本是一致的,因此,在以后的章节中,笔者将首先介绍Linux中相关内容的基本编程开发,主要讲解与嵌入式Linux中一致的部分,然后再将程序移植到嵌入式的开发板上运行。因此,没有开发板的读者也可以先在Linux上开发相关应用程序,这对以后进入嵌入式Linux的实际开发是十分有帮助的。本章主要讲解文件I/O相关开发,经过本章的学习,读者将会掌握以下内容。
6.1 Linux系统调用及用户编程接口(API)
由于本章是讲解Linux编程开发的第1章,因此希望读者更加明确Linux系统调用和用户编程接口(API)的概念。在了解了这些之后,会对Linux以及Linux的应用编程有更深入的理解。
6.1.1 系统调用
所谓系统调用是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。例如用户可以通过进程控制相关的系统调用来创建进程、实现进程调度、进程管理等。
在这里,为什么用户程序不能直接访问系统内核提供的服务呢?这是由于在Linux中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。
但是,在有些情况下,用户空间的进程需要获得一定的系统服务(调用内核空间程序),这时操作系统就必须利用系统提供给用户的“特殊接口”——系统调用规定用户进程进入内核空间的具体位置。进行系统调用时,程序运行空间需要从用户空间进入内核空间,处理完后再返回用户空间。
Linux系统调用部分是非常精简的系统调用(只有250个左右),它继承了UNIX系统调用中最基本和最有用的部分。这些系统调用按照功能逻辑大致可分为进程控制、进程间通信、文件系统控制、系统控制、存储管理、网络管理、socket控制、用户管理等几类。
6.1.2 用户编程接口(API)
前面讲到的系统调用并不是直接与程序员进行交互的,它仅仅是一个通过软中断机制向内核提交请求,以获取内核服务的接口。在实际使用中程序员调用的通常是用户编程接口——API,也就是本书后面要讲到的API函数。但并不是所有的函数都一一对应一个系统调用,有时,一个API函数会需要几个系统调用来共同完成函数的功能,甚至还有一些API函数不需要调用相应的系统调用(因此它所完成的不是内核提供的服务)。
在Linux中,用户编程接口(API)遵循了在UNIX中最流行的应用编程界面标准——POSIX标准。POSIX标准是由IEEE和ISO/IEC共同开发的标准系统。该标准基于当时现有的UNIX实践和经验,描述了操作系统的系统调用编程接口(实际上就是API),用于保证应用程序可以在源代码一级上在多种操作系统上移植运行。这些系统调用编程接口主要是通过C库(libc)实现的。
6.1.3 系统命令
以上讲解了系统调用、用户编程接口(API)的概念,分析了它们之间的相互关系,那么,读者在第2章中学到的那么多的Shell系统命令与它们之间又是怎样的关系呢?
系统命令相对API更高了一层,它实际上是一个可执行程序,它的内部引用了用户编程接口(API)来实现相应的功能。它们之间的关系如图6.1所示。
图6.1 系统调用、API及系统命令之间的关系
6.1 Linux系统调用及用户编程接口(API)
由于本章是讲解Linux编程开发的第1章,因此希望读者更加明确Linux系统调用和用户编程接口(API)的概念。在了解了这些之后,会对Linux以及Linux的应用编程有更深入的理解。
6.1.1 系统调用
所谓系统调用是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。例如用户可以通过进程控制相关的系统调用来创建进程、实现进程调度、进程管理等。
在这里,为什么用户程序不能直接访问系统内核提供的服务呢?这是由于在Linux中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。
但是,在有些情况下,用户空间的进程需要获得一定的系统服务(调用内核空间程序),这时操作系统就必须利用系统提供给用户的“特殊接口”——系统调用规定用户进程进入内核空间的具体位置。进行系统调用时,程序运行空间需要从用户空间进入内核空间,处理完后再返回用户空间。
Linux系统调用部分是非常精简的系统调用(只有250个左右),它继承了UNIX系统调用中最基本和最有用的部分。这些系统调用按照功能逻辑大致可分为进程控制、进程间通信、文件系统控制、系统控制、存储管理、网络管理、socket控制、用户管理等几类。
6.1.2 用户编程接口(API)
前面讲到的系统调用并不是直接与程序员进行交互的,它仅仅是一个通过软中断机制向内核提交请求,以获取内核服务的接口。在实际使用中程序员调用的通常是用户编程接口——API,也就是本书后面要讲到的API函数。但并不是所有的函数都一一对应一个系统调用,有时,一个API函数会需要几个系统调用来共同完成函数的功能,甚至还有一些API函数不需要调用相应的系统调用(因此它所完成的不是内核提供的服务)。
在Linux中,用户编程接口(API)遵循了在UNIX中最流行的应用编程界面标准——POSIX标准。POSIX标准是由IEEE和ISO/IEC共同开发的标准系统。该标准基于当时现有的UNIX实践和经验,描述了操作系统的系统调用编程接口(实际上就是API),用于保证应用程序可以在源代码一级上在多种操作系统上移植运行。这些系统调用编程接口主要是通过C库(libc)实现的。
6.1.3 系统命令
以上讲解了系统调用、用户编程接口(API)的概念,分析了它们之间的相互关系,那么,读者在第2章中学到的那么多的Shell系统命令与它们之间又是怎样的关系呢?
系统命令相对API更高了一层,它实际上是一个可执行程序,它的内部引用了用户编程接口(API)来实现相应的功能。它们之间的关系如图6.1所示。
图6.1 系统调用、API及系统命令之间的关系
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- FreeRTOS中的API函数功能分析及调用方法 32次下载
- 如何使用Python实现购物比价API调用的代码实例 25次下载
- 使用Python实现游戏APP充值API调用的代码实例 38次下载
- API-Shop-OCR-营业执照识别API接口Python调用示例代码说明 6次下载
- LINUX系统教程之如何在Linux系统下进行编程 9次下载
- python代码示例之基于Python的日历api调用代码实例 42次下载
- Linux操作系统下C语言编程入门.pdf 95次下载
- 根据tms570ls20x10xFlash使用Flash API编程 18次下载
- The MySQL C API 编程实例 5次下载
- TMS320F281x Flash编程的API的版本变化 0次下载
- linux系统API 5次下载
- linux内核kernel-api 19次下载
- Linux内核系统调用扩展研究 40次下载
- Linux系统调用与实例分析 0次下载
- 嵌入式Linux 下IC 卡接口设计与驱动开发
- Linux内核中信号相关的系统调用 516次阅读
- linux内核系统调用之参数传递 957次阅读
- Linux系统中调用脚本的常见方法 853次阅读
- 调用第三方API接口会遇到哪些问题?如何解决? 1880次阅读
- 调用第三方 API 接口会遇到哪些问题 1292次阅读
- Api接口安全测试方法大全(附一键化扫描工具) 4328次阅读
- 关于API接口相关知识 API的权限与安全问题 1591次阅读
- Linux内核系统调用概述及实现原理 2095次阅读
- 分析API和机器学习未来的发展方式 2106次阅读
- 如何在嵌入式FreeRTOS系统接口调用API? 5536次阅读
- 基于linux系统实现的vivado调用VCS仿真教程 1.1w次阅读
- 了解各种系统调用助你成为一名Linux下编程高手 3197次阅读
- 透了解系统调用助你成为Linux下编程高手 3351次阅读
- 如何搭建API程序_框架api接口规范 1.1w次阅读
- 如何使用API_api接口有什么优点 2w次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21548次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183278次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多