嵌入式学习之Linux系统编程篇笔记——系统编程初探

配套视频学习链接:https://www.bilibili.com/video/BV1zV411e7Cy?p=2&vd_source=d488bc722b90657aaa06a1e8647eddfc

目录

Linux系统编程的基本认识

什么是Linux系统编程?

什么是系统编程

系统编程的作用

怎么学习Linux系统编程?

Linux系统编程基本程序框架

Linux系统编程的基本认识

什么是Linux系统编程?

Linux系统编程也叫Linux下的高级编程,是介于应用层和驱动层之间的。

 

什么是系统编程

以 UCOS 裸机实时操作系统为例对系统编程概念进行引入。 相信学过裸机的同学一定不陌生, 在使用 UCOS 实际开发一个项目或者一个产品的时候, 会使用 UCOS 提供的接口进行编程,UCOS 系统编程的一个简单示例代码如下所示:

void task(void *pd)
{
;
} 
OS_STK stack[1024];
int main()
{BspInit();OSInit();OSTaskCreate(task,(void *)0,&stack[1023],1);OSStart();}

上述代码会使用 UCOS 提供的函数对系统和硬件的相关功能进行调用,而系统编程的定义为:使用操作系统自身提供的接口进行开发的过程就叫做系统编程。

由于 UCOS 等一众裸机操作系统实现起来较为简单,所以系统的底层开发人员和上层应用开发人员是同一个人或者同一团队,而 Linux操作系统将底层和上层应用进行了分离,从而可以让更多的人加入到 Linux 系统的开发中,但是这样每个人都会有权力调用底层接口对硬件进行操作,从而给整个系统带来了不稳定性和不安全性。为了解决这一隐患,Linux 系统推出了系统调用。

所谓系统调用指的是 Linux 内核对一系列接口封装后提供给用户的一系列 API 函数,需要特定的机制才能使用系统调用, 所以系统调用的出现, 保证了系统的稳定性和不安全性。
 

系统编程的作用

为了更直观的了解系统编程的作用, 这里作者以武侠小说中练习绝世武功作为类比。 若是想要练成一门绝世武功, 只是有相对应的武功秘籍是不行的, 在在之前, 你需要通过每天扎马步、 跑步等方式对身体进行锤炼, 有了一个好的体魄才能开始武功秘籍的学习。 这里要认清楚,并不是练了武功秘籍才有了好的体魄, 而是有了好的体魄才能练习武功秘籍。

而系统编程就是后学开发的基础, 系统编程基础打好之后可以完成的工作如下所示:

1) 操作系统开发: 系统编程是操作系统开发的基础, 它涉及到开发和维护内核、 驱动程序和其他底层系统软件。

2) 应用程序开发: 一些应用程序需要直接访问硬件或操作系统资源, 例如音频、 视频、网络或文件系统, 因此需要进行系统编程。

3) 系统管理: 系统编程可以用于编写脚本和工具, 以管理计算机系统和网络, 例如配置文件、 监控和自动化任务。

4) 安全: 系统编程可以用于编写安全软件和工具, 例如防病毒软件、 防火墙和入侵检测系统。

5) 性能优化: 系统编程可以用于编写优化代码, 以提高程序的性能和响应速度, 例如利用多线程、 异步 I/O 和内存映射等技术。

 

怎么学习Linux系统编程?

推荐迅为电子的框架学习法,可以参考我的这篇文章:Linux学习方法-框架学习法——Linux应用程序编程框架

