Linux内核
文章平均质量分 64
sf_jiang
JSF
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
在ubuntu16.04系统利用eBPF获取TCP网络状态信息
通过eBPF获取linux系统tcp 连接状态信息原创 2022-09-09 16:22:32 · 1539 阅读 · 0 评论 -
BPF编译运行实例
本文目标是运行一个bpf实例,实现系统运行时,每执行一次系统调用execve的调用监控原创 2022-07-14 10:06:40 · 1161 阅读 · 0 评论 -
编译linux kernel samples 模块
编译linux 内核 samples原创 2022-08-19 11:56:33 · 763 阅读 · 0 评论 -
一种调试Linux进程结构体变量的利器
就像动态库函数能被运行中的程序实时调用一样,可执行程序的全局符号函数也可以被用来单独执行。在底层的机器世界中,所谓的函数执行,只不过是将函数对应首条指令的内存地址加载到PC寄存器上执行而已。利用dlsym函数,可以获取 .dynsym section 全局符号对应的内存地址,然后就可以执行这个地址(函数). 在这个特性的基础上,可以开发很多上层调试类业务代码。比如查看进程的重要结构体内容,或者 执行一个程序中的添加链表节点的函数。...原创 2021-10-23 11:33:27 · 148 阅读 · 0 评论 -
linux 线程 pthread_t 和 线程 tid 的区别
Linux中,每个进程有一个pid,类型pid_t,由getpid()取得。Linux下的POSIX线程也有一个id,类型 pthread_t,由pthread_self()取得,该id由线程库维护,其id空间是各个进程独立的(即不同进程中的线程可能有相同的id)。Linux中的POSIX线程库实现的线程其实也是一个进程(LWP),只是该进程与主进程(启动线程的进程)共享一些资源而已,比如代码段,数据段等。有时候我们可能需要知道线程的真实pid。比如进程P1要向另外一个进程P2中的某个线程发送信号时原创 2021-10-21 16:04:13 · 2258 阅读 · 0 评论 -
线程设置CPU亲和性demo
#define _GNU_SOURCE 1#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<pthread.h>#include<time.h>#include<sched.h>#include<string.h>void* testfunc(void* t) { int c = 0; c = sched_getcpu()..原创 2021-10-20 10:55:53 · 982 阅读 · 0 评论 -
从单核CPU系统角度看并发问题
1,问题引入: 在单核cpu系统中;进程有个全局量 intg_i = 0,在进程中开10个线程,每个线程都不对 g_i 加锁的情况下做1亿次自增操作 (g_i++) ;主线程等待所有的线程结束后,再打印 g_i 的值能保证是 10 亿吗?2,问题初步思考: 先考虑在多核cpu系统中,无锁情况下,两个cpu可能同时读取 g_i 到各自cpu寄存器,同时在各自寄存器中自增,然后写相同的值到内存;显然这里的自增操作有两次,实际值只是自增了一次,因此不能保证最终的g_i值是...原创 2021-10-07 01:02:07 · 3257 阅读 · 1 评论 -
linux内核一些关键术语的理解
1,指令,微操作,原子操作@1,单条指令,在单处理器结构中,可以认为是原子操作。因为 中断 只能发生在指令之间,而不能发生在执行一条指令的中途。@2,在SMP结构中,某些单条指令操作临界区是不安全的,以 X86 体系 BTS (测试并设置) 指令而言,假设 cup1 和 cpu2 同时 BTS 某个临界区。BTS 需要经过 读内存 -> 寄存器(设置) -> 写内存 三个微操作。因此 cpu1/2 可能同时读取到 0 值,都认为自己已经占有了资源。@3,单处理器的“互斥分辨率”可以.原创 2021-09-13 02:07:47 · 245 阅读 · 0 评论
分享