• 2025-01-2030天开发操作系统 第 16 天 -- 多任务 v2.0
    前言大家好!昨天我们已经实践了很多关于多任务的内容,不过今天我们还得继续讲多任务。可“老是讲多任务都听腻了啊!”,但多任务真的非常重要(当然,如果你不想做一个多任务的操作系统那就不重要啦)。从咱们制作的操作系统角度来说,希望大家能够在充分做好多任务机制的基础上,再
  • 2025-01-20Golang学习笔记_28——工厂方法模式
    Golang学习笔记_25——协程Golang学习笔记_26——通道Golang学习笔记_27——单例模式文章目录工厂方法模式1.介绍2.优点3.类图4.实现源码工厂方法模式1.介绍工厂方法模式(FactoryMethod)是一种创建型设计模式,它提供了一种创建对象的接口,但由子类决定要实
  • 2025-01-2005-rust结构体-struct
    在Rust中,结构体(struct)是定义数据类型和管理复杂数据的核心工具,类似于其他语言中的类,但它不支持内置继承。Rust提供了三种基本的结构体形式:常规结构体(regularstruct)、元组结构体(tuplestruct)和单元结构体(unitstruct)。下面详细讲解:1.常规结构体(RegularStruct)常规结构体是
  • 2025-01-20cpp struct json相互转换
    C++结构体与JSON的相互转换在现代软件开发中,数据的序列化和反序列化是一个常见的需求。尤其在客户端和服务器之间的数据交换中,JSON因其简单、易读和良好的兼容性而被广泛使用。本文将介绍如何在C++中实现结构体和JSON之间的相互转换,重点介绍使用 nlohmann/json库。nlohmann/jso
  • 2025-01-20linux 设备驱动模型
    作者:baron个人网站:baron-z.cn    Linux设备模型的核心是使用Bus、Class、Device、Driver四个核心数据结构,将大量的、不同功能的硬件设备(以及驱动该硬件设备的方法),以树状结构的形式,进行归纳、抽象,从而方便Kernel的统一管理。学习平台mt8768,内核版本kernel-4.9一、kobjec
  • 2025-01-19BPF开发之从BCC转换到libbpf/BPF CO-RE
    此文裁剪翻译自https://nakryiko.com/posts/bcc-to-libbpf-howto-guide/#helper-sub-programs。个人翻译,水平有限。BCCtolibbpflibbpf支持很多BCC不具备的特性,如全局变量、BPF骨架。BCC依赖于运行时编译,并内置了整个LLVM/Clang库,导致:编译时高额资源消耗;对内核头文件
  • 2025-01-19堆相关
    知识点chunk结构我们称由malloc申请的内存为chunk,这块内存在ptmalloc中被称为malloc_chunk结构体表示无论一个chunk的大小如何,处于分配状态还是释放状态,它们都使用一个统一的结构。虽然它们使用了同一个数据结构,但是根据是否被释放,它们的表现形式会有所不同/*This
  • 2025-01-18Android Audio基础(53)——PCM逻辑设备Write数据
    1.前言本文,我们将以回放(Playback,播放音频)为例,讲解PCMData是如何从用户空间到内核空间,最后传递到Codec硬件。在ASoC音频框架简介中,我们给出了回放(Playback)PCM数据流示意图。:对于Linux来说,由于分为userspace和kernelspace,而且两者之间数据不能随便互相访问。因此用
  • 2025-01-17最小生成树
    最小生成树[生成树]从一个无向连通图中选取一些边使这张图是一颗树。[最小生成树]在生成树的基础上使边权和最小。[Kruskal]寻找满足条件的边贪心,从未选取的边中选一条边权最小的边,选完后不出环即可。我们需要判断:1.当前最小边权的边。2.这条边所连接的两个点的连
  • 2025-01-17linux内核态线程详解
    头文件:#include <linux/sched.h>     //wake_up_process()    #include <linux/kthread.h>   //kthread_create()、kthread_run()  #include <err.h>           //IS_ERR()、PTR_ERR()1.创建并启动一个内核线程:方式一:s
  • 2025-01-17linux usb 驱动 - hcd 驱动框架
    linuxusbhcd驱动框架一、USB描述符1.数据结构1.1设备描述符1.2配置描述符1.3接口描述符1.4端点描述符1.5usb_hub_descriptor1.5usb_host_config1.6usb_interface_cache1.7usb_host_interface1.8usb_host_endpoint2.描述符的构建二、usb设备驱动管理1.
  • 2025-01-17洛谷P1803
    凌乱的yyy/线段覆盖-洛谷代码区:#include<stdio.h>#include<stdlib.h>structGAME{ intstart; intend;};intcmp(constvoid*a,constvoid*b){ structGAME*game1=(structGAME*)a; structGAME*game2=(structGAME*)b; returngame1->end-game2->
  • 2025-01-17Linux驱动开发:一文掌握 块设备VS字符设备开发流程全解!
    Linux驱动开发是嵌入式系统开发中的一个重要组成部分,它直接关系到硬件设备的功能实现和性能优化。在Linux系统中,驱动开发主要分为字符设备驱动、块设备驱动和网络设备驱动三大类。本文将重点介绍字符设备和块设备的基础知识,以及它们在驱动开发中的差异和开发流程。一、字符设
  • 2025-01-15位图有关的格式信息
     GetObject(hBitmap,sizeof(BITMAP),(LPSTR)&bmp); 获取HBITMAP句柄包含的位图信息结构,不包含像素数据内容。typedefstructtagBITMAP{LONGbmType;//位图类型,必须为0LONGbmWidth;//位图宽度(以像素为单位)LO
  • 2025-01-15线程每次iodelay监控及D状态开始和结束监控并做堆栈记录
    一、背景在之前的博客 获取进程或线程级别的iodelay的方法_io验证延时链-CSDN博客里,我们讲到了获取进程或线程的iodelay的方法,但是博客里讲到的获取iodelay的值是一个累积值,并不能准确的捕获到每个单次的iodelay具体是多少。这篇博客里是为了监控每个单次的iodelay,除了监控i
  • 2025-01-15【LeetCode】回文链表
    【LeetCode】回文链表
  • 2025-01-14进程概念(详细讲解)
    进程概念认识冯诺依曼系统操作系统概念与定位深⼊理解进程概念,了解PCB学习进程状态,学会创建进程,掌握僵⼫进程和孤⼉进程,及其形成原因和危害了解进程调度,Linux进程优先级,理解进程竞争性与独⽴性,理解并⾏与并发理解进程切换,以及Linux2.6kernel,O(1)调度算法架构理解环
  • 2025-01-14鸿蒙开发 - 自定义组件 和 组件通信的方法
    自定义组件的基本结构@Entry@ComponentstructMyComponent{build(){//...}}build()函数build()函数用于描述组件的UI界面,自定义组件必须定义build()函数build(){Column(){Text('测试')Button('点击')}}struct关键字strcut用来
  • 2025-01-13c语言——【linux】多线程编程 (内附练习及代码)
    1:开启一个线程主线程中:使用标准IO,向一个文件中写入任意数据分支线程:使用标准IO,读取该文件中的数据#include<stdio.h>#include<string.h>#include<unistd.h>#include<stdlib.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<p
  • 2025-01-13基于DPDK的用户态协议栈(2)基于DPDK实现UDP的数据接收
    注:本文只实现了数据接收部分一、使用DPDK实现UDP的数据接收流程1.1初始化EALmain(intargc,char*argv[]){//main函数的标准参数,用于接收命令行参数。argc表示参数的数量,argv是一个指向字符串数组的指针,这些字符串是传递给程序的命令行参数。//初始化EAL。if(
  • 2025-01-13枚举与共用
    1枚举一一列举enumsex{ male, female, secret};//默认从0开始,递增一;enumsex{ male=5, female=6, secret=9};2联合体union所有成员共用一块空间,只为最大的成员开辟足够的空间,至少为最大成员所占的空间unionUn{ charc; inti;};intmain(){ un
  • 2025-01-12祝你成为结构体赛亚人
    文章目录引言结构体成员的对齐现象对齐规则原因结构体传参结构体位段位段的内存分配引言开文举例//匿名结构体类型struct{ charc; inti; doubled;}s1,s2;intmain(){ scanf("%d",s1.i); return0;}//匿名结构体类型只能用一次//链表——结构
  • 2025-01-11【DNS攻防】深入探讨DNS数据包注入与DNS中毒攻击检测 (C/C++代码实现)
    DNS数据包注入和DNS中毒攻击是网络安全领域中的两个重要主题。DNS(域名系统)是互联网中的一项核心服务,负责将域名转换为与之相对应的IP地址。DNS数据包注入是指攻击者通过篡改或伪造DNS请求或响应数据包来干扰或破坏DNS服务的过程。攻击者可通过注入恶意数据包来改变DNS解析结果,将
  • 2025-01-11IPOIB驱动中RSS和TSS相关功能的实现:以ipoib_main_rss.c为例
    一、引言在现代网络通信领域,InfiniBandoverEthernet(IPoIB)驱动的高效性对于网络性能有着至关重要的影响。其中,接收方扩展(RSS)和传输方扩展(TSS)是提升网络性能的关键技术。ipoib_main_rss.c文件作为IPoIB驱动中处理RSS和TSS的重要源码文件,蕴含着丰富的功能和复杂的
  • 2025-01-11《Linux设备驱动开发详解(第3版)》 第17章 Linux设备驱动开发综合实例
    17.1开发板硬件介绍假设我们使用的是一款基于ARM架构的开发板,板上集成了多种设备,如串口、GPIO、SPI、I2C等接口,以及网卡、USB控制器、PCI插槽等设备。不同的开发板硬件特性会有所不同,这里以通用的硬件配置为例进行说明。17.2字符设备驱动开发实例字符设备是一种以字节