自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (1)
  • 收藏
  • 关注

原创 linux内核文件一致性之被动一致性

前言       前一篇博客中我们仔细描述了Linux文件系统的主动一致性,即文件系统对外提供的用于实现文件一致性的接口,应用程序可以调用这些接口同步文件/系统的脏数据和元数据。但诚如前一篇博客中所说,一个成熟的系统不仅应该只有这些由用户控制的同步方式,系统需要提供一些方式来保证文件数据/元数据的一致性。本篇博客我们就详细描述Linux内核中这种被动一致性的实现框架以及部分细节。思考

2013-08-12 07:03:36 1862

原创 ext4的延迟分配

Ext4文件系统在应用程序调用write的时候并不为缓存页面分配对应的物理磁盘块,当文件的缓存页面真正要被刷新至磁盘中时,ext4会为所有未分配物理磁盘块的页面缓存分配尽量连续的磁盘块。        Linux文件系统Vfs层总是将应用程序的写入请求分割成页面(默认大小4KB)为单位,对于每个页面,VFS会检查其是否已经为其创建了buffer_head结构,如果没有创建,则为其创建buffe

2013-08-12 06:38:04 4594 2

原创 ext4文件系统综述

从本篇博客起,我们开始研究现代文件系统ext4,说其现代是因为其相比传统文件系统,有着更现代化的设计。这些先进的特性体现在本文所要叙述的以下方面。        Ext4是Linux文件系统的一次革命。在很多方面,Ext4相对于Ext3的进步要远超过Ext3相对于Ext2的进步。Ext3相对于 Ext2的改进主要在于日志方面,但是Ext4相对于Ext3的的改进是更深层次的,是文件系统数据结

2013-08-12 06:26:19 3445

原创 Linux内核 文件一致性之主动一致性

众所周知,Linux内核采用了page cache来缓存文件数据以及元数据。既然采用缓存,就有可能会产生缓存数据与磁盘中的数据不一致的问题,本系列博客中我们重点关注Linux内核如何解决这种不一致。     一般来说,一个成熟的系统需要提供多种机制来保证数据一致性,其一是用户可控的,即用户能通过特定的接口去控制文件数据的一致性,这是对于文件数据一致性要求比较高的应用需要的语义。另一方面

2013-08-11 22:17:31 2714 2

原创 ext2_try_to_allocate解析

ext2_try_to_allocate解析(未完待续)

2013-08-08 06:50:36 1004 1

原创 ext2_try_to_allocate_with_rsv解析

之前分析的ext2_new_blocks()看似复杂,但其基本思想却比较简单,而且,它把最复杂的功能留给了本博客中需要讨论的ext2_try_to_allocate_with_rsv()函数中完成了。看函数的名字便知道,如果上层调用者决定使用预留窗口机制,则该函数优先从文件的预留窗口中分配磁盘块,并且根据需要可能分配一个全新的预留窗口,或者有必要将原来的预留窗口进行扩充。废话不多说,让我们

2013-08-06 07:01:26 1019

原创 ext2_alloc_blocks解析

在之前我们分析的ext2_allocate_branch()函数中,我们说到其第一步可能也是最重要的一步就是分配磁盘块,这个磁盘块包括间接块和直接数据块,没有物理磁盘块,一切都只是空谈,而分配物理磁盘块调用的是函数ext2_alloc_blocks,这里我们就来重点分析下分配物理磁盘块的过程。        在分析这个函数之前,我们必须明白一点的是:这里所分配的磁盘块既包含间接索引块也包含直接

2013-08-04 16:18:59 1158

原创 ext2文件预分配

ext2文件预分配

2013-08-04 15:24:37 1134

原创 ext2综述

ext2综述

2013-08-04 15:23:15 992

原创 ext2_get_branch解析

ext2文件系统采用了直接和间接映射的方式来保存逻辑块至物理块的映射关系。因此,在每次读或者写某个逻辑块之前,需要查找这种映射关系,将逻辑块号转化为物理块号。这就是ext2_get_block的主要作用,而这里还有这种可能就是当前访问的逻辑块尚未分配物理块,一般出现在写情况中。        关于ext2文件系统如何通过直接块和间接块来建立逻辑块至物理块之间的映射可参考之前的博客,今天我们所要

2013-08-04 12:21:02 1774

原创 ext2_splice_branch解析

ext2_splice_branch

2013-08-04 00:06:03 1006

原创 ext2_allocate_branch()解析

在之前的多篇博客中我们都比较详细地阐述了ext2_get_block()路径中各个函数的实现原理,今天我们来关注下ext2_allocate_branch()的实现细节,这个函数是非常重要的,而且理解起来也没那么简单,虽然说函数的功能一句话就可能说完:为数据块建立映射路径。        要理解这个函数,我们首先得理解ext2文件系统的逻辑块至物理块的映射方法(这个在之前已经作了比较仔细的描述

2013-08-03 08:07:38 1066

hack's delight

hacker's delight专门描述了计算机编程之中的各种位运算技巧,看完受益匪浅

2012-10-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除