- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 Linux协议栈学习与积累
linux内核对于套接字的管理会用到锁,linux使用如下两个接口进行加解锁lock_sock,release_sock。但是这两个函数不仅仅是完成了加解锁的操作。lock_sock: 首先尝试拿到获取锁的资格,这个资格由一个变量记录sk->sk_lock.owned,这个变量用spin_lock保护。这个这个变量值不为0,则说明有其它上下文占用了这个锁,则进一步的会将当前进程挂到一个等待队列中,然后主动调度CPU,等待唤醒。被唤醒之后,将sk->sk_lock.owned赋值,然后去执.
2020-05-12 22:46:06
225
原创 C语言小知识
#define ____cacheline_aligned attribute((aligned(SMP_CACHE_BYTES))) 。这个宏定义表示结构体或者字段是按照cpu的L1高速缓存对齐的。结构体与CACHE LINE对齐的原因:CACHE与内存交换的最小单位为CACHE LINE,一个CACHELINE大小以64字节为例。当我们的结构体大小没有与64字节对齐时,一个结构体可...
2020-05-05 23:22:27
506
原创 Linux Fib实现分析
linux内核早先对于ipv4的fib支持Hash与trie两种数据组织方式,后续删除了hash,只留下了trie。trie是一种最长前缀匹配算法,对于大量路由的情况下查找效率高于hash,但是这种算法会消耗更多的内存、算法更加复杂。图1 原始数据图2 trie将图1中的数据用trie表示那么就可以得到图2的模型。那么是怎么画出这幅图的呢?实际上就是从根节点触发,往左子树走一步则增加一个...
2019-12-17 23:05:47
1485
原创 TIPS
TIPSglibc使用ptmalloc实现malloc。ptmalloc会管理从内核申请到的内存,可以使用的内存包括堆内存以及mmap申请的内存。进程申请、释放内存由ptmalloc管理,而不是直接交由内核处理。ptmalloc支持多线程,各个线程之间申请内存时,使用锁进行保护。因此,多线程下效率会受到影响。...
2019-11-06 23:19:48
169
原创 linux服务器管理(Updating...)
linux服务器在工作中管理了一个linux服务器。这个服务器的用户在40个左右,初始设置所有用户使用一个公用的账户登陆服务器。使用了一段时间之后,发现服务器空间不足,希望用户自行删除不用的文件。结果就是需要经常提醒用户删除。为了解放管理员,因此使用quota工具来配置磁盘限额,给每个用户一定的空间。这样就需要给每个用户设置一个账号和私有目录。同时由于用户在使用时需要用到sudo进行提权进而...
2019-07-08 23:46:13
283
原创 GDB使用FAQ(updating)
GDB使用FAQ设置断点时,提示找不到符号"Make breakpoint pending on future shared library load? (y or [n])"?A: 可能的原因有,要断的函数所在的lib还没有加载,此处选择y,则在lib加载的时候就可以断住;二是函数输入错误,检查下是否拼写有误。如何查看进程的地址空间的划分?A:使用指令info proc mappin...
2019-03-25 22:07:08
329
转载 Markdown 写作方法(备份)
@[TOC](Markdown 写作方法(备份))欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用...
2019-03-25 21:55:17
185
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人