嵌入式学习之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;

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

马斯克大模型Grok-1已开源,目前为止最大的开源大语言模型

&#x1f989; AI新闻 &#x1f680; 马斯克大模型Grok-1已开源&#xff0c;目前为止最大的开源大语言模型 摘要&#xff1a;马斯克上一周就在x上预告将开源自己的大模型&#xff0c;等了一周&#xff0c;就在刚刚&#xff0c;马斯克的大模型 Grok-1 开源了&#xff0c;Grok-…

【Canvas与艺术】砂落字现

【注意】 本作代码需要在服务器端执行&#xff0c;不可用浏览器直接打开运行。 如何安装服务器端请参考&#xff1a;https://www.cnblogs.com/heyang78/p/3339235.html 【原理】 雨粒子落下时&#xff0c;如果当前点不是黑点&#xff0c;则化身为金字的一个像素点。 【效果…

USB - USB Gadget on Linux

February, 2012. Embedded Linux Conference 2012. Agenda Introduction to USB USB Gadget API Existing Gadgets Design your own Gadget Demo Conclusio About the Author Software engineer at Adeneo Embedded Linux, Android Main activities: – BSP adaptation – Driv…

PXVDI企业级PVE免费桌面虚拟化部署教程ProxmoxVE

什么是PXVDI&#xff1f; PXVDI是一款基于Proxmox VE为底层的可商用的免费云桌面套件。对熟悉PVE的人来说&#xff0c;这点非常的点赞。首先是PVE是免费的&#xff0c;其次PVE的免费云桌面方案也极为少数。 根据官方提出的价格清单&#xff0c;免费版和商业版在功能上主要的区…

使用CURL命令确定Access-Control-Allow-Origin问题

一、问题描述 有前端小伙伴反馈ajax请求遇到跨域问题&#xff0c;也让后端小伙伴设置了跨域允许&#xff0c;但诡异的事情是在前端小伙伴的微信开发者工具中Network headers中看到了两行&#xff1a;Access-Control-Allow-Origin&#xff0c;其中居然出现了&#xff1a;“Acce…

51单片机—DS18B20温度传感器

目录 一.元件介绍及原理 二&#xff0c;应用&#xff1a;DS18B20读取温度 一.元件介绍及原理 1.元件 2.内部介绍 本次元件使用的是单总线 以下为单总线的介绍 时序结构 操作流程 本次需要使用的是SKIP ROM 跳过&#xff0c; CONVERT T温度变化&#xff0c;READ SCRATCHPAD…

Linux:系统初始化,内核优化,性能优化(2)

优化ssh协议 Linux&#xff1a;ssh配置_ssh配置文件-CSDN博客https://blog.csdn.net/w14768855/article/details/131520745?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171068202516800197044705%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fb…

redis 常见的异常

目录 一、缓存穿透 1、概念 解决方案 &#xff08;1&#xff09;布隆过滤器 (2)、缓存空对象 二、缓存雪崩 1、概念 解决方案 &#xff08;1&#xff09;redis高可用 &#xff08;2&#xff09;限流降级 &#xff08;3&#xff09;数据预热 一、缓存穿透 1、概念 缓…

JavaWeb后端——分层解耦 IOC DI

分层/三层架构概述 三层架构&#xff1a;Controller、Service、Dao 解耦/IOC&DI概述 分层解耦 容器称为&#xff1a;IOC容器/Spring容器 IOC 容器中创建&#xff0c;管理的对象&#xff0c;称为&#xff1a;bean 对象 IOC&DI入门 实现 IOC&DI 需要的注解&#…

【MySQL】 MySQL的内置函数——日期函数、字符串函数、数学函数、聚合函数、其他函数

文章目录 MySQL1. 日期函数1.1 查看时间1.2 对时间进行计算 2. 字符串函数2.1 字符串查找2.2 字符串修改显示 3. 数学函数4. 聚合函数5. 其他函数 MySQL 1. 日期函数 在MySQL中&#xff0c;提供了多种时间函数供我们使用&#xff0c;其中包括用于查看时间的函数和计算日期的函数…

