Linux学习方法-框架学习法——Linux应用程序编程框架

news2024/12/27 12:24:11

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

目录

Linux应用程序编程

Linux应用程序编程

Linux文件I/O(input/output)

Linux文件I/O(五种I/O模型)

Linux多进程

Linux多线程

网络通信(socket编程)

Linux应用编程框架


Linux应用程序编程

  • 应用编程即Linux系统编程
  • 基于Linux内核之上,基于'系统调用’或者库函数的编程。
  • Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用
  • 系统调用由操作系统核心提供,运行于核心态;而普通的函数调用由函数库或用户自己提供,运行于用户态
  • '系统调用’在ARM系统中一般用'软中断’的方式来实现。
  • ARM处理器工作模式:

用户模式(USR):正常程序执行模式,不能直接切换到其他模式

系统模式(SYS):运行操作系统的特权任务,与用户模式类似,但具有可以直接切换到其他模式等特权

快中断模式(FIQ):支持高速数据传输及通道处理,FIQ异常响应时进入此模式

中断模式(IRQ):用于通用中断处理,IRQ异常响应时进入此模式

管理模式(SVC):操作系统保护模式,系统复位和软件中断响应时进入此模式(由系统调用执行软中断SWI命令触发)

中止模式(ABT):用于支持虚拟内存和/或存储器保护,在ARM7TDMI没有大用处

未定义模式(UND):支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式

Linux应用程序编程

  • 包含丰富的内容(可参照'系统调用'清单)

文件I/O

多进程

多线程

网络SOCKET编程

时间函数、文件系统操作

用户管理、内存管理等

Linux文件I/O(input/output)

  • 一切皆文件(串口/LED等)
  • 文件I/O(inputoutput)实际就是对文件的读写操作

open()

read()

write()

ioctl()

close()

文件描述符(句柄)

fd=open(“目录文件”)

  • 标准I/O(带缓冲的IO)

可移植性更好 

Linux文件I/O(五种I/O模型)

阻塞

非阻塞

信号

多路复用

异步

Linux多进程

  • 多进程是多任务在Linux上的具体实现,多任务是操作系统的基本功能。
  • 进程的三种状态:就绪、阻塞、运行。

  • fork()分岔

  • 进程间通信

管道(匿名管道和命名管道)

信号

信号量

消息队列

共享内存

套接字

Linux多线程

  • 单个进程内可以运行多个线程,线程是操作系统时间片调度的最小单位
  • 每个线程可使用进程的全局变量
  • 线程生成函数:pthread create()
  • 线程同步(共用资源,合理分配资源的方式)

互斥锁

条件变量

读写锁

信号量

网络通信(socket编程)

网络通信是重点

很多操作系统的网络编程方式是一样的,都采用了socket方式

Linux应用编程框架

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

游戏空间划分技术

一、 前言 空间划分算法有很多,比如均匀网格,四/八叉树,k-d树,Bsp树,每一种算法都有自己的优缺点,我们需要从理论上理解这些算法,然后在实际项目中进行灵活的运用。 游戏中经常使用空间划分算…

【深度学习】Pytorch 系列教程(七):PyTorch数据结构:2、张量的数学运算(5):二维卷积及其数学原理

文章目录 一、前言二、实验环境三、PyTorch数据结构1、Tensor(张量)1. 维度(Dimensions)2. 数据类型(Data Types)3. GPU加速(GPU Acceleration) 2、张量的数学运算1. 向量运算2. 矩阵…

TESTLINK 测试用例数据结构解析

一、node_types 测试组件信息表 我们查询表 select * from testlink.node_types; 得到如下结果 二、nodes_hierarchy 测试用例目录层次表 我们以下图的项目为例,来讲解 1、测试项目 首先,我们有个Train的项目,存在表testprojects中&#…

动态获取 微信小程序appid / 自定义启动命令

官网:https://uniapp.dcloud.net.cn/collocation/package.html#%E7%94%A8%E6%B3%95 小程序开发完成之后需要一套代码多个小程序使用,每次都需要在manifest.json文件中手动修改,大大增加了开发的复杂度。 官网:https://uniapp.dcl…

【大数据】Flink 内存管理(一):设置 Flink 进程内存

Flink 内存管理(一):设置 Flink 进程内存 1.配置 Total Memory2.JVM 参数3.根据比例限制的组件(Capped Fractionated Components) Apache Flink 通过严格控制各种组件的内存使用,在 JVM 上提供高效的工作负…

测试计划、测试方案、测试策略、测试用例的区别

