- 博客(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
原创 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关注的人