首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    最浅显易懂的一篇:RCU机制

    RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用。RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数据的时候不对链表进行耗时的加锁操作。这样在同一时间可以有多个线程同时读取该链表,并且允许一个线程对链表进行修改(修改的时候,需要加锁)。RCU适用于需要频繁的读取数据,而相应修改数据并不多的情景,例如在文件系统中,经常需要查找定位目录,而对目录的修改相对来说并不多,这就是RCU发挥作用的最佳场景。 Linux内核源码当中,关于RCU的文档比较齐全,你可以在 /Documentation/RCU/ 目录下找到这些文件。Paul E. McKenney 是内核中RCU源码的主要实现者,他也写了很多RCU方面的文章。他把这些文章和一些关于RCU的论文的链接整理到了一起。http://www2.rdrop.com/users/paulmck/RCU/ 在RCU的实现过程中,我们主要解决以下问题: 1,在读取过程中,另外一个线程删除了一个节点。删除线程可以把这个节点从链表中移除,但它不能直接销毁这个节点,必须等到所有的读取线程读取完成以后,才进行销毁操作。RCU中把这个过程称为宽限期(Grace period)。 2,在读取过程中,另外一个线程插入了一个新节点,而读线程读到了这个节点,那么需要保证读到的这个节点是完整的。这里涉及到了发布-订阅机制(Publish-Subscribe Mechanism)。 3, 保证读取链表的完整性。新增或者删除一个节点,不至于导致遍历一个链表从中间断开。但是RCU并不保证一定能读到新增的节点或者不读到要被删除的节点。 宽限期

    02

    linux下的 du命令 用于做什么,用法是怎样的?

    命令用途 du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。 命令格式 du [OPTION]… [FILE]… -a, –all 包括了所有的文件,而不只是目录 –apparent-size print apparent sizes, rather than disk usage; although the apparent size is usually smaller, it may be larger due to holes in (’sparse’) files, internal fragmentation, indirect blocks, and the like -B, –block-size=SIZE use SIZE-byte blocks -b, –bytes 以字节为计算单位 -k             以千字节(KB)为计算单位 -m            以兆字节(M)为计算单位 -c, –total 最后加上一个总计(系统缺省) -D, –dereference-args dereference FILEs that are symbolic links -H    跟 - -si效果一样。 -h, –human-readable   以比较阅读的方式输出文件大小信息 (例如,1K 234M 2G)。注:该选项在很多其他命令(df, ls)中也有效。 –si   跟-h 效果一样,只是以1000为换算单位 -l, –count-links 计算所有的文件大小,对硬链接文件,则计算多次。 -L, –dereference 显示选项中所指定符号连接的源文件大小。 -P, –no-dereference 不跟随任何的符号连接(缺省) -S, –separate-dirs 计算目录所占空间时不包括子目录的大小。 -s, –summarize      只显示工作目录所占总空间 -x, –one-file-system 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。 -X FILE, –exclude-from=FILE 排除掉指定的FILE –exclude=PATTERN 排除掉符合样式的文件,Pattern就是普通的Shell样式,?表示任何一个字符,*表示任意多个字符。 –max-depth=N 只列出深度小于max-depth的目录和文件的信息 –max-depth=0 的时候效果跟–s是 一样

    03
    领券