嵌入式全栈开发学习笔记---Linux系统编程(概述)

目录

入门级问题

为什么要学习Linux系统?

为什么Linux系统被嵌入式设备广泛应用?

系统调用

应用层是什么?

系统调用和库函数有什么区别?

为什么在应用层不能直接调用内核中的函数?

为什么有了系统调用就安全了?

什么是API应用编程接口?


目前为止我们已经学习了linux系统的终端上的一些操作命令、vim编辑器上的一些操作命令、C语言和数据结构,还做一个“停车管理系统”的项目。

从今天开始学习Linux系统编程!

入门级问题

为什么要学习Linux系统?

因为在嵌入式设备中用的大多都是Linux系统,而且在现实生活中Linux系统应用的概率可能比windows系统要大,比如安卓系统底层用的就是Linux系统,很多智能家居用的也都是Linux系统,一些路由器也是Linux系统,电视机底层用的也是Linux系统等等,凡是能被手机远程控制的产品,它们的底层一般都是Linux系统。

为什么Linux系统被嵌入式设备广泛应用?

因为Linux系统开源免费,而且功能强大。

说明:本专栏是嵌入式学习栏目,因此数据结构这部分的学习环境我们最好还是在虚拟机(或者一些云服务器)上的Linux终端学习,一切为了方便适应以后的工作环境!

现在开始进入正题......

系统调用

操作系统一般是由两个部分组成:一个操作系统的内核(内核空间),还有一个是应用层(用户空间);

内核(操作系统的核心)又可以分为好几个部分,驱动(操作底层硬件)只是其中一部分。内核有五大功能:内存管理、网络管理、文件管理、系统管理、进程调度。这些核心功能是应用层不能使用的。

应用层是什么?

应用层也可以分为好几个部分,其中最上层就是我们之前经常敲的一些命令:cd, cp, ls等等,这些命令都属于应用层。

比如ls这个命令实现的是显示当前文件夹下的一个文件,那它是怎么实现的呢?

它其实也通过代码实现的,即调用了某些函数来完成这样的一个功能,而这个函数我们就这个把它称为系统调用,因此这个系统调用通俗来讲就是函数。但是这个函数跟我们C语言中的库函数不一样。

目前我们接触了两种函数,一种是库函数(比如printf, strcp),一种是系统调用(open, socket, fork)。

系统调用和库函数有什么区别?

系统调用函数只属于Linux操作系统,只能在Linux操作系统中使用,而库函数,无论是Windows还是Linux或者其他操作系统,只要系统中移植了C库就一定可以使用,所以C语言是跨平台的。

在应用层如果我们想要打印数据我们使用的是printf这个函数,在内核中如果想要打印数据的话也有相应的函数。应用层有一套函数,在内核中也有一套自己的函数。

为什么在应用层不能直接调用内核中的函数?

主要是为了安全起见,因为用户操作有误,系统就“死掉”了。因此,为了安全起见,应用层和内核之间隔了一层系统调用。

为什么有了系统调用就安全了?

因为系统调用中做了一些判断,如果发现所传参数是合法的,就让用户调用内核中的函数。

系统调用衔接了应用层和内核,像ls cd cp这些命令是系统调用之上的,也就是说ls这个命令是通过系统调用来实现的。

什么是API应用编程接口?

API(application program interface)其实也是系统调用这些函数,两个概念差别不大,有时候说系统调用,有时候可以说API。

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

系统命令相对API更高了一层,它实际上是一个可执行程序,它的内部引用了用户编程接口(API)来实现相应的功能。

下节开始学习Linux文件编程!

本篇就到这里,下篇继续!欢迎点击下方订阅本专栏↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vera工程师养成记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值