自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我觉得你很6

8年专业搬砖农民户

  • 博客(10)
  • 收藏
  • 关注

原创 Linux设备文件操作流程详解

用户操作/dev用户调用系统调用(如openreadwrite内核通过虚拟文件系统(VFS)找到设备文件对应的inode和结构体。内核调用设备驱动中注册的操作函数(如my_openmy_readmy_write设备驱动执行具体的硬件操作。这一过程涉及系统调用处理、虚拟文件系统、设备驱动等多个内核模块的协作。

2025-03-21 10:48:13 610

原创 Linux使用共享内存做进程间互斥通信

在Linux中,共享内存本身不提供进程间同步机制,因此需要结合其他同步工具(如信号量或互斥锁)来实现进程间的互斥通信。以下是一个详细的例子,展示如何使用共享内存和信号量实现进程间的互斥通信。

2025-03-20 15:00:13 415

原创 Linux C语言程序tab显示支持的参数

在Linux系统中,使用C语言编写程序时,可以通过实现命令行参数自动补全功能来支持用户在命令行中按下Tab键时显示支持的参数。使用GNU Readline库:GNU Readline库提供了行编辑和历史记录功能,并且支持Tab键补全。注册补全函数:将你的补全函数注册到Readline库中,以便在用户按下Tab键时调用。编写补全函数:你需要编写一个补全函数,该函数会根据当前输入的内容返回可能的补全选项。运行程序后,你可以在提示符下输入部分参数并按下Tab键,程序会显示匹配的参数选项。

2025-03-20 14:57:06 260

原创 linux中vlan隔离网络原理

Linux 内核通过VLAN 虚拟设备802.1Q 标签处理和桥接过滤实现 VLAN 隔离。核心代码分布在net/8021q/和接收路径:通过 VLAN ID 匹配目标虚拟设备。发送路径:插入 VLAN 标签后通过物理设备发送。隔离机制:不同 VLAN 的虚拟设备和过滤规则确保广播域隔离。

2025-03-18 16:42:08 1168

原创 Linux内核内存分配机制说明

malloc:用于用户空间,通过brk或mmap系统调用分配内存,物理内存的分配可能延迟到实际访问时。kmalloc:用于内核空间,通过SLAB/SLUB分配器分配内存,物理内存的分配是立即进行的。两者都依赖于内核的内存管理机制,但malloc在用户空间运行,而kmalloc在内核空间运行。

2025-03-18 10:05:03 326

原创 Linux内核工作队列与消息队列实现

data:用于存储工作项的状态或数据。entry:用于将工作项链接到工作队列中。func:工作项的处理函数。工作队列:用于内核中异步任务的执行,核心数据结构是和,主要函数包括queue_work和。消息队列:用于进程间通信,核心数据结构是,主要函数包括msggetmsgsnd和msgrcv。这两种机制在内核中有着不同的应用场景,工作队列主要用于内核内部的异步任务处理,而消息队列则用于进程间的通信。

2025-03-18 10:04:12 279

原创 Linux内核内存初始化与调度详解

Linux内核的内存初始化和调度涉及多个复杂的步骤和机制。内存初始化从物理内存探测开始,逐步建立页表并初始化内存管理子系统。内存调度则通过伙伴系统和页框回收机制来管理内存的分配和回收。理解这些机制对于深入理解Linux内核的内存管理至关重要。

2025-03-18 10:01:58 296

原创 Linux内核调度流程详解

Linux内核的调度流程包括调度触发、选择下一个进程、上下文切换等步骤。CFS调度器通过vruntime实现公平调度,而实时调度器则优先处理实时任务。时钟中断定期触发调度检查,确保系统响应性和公平性。

2025-03-18 10:00:47 257

原创 Linux内核PID实现流程详解

在Linux内核中,PID(进程标识符)用于唯一标识进程。

2025-03-18 09:59:19 470

原创 sysbench中内存带宽测试流程

关于CK_PR_STORE_SAFE(VAL))DST:目标位置的指针。VAL:要存储的值。TYPE:类型标识符,用于选择合适的存储函数。ck_pr_md_store_##TYPE:通过宏拼接操作,生成特定类型的存储函数名。例如,如果 TYPE 是 int,则生成 ck_pr_md_store_int。((void)sizeof(*(DST) = (VAL)), (DST)):这是一个复合表达式,首先进行类型检查,然后返回 DST。

2025-03-04 10:57:56 673 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除