
linux应用
文章平均质量分 79
知秋贺
这个作者很懒,什么都没留下…
展开
-
Linux——Linux系统编程之串口编程总结(串口的初始化、读写操作实践)
目录0 引言1 串口编程的流程1.1 打开串口1.2 初始化串口1.2.1 termios结构体1.2.2 关键函数1.2.3 初始化串口代码2 串口的读写测试例程0 引言串口大家一定不会陌生了(如果需要进一步了解的话可以看下这篇博文),开发中对我们调试非常重要,在单片机中,我们可以直接对寄存器和串口中断直接操作。在Linux串口编程中,串口的驱动一般是不用我们自己去写的,对应的硬件原厂或者原生态Linux内核已经带有串口驱动了,我们直接用就可以,既然是用,抓住两个重转载 2021-09-27 16:14:00 · 5163 阅读 · 0 评论 -
netlink分析介绍
netlink socket是一种用于用户态进程和内核态进程之间的通信机制。它通过为内核模块提供一组特殊的API,并为用户程序提供了一组标准的socket接口的方式,实现了全双工的通讯连接。特点:双向传输,异步通信 用户空间中使用标准socket API 内核空间中使用专门的API 支持多播 可由内核端发起通信 支持32种协议类型netlink仅支持32种协议类型,这在实际应用中可能并不足够,因此产生了generic netlink(以下简称为genl),generic netlin.转载 2021-04-20 11:13:20 · 1325 阅读 · 0 评论 -
C中异步IO浅析之一:基于AIO_ABI的异步IO
相较于同步IO,异步IO请求发出后,应用程序不用阻塞,可以继续执行后面的业务流程,因此能够极大提高系统并发度和吞吐率。这也是为何许多SAN服务后端数据落盘常常采用异步IO读写的原因。C语言中提供了两套实现异步IO的方法,根据个人的理解,可以分为原生的AIO_ABI方法和集成的libaio方法。这篇主要介绍原生的异步IO的使用方法。1. 头文件和原生异步IO操作相关的函数对应的头文件包括:/usr/include/linux/aio_abi.h:里面的内容如下:...转载 2021-01-29 11:21:49 · 745 阅读 · 0 评论 -
C中异步IO浅析之二:基于libaio的异步IO
异步IO由于它的非阻塞特性和强大的并发能力,非常适合用在要求高并发和高吞吐率的场景,比如用在提供SAN存储的块设备读写的实现上。和传统IO模式类似,异步IO提供了一次提交一个IO请求的模式,还提供了一次提交一组IO请求的方式。下面将分别介绍这两种模式的使用方法和差异。 单个处理模式 下面对一个长度为BUF_LEN的buffer,提交了MAX_IO个单个处理的IO请求,每个请求处理BUF_LEN/MAX_IO这么长的数据。为了便于读者实际上机验证,下面贴出了具体处理的代码:......转载 2021-01-29 11:20:01 · 569 阅读 · 1 评论 -
异步IO浅析之四:异步IO的单个处理和批量处理
异步IO由于它的非阻塞特性和强大的并发能力,非常适合用在要求高并发和高吞吐率的场景,比如用在提供SAN存储的块设备读写的实现上。和传统IO模式类似,异步IO提供了一次提交一个IO请求的模式,还提供了一次提交一组IO请求的方式。下面将分别介绍这两种模式的使用方法和差异。 单个处理模式 下面对一个长度为BUF_LEN的buffer,提交了MAX_IO个单个处理的IO请求,每个请求处理BUF_LEN/MAX_IO这么长的数据。为了便于读者实际上机验证,下面贴出了具体处理的代码:......转载 2021-01-29 11:18:21 · 747 阅读 · 0 评论 -
C中异步IO浅析之三:深入理解异步IO的基本数据结构
一个函数库或一段代码的数据结构之间的关系,既展示了数据的行踪,同时又隐含了函数的调用顺序和使用方法。libaio内部的多个数据结构尤其如此,哪怕我们找不到文档或者帮助手册,只要深刻领悟头文件中定义的数据结构及其内在联系,再加一点代码的验证,就可以达到对libaio的API的深入理解,并且完全不需要死记硬背。在上一篇简单介绍异步IO的相关数据结构和接口函数的基础上,这一篇就比较深入地介绍最重要的几个数据结构的内部成员的初始化方法及内部联系。1. iocb数据结构struct i...转载 2021-01-29 11:17:14 · 599 阅读 · 0 评论 -
linux中的fork分析
#include<stdio.h>#include<stdlib.h>#include<unistd.h>voidfunc(char*str){printf("%s-func:getpid=%d\n",str,getpid());}intmain(){#definePN4inti;intpid;for(i=0;i<PN;i++){...原创 2021-01-27 09:48:14 · 122 阅读 · 0 评论 -
信号量 sem_t 进程同步
sem_t分为有名和无名。有名的sem_t通过sem_open来创建, 而无名的sem_t通过sem_init的初始化。 用有名的sem_t来进程间同步是件很容易的事情,百度上一搜很多想相关的例子。有名和无名的sem_t主要区别:1. 效率:有名sem_t是放在文件,无名的sem_t是放在内存。2.限制:有名的sem_t可以用来同步多线程,任意多进程。而无名的sem_t可以用来同步多线程,以及Fork出来的进程间的同步。网上想关的例子很多,本文主要是测试一下用无名sem_t进程同步,比如你在转载 2021-01-19 11:24:35 · 966 阅读 · 0 评论 -
七大进程间通信和线程同步
一、进程间的七大通信方式signal、file、pipe、shm、sem、msg、socket1,signal信号通信的目的:某某事件发生!此时需要处理什么,进程间(可以是不相关的进程)传递信号场景:信号又被称之为中断,需要处理什么对应的是中断处理函数,此时设置断点,形参入栈,保存现场信息,然后去执行中断处理函数,当处理完成之后,恢复现场信息,程序继续往下执行Linux下可以通过kill -l查看其所有信号(其一共64种信号)发送信号:kill(pid, 信号) //对指定的进..转载 2021-01-14 13:42:57 · 350 阅读 · 0 评论 -
查看LINUX进程内存占用情况
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: (1)top top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: $ top -u oracle内容解释: PID:转载 2020-11-25 16:11:05 · 287 阅读 · 0 评论 -
linux下aio异步读写详解与实例
1.为什么会有异步I/Oaio异步读写是在linux内核2.6之后才正式纳入其标准。之所以会增加此模块,是因为众所周知我们计算机CPU的执行速度远大于I/O读写的执行速度,如果我们用传统的阻塞式或非阻塞式来操作I/O的话,那么我们在同一个程序中(不用多线程或多进程)就不能同时操作俩个以上的文件I/O,每次只能对一个文件进行I/O操作,很明显这样效率很低下(因为CPU速度远大于I/O操作的速度,所以当执行I/O时,CPU其实还可以做更多的事)。因此就诞生了相对高效的异步I/O2.异步I/O的基本概念转载 2020-11-12 15:55:27 · 1088 阅读 · 0 评论 -
Linux select/poll机制原理分析
转自 linux内核之旅以下文章来源于LoyenWang ,作者LoyenWang前言 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 1. 概述Linux系统在访问设备的时候,存在以下几种IO模型: Blocking IO Model,阻塞IO模型; Nonblocking I/O Model,非阻塞IO模型; I/O Mult.转载 2020-12-02 12:53:00 · 254 阅读 · 0 评论 -
linux应用程序常用的函数
Linux应用程序常用函数 在linux应用程序设计中,通常不需要去了底层的驱动是怎么实现的,只需要利用系统提供的接口函数,就可以去访问底层设备。这篇文档是记录自己学习《嵌入式linux应用程序开发详解》,其中主要介绍在应用程序中一些常用函数,并通过实例来介绍这些函数的用法。其中主要介绍了基于文件IO的编程,例如打开关闭,读写等等;进程及进程间通信;最后介绍了基于网络的的socke转载 2012-06-01 10:52:19 · 1822 阅读 · 0 评论 -
linux AIO -- libaio 实现的异步 IO
POSIXAIO是在用户控件模拟异步IO的功能,不需要内核支持,而linuxAIO则是linux内核原声支持的异步IO调用,行为更加低级关于linuxIO模型及AIO、POSIXAIO的简介,请参看:POSIX AIO -- glibc 版本异步 IO 简介libaio实现的异步IO主要包含以下接口:libaio 实现的异步 IO 函数 功能 原型 io_setup 创建一个异步IO上下文(io_context_t是...转载 2021-01-11 16:50:06 · 354 阅读 · 0 评论 -
POSIX AIO -- glibc 版本异步 IO 简介
概述linux中最常用的IO模型是同步IO,在这个模型中,请求发出后应用程序会阻塞直到满足条件(阻塞IO),或在不满足条件的情况下立即返回出错(非阻塞IO),这样做的好处是程序在等待IO请求完成时不会占用CPUPOSIX定义了异步IO应用程序接口(AIOAPI),linux2.6以上版本的内核也实现了内核级别的异步IO调用异步IO的基本思想是允许进程发起很多IO操作,而不用阻塞任何一个,也不用等待任何操作的完成,直到IO操作完成时,进程可以检索IO...转载 2021-01-11 16:27:56 · 661 阅读 · 0 评论 -
IO测试工具之fio详解
目前主流的第三方IO测试工具有fio、iometer和Orion,这三种工具各有千秋。fio在Linux系统下使用比较方便,iometer在window系统下使用比较方便,Orion是oracle的IO测试软件,可在没有安装oracle数据库的情况下模拟oracle数据库场景的读写。如下是在Linux系统上采用fio工具来对SAN存储进行的IO测试。1、安装fio在fio官网下载fio-2.1.10.tar文件,解压后./configure、make、make install之后就可以使用f转载 2021-01-11 16:07:20 · 1252 阅读 · 0 评论 -
linux aio简介
在Linux内核4.18版本中新添加了一种新的内核轮询接口Linux AIO 方法IOCB_CMD_POLL。该补丁由Christoph Hellwig,还提议将Linux AIO接口配合网络套接字等一起使用。Linux的AIO是最初是设计用于磁盘异步IO的接口。文件与网络套接字是大相径庭的东西,可以用Linux AIO 接口,将其统一起来呢?在本文中,我们介绍如何使用Linux AIO API的优势来编写更好,更快的网络服务器。Linux AIO简介我们先来介绍一下Linux AIO。转载 2021-01-09 21:50:56 · 1870 阅读 · 0 评论 -
linux中的aio
1.为什么会有异步I/Oaio异步读写是在linux内核2.6之后才正式纳入其标准。之所以会增加此模块,是因为众所周知我们计算机CPU的执行速度远大于I/O读写的执行速度,如果我们用传统的阻塞式或非阻塞式来操作I/O的话,那么我们在同一个程序中(不用多线程或多进程)就不能同时操作俩个以上的文件I/O,每次只能对一个文件进行I/O操作,很明显这样效率很低下(因为CPU速度远大于I/O操作的速度,所以当执行I/O时,CPU其实还可以做更多的事)。因此就诞生了相对高效的异步I/O2.异步I/O的基本概念转载 2021-01-08 09:58:17 · 725 阅读 · 0 评论 -
linux libaio介绍
Linux的I/O机制经历了一下几个阶段的演进:1. 同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。2. 同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可以立即返回,但是并不保证I/O操作成功。3. 异步事件阻塞I/O: 用户进程可以对I/O事件进行阻塞,但是I/O操作并不阻塞。通过select/poll/epoll等函数调用来达到此目的。4. 异步时间非阻塞I/O: 也叫做异步I/O(AIO),用户程序可以通过向内核发出I/O请求原创 2021-01-07 17:28:06 · 8977 阅读 · 0 评论 -
nginx如何处理高并发
一、阅前热身为了更加形象的说明同步异步、阻塞非阻塞,我们以小明去买奶茶为例。1、同步与异步①同步与异步的理解同步与异步的重点在消息通知的方式上,也就是调用结果通知的方式。 同步 当一个同步调用发出去后,调用者要一直等待调用结果的通知后,才能进行后续的执行 异步: 当一个异步调用发出去后,调用者不能立即得到调用结果的返回。 异步调用,要想获得结果,一般有两种方式:1、主动轮询异步调用的结果;2、被调用方通过callback来通知调用方调用结果。②:生活实例转载 2021-01-06 14:13:19 · 2114 阅读 · 0 评论 -
如果这篇文章说不清epoll的本质,那就过来掐死我吧!
从事服务端开发,少不了要接触网络编程。epoll作为linux下高性能网络服务器的必备技术至关重要,nginx、redis、skynet和大部分游戏服务器都使用到这一多路复用技术。文/罗培羽因为epoll的重要性,不少游戏公司(如某某九九)在招聘服务端同学时,可能会问及epoll相关的问题。比如epoll和select的区别是什么?epoll高效率的原因是什么?如果只靠背诵,显然不能算上深刻的理解。网上虽然也有不少讲解epoll的文章,但要不是过于浅显,就是陷入源码解析,很少能有通俗易懂的。于是转载 2021-01-06 14:11:18 · 166 阅读 · 0 评论 -
qemu中的eventfd——用法与原理
文章目录eventfd用法 demo 分析 eventfd内核实现 创建eventfd 系统调用 eventfd_ctx 读eventfd 写eventfd eventfd可以用于线程或者父子进程间通信,内核通过eventfd也可以向用户空间进程发消息。其核心实现是在内核空间维护一个计数器,向用户空间暴露一个与之关联的匿名fd。不同线程通过读写该fd通知或等待对方,内核通过写该fd通知用户程序eventfd用法eventfd机制接口简.转载 2021-01-05 16:51:43 · 272 阅读 · 0 评论 -
Linux简单线程池实现(带源码)
这里给个线程池的实现代码,里面带有个应用小例子,方便学习使用,代码 GCC 编译可用。参照代码看下面介绍的线程池原理跟容易接受,百度云下载链接:http://pan.baidu.com/s/1i3zMHDV一.线程池简介为什么使用线程池?目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。 传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任转载 2020-12-13 19:09:17 · 269 阅读 · 0 评论 -
Linux系统调用列表(收藏)
以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。 按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用,对个别本人稍觉不妥的地方作了一些小的修改,并对所有列出的系统调用附上简要注释。 其中有一些函数的作转载 2020-12-02 15:51:46 · 1770 阅读 · 0 评论 -
Linux进程间通信——eventfd
Table of Contents什么是eventfd创建eventfd读eventfd写eventfd使用例子什么是eventfd eventfd是Linux 2.6提供的一种系统调用,它可以用来实现事件通知。eventfd包含一个由内核维护的64位无符号整型计数器,创建eventfd时会返回一个文件描述符,进程可以通过对这个文件描述符进行read/write来读取/改变计数器的值,从而实现进程间通信。创建eventfd eventfd的创建是通过...转载 2020-12-01 14:52:48 · 660 阅读 · 0 评论