一 测试计划 测试计划是指描述了要进行的测试活动的范围、方法、资源和进度的文档。它主要包括测试项、被测特性、各阶段的测试任务、时间进度安排,谁执行任务和风险控制等,可以包括测试策略。 二 测试方案 测试方案是指描述需要测试的特性、测试的方…

Android 输入法框架简介

每种平台都有自己的输入法框架. GNU/Linux 桌面环境有多种输入法框架, 比如 ibus, fcitx 等. 但是 Android 操作系统只有一种, 是统一提供的输入法框架. 相关链接: 《ibus 源代码阅读 (1)》 https://blog.csdn.net/secext2022/article/details/136099328https://developer.and…

【Pytorch】从MoCo看无监督对比学习;从SupCon看有监督对比学习

目录 无监督对比学习:Moco文章内容理解代码解释 有监督对比学习:Supervised Contrastive Learning文章内容理解 无监督对比学习:Moco 文章内容理解 以下内容全部来自于:自监督学习-MoCo-论文笔记. 侵删 论文:Momentu…

ShardingSphere5.x 分库分表

一、shardingSphere介绍 1、官网:Apache ShardingSphere 2、开发文档: 概览 :: ShardingSphere 3、shardingsphere-jdbc ShardingSphere-JDBC 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库&#x…

Vue3+TS+ElementPlus 001 环境配置

1.1 环境准备 1.1.1 安装vue-cli(第一次需要) npm install -g vue/cli 1.1.2 创建vue项目 vue create 项目名称(项目名称尽量不要使用中文) 1.1.3 选择相应的项目 1.1.4 启动项目 npm run serve 2.1 引入element-plus 2.1.1 安装 一个 Vue 3 UI 框…

Linux操作体系结构与功能流程

文章目录 前言一、linux操作系统结构二、操作系统的工作方式三、操作系统内核中各级模块的相互关联四、Linux操作系统结构的独立性 前言 以内核代码 v0.11 和 v3.4.2 版本源码对 Linux 内核相关知识进行学习,由浅入深逐步掌握 Linux 内核。本文记录 Linux 操作系统…

小区视频汇聚与智能监管方案:老破小升级改造与小区智慧化建设

一、需求背景 在当今数字化时代,智慧小区已成为城市建设的必然趋势。加快小区智能化改造,不断完善小区管理和服务,彻底改变粗放型管理方式已经成为当前小区智慧化趋势的重要任务。其中,智能视频监控系统在提高小区安全性和管理效…

ROS查找pkg

要在ROS中查找包名为"joint_state_publisher"的软件包,可以使用以下命令行指令来进行查找: 查找pkg“joint_state_publisher” rospack find joint_state_publisher这将返回该软件包所在的路径。如果结果不存在或者未安装该软件包&#xff0…

Sora 对未来视频创作伦理的挑战和思考

Sora 对未来视频创作伦理的挑战和思考 随着人工智能技术的飞速发展,AI视频模型Sora的出现为视频创作带来了革命性的变革。然而,在技术进步的同时,也带来了一些伦理问题值得我们深思。 1. 真实性和虚假信息: Sora能够生成逼真的视频画面&…

Pytorch 自用 Scheduler 分享

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

C#实用开发(14)--高清晰度字体和窗体分辨率问题。

新建winform程序是,又是会感觉到字体清晰度不够高。还有一种现象就是分辨率的问题,我们平常在自己的电脑开发是用125百分比的分辨率,实际部署的工控机是100,这就会导致分辨率不一致的问题。 可以通过新建应用程序清单,…

宝塔面板安装了mysql5.7和phpMyadmin,但是访问phpMyadmin时提示502 Bad Gateway

操作流程截图如下: 原因是没有选择php版本 选择php版本 下一页找到phpMyAdmin,选择设置 目前只有纯净态,说明没有php环境,前去安装php环境 点击安装,选择版本,这里选择的是7.4版本,编译安…

浅拷贝导致的bug

错误代码: //初始化formTableData的值 const formTableData ref({saleOrderTime:,saleOrderDetails:[] });const showModal async (item) > {//调接口获取后端返回的数据let data (await api.searchSaleOrderById({saleOrderId:item.id})).dataconsole.log(&…

计算机毕业设计 基于SpringBoot的宠物商城网站系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

FreeRtos Queue(三)

本篇主要分析向队列中发送消息 xQueueGenericSend 这个函数。 大致分为两个逻辑: 1、当队列没满的时候的处理 2、当队列没满的时候的处理 主意:整个xQueueGenericSend是在for(;;)中处理的 一、队列没满的case 队列的数据结构图可参考:F…