摘要:
https://www.cnblogs.com/binlovetech/p/17712761.html https://yangjie2.github.io/2021/11/14/mmap原理与应用/ 基础 物理世界中的实体或者逻辑实体在计算机中都用数据结构来表示,比如一个进程就用一个task_st 阅读全文
摘要:
https://www.ibm.com/docs/en/aix/7.2?topic=io-direct-vs-normal-cached https://www.ibm.com/docs/en/aix/7.2?topic=io-benefits-direct https://xiaolincodin 阅读全文
摘要:
段错误定位 原因是昨天遇到一个BUG,复现概率很小,一直复现了一下午,后来google发现可以用execinfo.h里的backtrace函数及信号处理机制, 来让程序在发生段错误时自动打印调用堆栈。最后终于复现出来了两次,用这个函数也定位到了出错位置,是多线程下的一个同步问题。 之前遇到的BUG基 阅读全文
摘要:
看了这篇文章 Linux中的进程栈和线程栈 说主线程生成的子线程的 stack 区是用 mmap 系统调用映射到进程的堆区。于是实践验证一下,代码如下。 void* threadFunction(void* args) { int a = 10; // 线程的局部变量 cout <<"&a : " 阅读全文
摘要:
#include <stdlib.h> #include <ucontext.h> #include <stdio.h> int main() { ucontext_t uc; int a = 2, b = 3; getcontext(&uc); printf("asdafa"); int k = 阅读全文
摘要:
先打印出某个地址,然后阻塞(getchar())进程,查一下进程的 id,然后执行Linux 命令pmap {pid} 查看进程的空间布局(MAC 使用vmmap {pid}),将之前打印的地址对应到某一段。 using namespace std; #define FUCK(x) cout << 阅读全文
摘要:
调用过程 call f :将当前指令(call)的下一条指令地址压栈,然后跳转到 f 函数。 f 函数初始化:将 rbp 压栈(保存调用者的 rbp),为了返回 main 函数时 rbp 寄存器指向正确的位置。将 rsp 赋值给 rbp,这是 f 函数的栈底。 返回过程 f 过程完了之后。 pop 阅读全文
摘要:
ikcp_input 先从下层协议将数据读出来,并将对应的包头信息解析出来,根据不同的包头命令进入不同的处理逻辑。 int ikcp_input(ikcpcb *kcp, const char *data, long size) { IUINT32 prev_una = kcp->snd_una; 阅读全文
摘要:
KCP 协议是一种可靠的传输协议,对比 TCP 取消了累计确认(延迟 ACK)、减小 RTO增长速度、选择性重传而非全部重传。通过用流量换取低时延。 KCP 中最重要的两个数据结构IKCPCB和IKCPSEG,一个IKCPCB对应一个 KCP 连接,通过这个结构体维护发送缓存、接收缓存、超时重传时间 阅读全文