基于java+springboot+vue实现的高校教师工作量管理系统(文末源码+Lw+ppt)23-451

摘 要 高校教师工作量管理系统采用B/S架构&#xff0c;数据库是MySQL。网站的搭建与开发采用了先进的java进行编写&#xff0c;使用了springboot框架。该系统从两个对象&#xff1a;由管理员和教师来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;对…

Jmeter文件上传不成功问题

前言 最近好忙呀&#xff0c;项目上线然后紧接着又客户培训了&#xff0c;由于项目有个模块全是走配置的&#xff0c;所以导致问题不断&#xff0c;近期要培训为了保障培训时客户同时操作的情况&#xff0c;所以把我从功能端抽出来做压测了&#xff0c;之前安排了2个同事写压测…

数据结构的基本框架以及泛型

目录 集合框架复杂度大O的渐进表示法 装包(箱)或者拆包(箱)装包拆包 泛型泛型的上界泛型方法求最大值 集合框架 Java的集合框架,Java Collection Framework 又被称为容器container, 定义在java.util包下的一组 interfaces 和其实现类 classes interface: 接口 abstracb class…

基于Linux内核的socket编程(TCP)的C语言示例

原文地址&#xff1a;https://www.geeksforgeeks.org/socket-programming-cc/ 服务端&#xff1a; #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <unistd.h>#…

【鸿蒙HarmonyOS开发笔记】开发小技巧之Blank组件与layoutWeight属性的使用

Blank组件 Blank可作为Column和Row容器的子组件 该组件不显示任何内容&#xff0c;并且会始终充满容器主轴方向上的剩余空间&#xff0c;效果如下&#xff1a; Entry Component struct BlankPage {build() {Column({ space: 50 }) {Row() {Image($r(app.media.icon_bluetoot…

uniapp修改头像,选择图片

一、页面效果 二、手机上的效果 使用过的实例&#xff1a; 手机上就会显示类似如下&#xff1a; 三、代码 <view class"cleaner-top" click"chooseImg"><view class"cleaner-avatar"><image :src"imgArr" mode"…

蚁群算法实现 - 全局路径规划算法

参考博客&#xff1a; &#xff08;1&#xff09;【人工智能】蚁群算法(密恐勿入) &#xff08;2&#xff09;计算智能——蚁群算法 &#xff08;3&#xff09;蚁群算法(实例帮助理解) &#xff08;4&#xff09;【数之道 04】解决最优路径问题的妙招-蚁群ACO算法 &#xff08;…

《A ConvNet for the 2020s》阅读笔记

论文标题 《A ConvNet for the 2020s》 面向 2020 年代的 ConvNet 作者 Zhuang Liu、Hanzi Mao、Chao-Yuan Wu、Christoph Feichtenhofer、Trevor Darrell 和 Saining Xie 来自 Facebook AI Research (FAIR) 和加州大学伯克利分校 初读 摘要 “ViT 盛 Conv 衰” 的现状&…

EI Scopus检索 | 第二届大数据、物联网与云计算国际会议(ICBICC 2024) |

会议简介 Brief Introduction 2024年第二届大数据、物联网与云计算国际会议(ICBICC 2024) 会议时间&#xff1a;2024年12月29日-2025年1月1日 召开地点&#xff1a;中国西双版纳 大会官网&#xff1a;ICBICC 2024-2024 International Conference on Big data, IoT, and Cloud C…

视频基础知识(一) 视频编码 | H.26X 系列 | MPEG 系列 | H.265

文章目录 一、视频编码二、 H.26X 系列1、H.2612、H.2633、H.2643.1 I帧3.2 P帧3.3 B帧 4、H.265 三、 MPEG 系列1、MPEG-12、MPEG-23、MPEG-44、MPEG-7 &#x1f680; 个人简介&#xff1a;CSDN「博客新星」TOP 10 &#xff0c; C/C 领域新星创作者&#x1f49f; 作 者&…