手机随时阅读
新人专享大礼包¥24
Linux中字符设备的注册过程是比较简单的。我们通常可以调用misc_register()函数来注册一个字符设备。Misc设备是一种字符设备,通过该设备可以将fops请求转发给注册的misc设备,从而实现字符设备的功能。用户调用该接口注册Misc字符设备时,可以动态分配设备Minor号,当获取Minor号之后调用class_simple_device_add()或者device_c
Page cache和buffer cache到底有什么区别呢?很多时候我们不知道系统在做IO操作的时候到底是走了page cache还是buffer cache?其实,buffer cache和page cache是Linux中两个比较简单的概念,在此对其总结说明。 Page cache是vfs文件系统层的cache,例如 对于一个ext3文件系统而言,每个文件都会有一
前言 Linux中对一个文件进行操作的时候,一件很重要的事情是对文件名进行解析处理,并且找到对应文件的inode对象,然后创建表示文件的file对象。在此,对文件名解析过程,并且如何找到对应inode的过程进行源码分析。分析代码基于Linux-3.2版本。 关键函数分析 不管是通过应用层的API函数还是在内核中打开一个文件,最终
最近一段时间在做IO性能对比测试分析的时候发现Linux-3.2的IO性能要比Linux-2.6.23差。在内核中,并发顺序读的情况下(绕过设备的buffer cache),Linux-3.2的性能比Linux-2.6.23有很大差别,性能降低了15%左右。这是为什么呢? 首先看一下 Linux-3.2中测试的IO Stack模型,如下图所示:
今天有幸聆听了普林斯顿大学李凯教授的报告“An Disruptive innovation example: Data Domain, Inc”。李凯教授是美国工程院院士,在学术界和工程界都有极高的威望。第一眼看到李凯院士的感觉就是非常的朴素和平易近人,和国内的企业老总相比,真是有天壤之别。他创建的Data Domain公司开创了Deduplication在
在高效数据传输领域,测控领域对基于PCI总线的网络数据传输卡有大量需求,例如分布式采集系统需要通过这种传输卡将数据聚合传输至处理机系统。几年前我研发了基于PCI总线的数据传输卡,研制的硬件板卡如下图所示: 该PCI数据传输卡有如下几个方面的特点: 1,有很大的板载内存,因此,可以将网络数据聚合、缓存。 2,网络部分和PCI部分通过FPGA互联,中间通过FIFO
1, Buffer cache的作用 为了提高磁盘设备的IO性能,我们采用内存作为磁盘设备的cache。用户操作磁盘设备的时候,首先将数据写入内存,然后再将内存中的脏数据定时刷新到磁盘。这个用作磁盘数据缓存的内存就是所谓的buffer cache。在以前的Linux系统中,有很完善的buffer cache软件层,专门负责磁盘数据的缓存。在磁盘设备的上层往往会架构
今天遇到一个问题,需要探测内核中buffer cache block的大小。我想到了Kprobe这个神奇的工具,并且很好的探测到了内核中的变量值,非常的方便,在此分享一下。 采用dd等工具写设备的时候,是需要经过块设备层的buffer cache,当请求块大小小于buffer cache的block_size时,Linux的策略是首先需要从磁盘load数据至buf
writeback相关数据结构 与writeback相关的数据结构主要有: 1,backing_dev_info,该数据结构描述了backing_dev的所有信息,通常块设备的request queue中会包含backing_dev对象。 2,bdi_writeback,该数据结构封装了writeback的内核线程以及需要操作的inode队列。 3,wb_w
writeback机制模型 在Linux-3.2新内核中,page cache和buffer cache的刷新机制发生了改变。放弃了原有的pdflush机制,改成了bdi_writeback机制。这种变化主要解决原有pdflush机制存在的一个问题:在多磁盘的系统中,pdflush管理了所有磁盘的page/buffer cache,从而导致一定程度的IO性能瓶颈。
一直在做kernel开发方面的工作,也一直苦于kernel debug的困惑,到底如何进行kernel开发的debug的工作?今天经美国同事的推荐,我认为kprobe是一个非常好的debug工具。其本质原理就是在你需要probe的地方放入断点指令,然后在断点处调用你的调试/测试程序,从而可以实现对kernel程序的调试/测试。 Kprobe只是提供了一种机制,使得
今天在网上看到很多人对自己的IT技术人生路产生了怀疑,大龄工程师有竞争力吗?甚至有人将大龄工程师和“小姐”并论,提出了工程师职业也是青春饭的论断。几年前,我也经常问自己,以后的路该怎么走?能够一直做技术研发吗?做一段研发之后需要转市场或者转管理吗?技术研发有前途吗? 现在,我想说的是平庸的技术研发没有前途;没有自己想法的技术研发没有前途;只
Ext3文件读写流程概述 Ext3文件系统在进行读写操作的时候,首先需要open相应的文件,然后再进行读写操作。在open操作时,Linux kernel会创建一个file对象描述这个文件。File对象和文件的dentry和inode对象建立联系,并且将ext3的文件操作方法、映射处理方法(address space)注册到file对象中。 Ex
Ext3 mount原理 本质上,Ext3 mount的过程实际上是inode被替代的过程。例如,/dev/sdb块设备被mount到/mnt/alan目录。那么mount这个过程所需要解决的问题就是将/mnt/alan的dentry目录项所指向的inode屏蔽掉,然后重新定位到/dev/sdb所表示的inode索引节点。在没有分析阅读linux vfs mount代码的时候,我
Copyright © 2005-2022 51CTO.COM 版权所有 京ICP证060544号