
linux
mosquitouu
学习学习
展开
-
内核信号量--来自深入理解Linux内核
信号量 Linux提供两种信号量: 内核信号量,由内核控制路径使用; System V IPC信号量,由用户态进程使用; 内核信号量 1、内核信号量类似于自旋锁,当锁关闭时,不允许内核控制路径继续前进; 2、当内核控制路径想要获取内核信号量所保护的资源时,若资源被占用,则当前进程被挂起,等待; 3、当资源释放时,选择一个或多个等待该资源的进程唤醒,继续执行; 4、只有可以睡眠的函数才能过获...原创 2019-06-25 08:34:26 · 335 阅读 · 0 评论 -
Linux中的原子访问--来自深入理解Linux内核一书
80x86指令: 进行0次或1次对齐内存访问的汇编指令是原子的;(如short地址必须是2的倍数、int的地址必须是4的倍数等) 读-修改-写之间没有其他处理器占用内存总线,则此序列操作是原子的; 操作码前缀是lock字节(0xf0)的“读-修改-写”汇编语言指令即使在多处理器系统中也是原子的。lock前缀在实际运行过程中,由控制单元检查,并当检查到该前缀时,将“锁定”内存总线,直到指令执行...翻译 2019-06-22 15:20:44 · 233 阅读 · 0 评论 -
gcc内嵌汇编&&结合linux源码分析--来自深入理解Linux内核一书
ASM格式:__asm__ __volatile__("Instruction List" : Output : Input : Clobber/Modify); 指令集、输出、输入、修改部分; 例如:linux中atomic64_read函数,如下: static inline long long atomic64_read(const atomic64_t *v) { reg...原创 2019-06-22 15:43:07 · 197 阅读 · 0 评论 -
Linux中spinlock--来自深入理解Linux内核一书
linux spinlock实现分析原创 2019-06-22 23:19:14 · 422 阅读 · 0 评论 -
读写自旋锁--来自深入理解Linux内核一书
linux读写自旋锁实现机制分析原创 2019-06-23 22:12:54 · 786 阅读 · 0 评论 -
RCU--(read--copy--update)--来自深入理解Linux内核
读–拷贝–更新与读–修改–写 读–修改–写需要访问两次存储器,分别为读原值和写新值,在多处理器情况下,对同一个数据结构的此串操作,若不进行同步操作,可会会导致最终结果错误。 RCU 为保护在多数情况下被多个CPU读的数据结构而设计的另一种同步技术。 RCU允许多个读者和写者并发执行,且不使用锁,即不使用被所有CPU共享的锁或计数器,在这一点上与R/W锁或顺序锁相比较,RCU更具有优势。 RCU如何...原创 2019-06-24 08:15:25 · 743 阅读 · 0 评论 -
读/写信号量--来自深入理解Linux内核
读写信号量类似与读写自旋锁,区别是读写信号量再次变为打开之前,等待进程挂起而不是自旋。 结构 并发读信号,写者互斥访问。内核按照严格FIFO顺序处理等待读写信号量的所有进程。如果读者或写者进程发现信号量关闭,这些进程就被插入到信号量等待队列链表的末尾。 ...原创 2019-06-30 16:05:23 · 580 阅读 · 0 评论