翻译文章
文章平均质量分 86
jxusthusiwen
这个作者很懒,什么都没留下…
展开
-
Moving the kernel to large block sizes
因此,这就是他的补丁集所做的核心工作。当然,还有其他工作要做,包括审计页面高速缓存,以确保其分配的基础驱动器使用的尺寸的组合页,并确保其以组合页大小的步长递增,而不是按页面递增。但是,实际的 I/O 由较低层级的驱动程序处理,后者已经将相邻的块合并到更大的单元中。每个缓冲区头用于一个 512 字节的磁盘扇区,它链接到一个特定的页面结构,并在缓冲区高速缓存中进行内部缓存(以节省访问它时的 I/O)。Folio 明确设计为处理不同类型,重要的是对于他的演讲,它可以表示多个页面,因而允许它用于更大块的 I/O。翻译 2024-05-04 08:57:03 · 10 阅读 · 0 评论 -
The kernel and character set encodings
因此,人们经常说 UTF-8 是 Linux 内核使用的编码。实际上,表示 ASCII 集之外字符的唯一实用选择是 iso-8859-1(它允许表示许多欧洲大陆语言中使用的字符)和 UTF-8,它几乎可以编码任何内容。在处理 Linux 内核时,期望 UTF-8 的代码也必须小心,因为内核本身不会做出任何努力来确保任何字符串实际上都是合法的 UTF-8 编码。理由是我认为最终 Linux 内核需要有效地支持用户空间的不区分大小写策略,而执行不区分大小写的文件名操作的唯一方法是将那些字节流解释为特定编码。翻译 2024-04-30 12:14:03 · 12 阅读 · 0 评论 -
Atomic usage patterns in the kernel
在社会方面,它们为代码的意图提供了有用的文档。我选择那个示例是为了将它与 pasemi_alloc_rx_chan() 进行对比,后者从一个池中执行类似的分配,但有一些不同:位图标识可用资源,find_first_bit() 用于查找一个,test_and_clear_bit() 用于声明它。没有 test_and_clear_bit_lock() 或 set_bit_unlock(),所以这个代码无法用位锁定来自我记录位的使用,我们必须希望在释放锁的 set_bit() 周围没有竞态的空间。翻译 2024-04-27 08:52:45 · 13 阅读 · 0 评论 -
Time to move to C11 atomics?
正如 Will Deacon 所指出的,C11 原子缺乏消耗加载操作的良好实现,而这消耗加载操作除了是读-复制-更新 (RCU) 的重要部分之外,还有其他重要部分。这一次,编译器对 C11 原子操作的支持有了改善,David Howells 提出了一种完整的 (x86) 内核原子操作实现,该实现构建于 C11 原子之上。理论上,切换到 C11 原子操作将允许内核将一堆棘手的特定于体系结构的屏障代码转储出去,并利用嵌入编译器的相同代码,这是并发用户空间程序将使用的代码。真正的问题是是否应该进行此转换。翻译 2024-04-27 08:34:27 · 8 阅读 · 0 评论