Linux系统编程基本程序框架

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{//argc:表示的是命令行中参数的个数//argv:表示的是命令行中的参数int i;printf("argc is %d\n",argc);for(i=0;i<argc;i++){printf("argv[%d] is %s\n",i,argv[i]);};return 0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/549040.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv9改进策略:注意力机制 | 用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测,暴力涨点

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a;用于微小目标检测的上下文增强和特征细化网络ContextAggregation&#xff0c;助力小目标检测 yolov9-c-ContextAggregation summary: 971 layers, 51002153 parameters, 51002121 gradients, 238.9 GFLOPs 改…

系统渐渐沦为“屎山”,这就是真相!

分享是最有效的学习方式。 博客&#xff1a;https://blog.ktdaddy.com/ 背景 小猫维护现有的系统也有一段时间了&#xff0c;踩坑也不少&#xff0c;事故不少。感兴趣的小伙伴可以了解一下&#xff0c;往期的小猫踩坑记合集。 这天&#xff0c;小猫找到了商城系统的第一任开发…

HTML5语义化元素

在HTML5之前&#xff0c;网站的分布层级有哪些呢&#xff1f; nav&#xff0c;header&#xff0c;main&#xff0c;footer 这样做有一个弊端 我们往往过多的使用div&#xff0c;通过ID或class来区分元素 对于浏览器来说这些元素不够语义化 对于我来说搜索引擎来说&#xff0c;不…

CentOS 7 编译安装 Nginx

CentOS 7 编译安装 Nginx 背景下载 Nginx 源码包安装依赖包编译添加环境变量添加守护查考文献 背景 一开始使用 docker 搭建了一个 web 服务器&#xff0c;但是由于 docker 不太方便的部署 TLS 证书&#xff0c;故使用 Nginx 做反向代理&#xff0c;实现 https 连接。 下载 N…

【Chapter1】操作系统概述,计算机操作系统教程,第四版,左万利,王英

文章目录 一、操作系统的基本概念1.1操作系统的层次结构1.2操作系统的运行视图1.3操作系统的概念(定义)1.4操作系统的功能和目标1.4.1操作系统的功能和目标——作为系统资源的管理者1.4.2操作系统的功能和目标——向上层提供方便易用的服务1.4.2.1GUI&#xff1a;图形化用户接口…

Excel之数据透视表

数据透视&#xff1a;逻辑理解与制作步骤 一、创建数据透视表 1、创建数据透视表&#xff1a;每列必须有表头 &#xff08;1&#xff09;选择要创建数据透视表的数据------插入----选择数据透视表 &#xff08;2&#xff09;选择现有工作表然后点击目标表选择合适的位置插入…

FRM模型十八:Merton模型

文章目录 莫顿模型介绍&#xff08;Merton&#xff09;假设表达式信用利差及违约距离 代码实现 莫顿模型介绍&#xff08;Merton&#xff09; 莫顿模型是评估信用风险的一大重要理论。莫顿模型认为&#xff0c;债券是否违约这一行为归根到底是一种选择。当违约的好处>不违约…

Spring-3

目录 Spring AOP和AspectJ AOP 在Spring AOP 中&#xff0c;关注点和横切关注的区别 Spring 框架中的单例 Bean 是线程安全的吗 Spring 是怎么解决循环依赖的&#xff1f; 事务隔离级别 事务的传播级别 Spring 事务实现方式 Spring框架的事务管理有哪些优点 事务注解的…

GitLab/Github从头开始配置秘钥

1、下载git安装包 CNPM Binaries Mirrorhttps://registry.npmmirror.com/binary.html?pathgit-for-windows/ 拉到页面最底部选择 点进文件夹下载32位或者64位的版本&#xff0c;我的是64位就选择64的版本进行安装 2、傻瓜式安装 3、在相应的文件夹右键选择 UserName为你的用…

SSA优化最近邻分类预测(matlab代码)

SSA-最近邻分类预测matlab代码 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法&#xff0c;在2020年提出&#xff0c;主要是受麻雀的觅食行为和反捕食行为的启发。 数据为Excel分类数据集数据。 数据集划分为训练集、验证集、测试集,比例为8&#…

RVA和FOA转换---三

文章目录 修改初始值RVA和FOA转换RVAFOARVA和FOA的关系 本次内容包含如何修改程序中的初始值&#xff0c;和如何转换内存和文件的地址。 修改初始值 问题&#xff1a; 我们写了一个程序&#xff0c;可以输出一个结果&#xff0c;那么我们可以通过修改PE文件来改变这个输出结果…

group by和min、max函数一起使用

原始数据 查询每科的最高分数 -- 查询每科最高分数 select stuId,classId,stuName,max(score) from student_score group by classId 错误的结果 这个显然不是对的&#xff0c;或者说不是我们想要的结果&#xff0c; 我们想要的结果是 原因是什么呢&#xff1f;我们知道使用…