阿里云
为了无法计算的价值
打开APP
阿里云APP内打开
学习中心> 物联网开发 - Linux高级程序设计全套视频> 正文

物联网开发 - Linux高级程序设计全套视频

99课时 |
397人已学 |
免费
课程介绍
本课程将讲授有关对操作系统的基本操作、Liunx环境下的程序设计等。通过对本课程的学习,可以掌握Linux环境下C语言实现文件操作、标准I/O库,多线程编程的技巧,学会在Linux平台下编写应用程序,培养分析问题和解决问题的实际能力。本课程由千锋教育提供。

系统调用的概念

 

内容介绍

一、学习思路

二、系统调用

 

  1. 学习思路

系统编程的概念,所谓的系统编程是在程序中调用操作系统提供的接口函数进行编程实现一些功能,然后讲系统调用I/O函数,以前讲过F/open,F/read,F/write,文件读写函数,

但是F/open,F/read,F/write属于标准C库的RO库函数。

 

二、系统调用

1.1系统编程概述

调用操作系统提供的接口函数进行编程实现一些功能

①操作系统的职责

操作系统用来管理所有的资源,并将不同的设备和不同的程序关联起来。

电脑中有一些资源比如说屏幕按键鼠标,还可以连接外接打印机等,操作系统就是用来管理这些资源的,操作系统帮忙管理硬件,使用户能够更有效方便的去使用电脑。

②什么是 Linux 系统编程

在有操作系统的环境下编程,并使用操作系统提供的系统调用及各种库,对系统资源进行访问。学会了 C 语言再知道一些使用系统调用的方法,就可以进行 Linux 系统编程了。

像以前学51单片机直接写一个may函数在单片机中运行,这个单片机中是没有操作系统的,系统编程是在有操作系统的环境下,系统调用就是操作系统提供的接口,就是函数对系统资源访问,这一阶段会讲各种各样的操作系统提供的函数,了解了这些函数去调用,就可以获得操作系统提供的功能了。

这个阶段相对简单,就是调各种操作系统提供的接口函数来实现各种各样的功能,例如多任务之间的通信、同步、互斥等等

 

1.2系统调用概念

1.21类UNIX系统的软件层次

LINUX操作系统是一个类UNIX操作系统

这个图最核心的是操作系统内核,实现了各种各样的操作系统的功能,在内核外面灰色的被称为系统调用,其实就是内核kernel提供的一些接口,举个例子,如果kernel可以把他认为是一个房间,系统调用相当于一个一个的门口,用户可以通过门进入内核来获取内核提供的服务。

在system calls的外层有shell、library  routines、applications。

 

①shell

可以调操作系统的接口然后进入内核实现一些服务比如shell中有cd命令,没有可执行程序执行CD时要调用change➕R改变目录函数chdrr这个函数进入内核再去进行切换目录。

 

②library  routines

library  routines是库,

比如以前学过的库函数F/open,F/read,F/write对文件进行操作,

其实F/open,F/read,F/write这样的函数会去调操作系统提供的接口函数,打开文件的函数,F/open,去调用open,通过调open这个操作系统提供的接口进入内核,内核再去调驱动,驱动去打开硬盘上的文件,所以有些库函数也需要调用操作系统提供的接口,并不是说所有的库函数都要调操作系统提供的接口,实际有些string copy就是通过指针实现的并没有调用操作系统提供的接口,但F/open,F/read,F/write这些函数确实调用了操作系统kernel提供的接口。

 

③applications

除此之外applications用户编程接口,用户可以通过shell调用系统接口进入内核,可以去调用库函数,库函数再去系统调用进入内核,而且这里有个缺口可以直接调用系统调用进入内核。

这张图很清晰的表示了各个层面之间的关系,这张图要看懂。

系统调用是操作系统提供给用户程序的一组特殊函数接口。

 

string copy,F/open, string talk这些函数C库给大家提供的接口包含同文件可以直接用,系统调用是操作系统提供的接口,包含对应的同文件也可以直接调用。

Linux的不同版本提供了两三百个系统调用

 

1.22用户程序可以通过这组接口获得操作系统内核提供的服务

例如:

用户系统可以通过文件系统相关的系统调用请求系统打开文件,关闭文件或读写文件