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

配套视频学习链接: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.mzph.cn/news/698666.shtml

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

相关文章

集合、List、Set、Map、Collections、queue、deque

概述 相同类型的数据进行统一管理操作,使用数据结构、链表结构,二叉树 分类:Collection、Map、Iterator 集合框架 List接口 有序的Collection接口,可以对列表中的每一个元u尿素的插入位置进行精确的控制,用户可以根…

Qt事件过滤器

1. 事件过滤器 void QObject::installEventFilter(QObject *filterObj) bool eventFilter(QObject *obj, QEvent *event); filterObj表示事件筛选器对象,它接收发送到此QObject对象(安装事件过滤器的部件对象)的所有事件。筛选器可以停止事件…

SpringCloud-Gateway解决跨域问题

Spring Cloud Gateway是一个基于Spring Framework的微服务网关,用于构建可扩展的分布式系统。在处理跨域问题时,可以通过配置网关来实现跨域资源共享(CORS)。要解决跨域问题,首先需要在网关的配置文件中添加相关的跨域…

(六)激光线扫描-三维重建

本篇文章是《激光线扫描-三维重建》系列的最后一篇。 1. 基础理论 1.1 光平面 在之前光平面标定的文章中,已经提到过了,是指 激光发射器投射出一条线,形成的一个扇形区域平面就是光平面。 三维空间中平面的公式是: A X + B Y + C Z + D = 0 A X+B Y+C Z+D=0

矿产达人小程序修复前端

应用介绍 本文来自:矿产达人小程序修复前端 - 源码1688 矿产达人小程序: 矿产小游戏小程序是一款以矿产资源为主题的休闲娱乐游戏。以下是该小程序的主要功能特点: 游戏画面精美:小程序采用卡通化的设计风格,画面色…

程序媛的mac修炼手册-- 小白入门Java篇

最近因为要用CiteSpace做文献综述,间接接触Java了。所以,继Python、C之后,又要涉猎Java了。刺激!! 由于CiteSpace与Java要求版本高度匹配,有个匹配详情明天为大家讲解。总之,我的Java之旅开始于…

我们有在线社区啦!快来加入一起玩儿~

🙌大噶好呀!春节假期转瞬即逝,小陈已经正式开工啦~虽然不知道大家啥时候收假,但是 RTE 开发者社区㊗️诸位: 🧧🐲🙇2024 开工大吉🙇🐲&#x1f9…

企业级SAS盘SSDPM1643a PM1653 Nytro 2050 KPM71VUG3T20固态硬盘

今天给大家介绍一下KIOXIA铠侠PM7系列均衡性硬盘KPM71VUG3T20 存储容量:3200 GB 接口类型:SAS-4 读取速度:4,200 MB/s 写入速度:3,650 MB/s 工作温度:0 ℃ to 75 ℃ 储存温度:40 ℃ to 85 ℃ MTTF&a…

投放效果难衡量?如何精准提升ROI

在当前的移动互联网环境下,App获客和转化成为了许多应用面临的一大难题。随着广告买量成本的不断攀升,用户增长遭遇了瓶颈。同时,由于移动环境广告标识难以完整获取,投放效果的衡量也变得更加困难。那么,如何打破这一困…

高录用快见刊【最快会后两个月左右见刊】第三届社会科学与人文艺术国际学术会议 (SSHA 2024)

第三届社会科学与人文艺术国际学术会议 (SSHA 2024) 2024 3rd International Conference on Social Sciences and Humanities and Arts *文章投稿均可免费参会 *高录用快见刊【最快会后两个月左右见刊】 重要信息 会议官网:icssha.com 大会时间:202…

Shell变量类型和运算符

一、Shell变量类型 1、变量类型 Shell的3种变量: (1)局部变量:除了本地变量外,还有shell脚本中定义的变量。 (2)全局变量:和局部变量相对。比如环境变量就是一种全局变量。 &am…

MaxScale实现mysql8读写分离

MaxScale 实验环境 中间件192.168.150.24MaxScale 22.08.4主服务器192.168.150.21mysql 8.0.30从服务器192.168.150.22mysql 8.0.30从服务器192.168.150.23mysql 8.0.30 读写分离基于主从同步 1.先实现数据库主从同步 基于gtid的主从同步配置 主库配置 # tail -3 /etc/my.…

刷新多个SOTA!最新Mamba魔改版本超越transformer,GPU内存消耗减少74%

因模型规模的扩展和需要处理的序列不断变长,transformer逐渐出现计算量激增、计算效率下降等问题。为克服这些缺陷,研究者们提出了Mamba。 Mamba是一种创新的线性时间序列建模方法,它结合了递归神经网络(RNN)和卷积神…

[面试] InnoDB中如何解决幻读?

幻读是通过 MVCC 机制来解决的, MVCC 类似于一种乐观锁的机制,通过版本的方式来区分不同的并发事务,避免幻读 问题! 什么是幻读? 事务A前后两次读取同一个范围的数据,在事务A两次读取的过程之间,事务B新增了数据,导致…

星际修仙之剑胆琴心

剧名:《星际修仙之剑胆琴心》 类型:科幻修仙爱情剧 故事大纲: 在遥远的未来,人类文明已经发展到星际时代,科技与修仙相结合,形成了一种全新的文明形态。在这个时代,修仙者不再局限于传统的修炼方…

图文说明Linux云服务器如何更改实例镜像

一、应用场景举例 在学习Linux的vim时,我们难免要对vim进行一些配置,这里我们提供一个vim插件的安装包: curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o./install.sh && bash ./install.sh 但是此安装包…

跳槽前应该做好哪些准备?

第一次求职也好,还是换工作也罢,都需要有严谨的考虑。对于已经工作上班的朋友来说,切不可轻易地辞掉工作,想要跳槽,一定要三思而后行,有一个周密的部署。跳槽有好处,也有弊端,频繁的…

【学网攻】 第(30)节 -- 综合实验三

系列文章目录 目录 系列文章目录 文章目录 前言 一、综合实验 二、实验 1.引入 实验目标 实验设备 实验拓扑图 实验配置 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻】 第(4)节…

探讨导致vcruntime140_1.dll无法继续执行代码的原因和解决办法

在使用电脑过程中,我们偶尔会遇到一些令人不悦的错误提示,如"vcruntime140_1.dll丢失"。这个错误提示可能会给我们带来诸多困扰,阻碍我们正常地进行操作。本文将详细探讨导致"vcruntime140_1.dll丢失"错误的原因&#xf…

Java基于SSM+JSP的超市进销库存管理系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…