博客专栏  >  运维   >  Linux内核学习笔记

Linux内核学习笔记

记录对Linux2.6.32分析学习的笔记,以源码注释加流程分析的方式呈现。主要涉及内存管理、进程管理、进程调度、文件系统等部分。

关注
20 已关注
57篇博文
  • Linux内存管理之页面回收

    请求调页机制,只要用户态进程继续执行,他们就能获得页框,然而,请求调页没有办法强制进程释放不再使用的页框。因此,迟早所有空闲内存将被分配给进程和高速缓存,Linux内核的页面回收算法(PFRA)采取从...

    2012-03-02 09:12
    9922
  • Linux缓存机制之块缓存

    作者:bullbat        在Linux内核中,并非总使用基于页的方法来承担缓存的任务。内核的早期版本只包含了块缓存,来加速文件操作和提高系统性能。这是来自于其他具有相同结构的类UNIX操作...

    2012-02-29 15:19
    4806
  • Linux缓存机制之页缓存

    作者:bullbat           Linux运用一个功能广泛的缓冲和缓存框架来提高系统的速度。缓冲和缓存利用一部分系统物理内存,确保最重要、最常使用的块设备数据在操作时可直接从主内存获取,...

    2012-02-27 09:13
    5075
  • Linux设备驱动编程模型之设备篇

    设备驱动程序模型建立在几个基本数据结构上,这些结构描述了总线、设备、设备驱动、属性以及他们之间的关系。我们首先认识一下这些数据结构。   一、数据结构 设备表述符 struct device...

    2012-02-25 16:37
    2631
  • Linux设备驱动编程模型之上层容器篇

    2.6内核增加了一个引人注目的新特性——统一设备模型(device model)。设备模型提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,从而使得系统具有以下优点: l       ...

    2012-02-14 20:30
    2499
  • Linux虚拟文件系统之文件读取(sys_read())

    在文件成功打开之后,进程将使用内核提供的read和write系统调用,来读取或修改文件的数据。内核中文件读写操作的系统调用实现基本都一样,下面我们看看文件的读取。 /*sys_read()*/ SY...

    2012-02-13 17:13
    3221
  • Linux虚拟文件系统之文件打开(sys_open())

    在文件读写之前,我们必须先打开文件。从应用程序的角度来看,这是通过标准库的open函数完成的,该函数返回一个文件描述符。内核中是由系统调用sys_open()函数完成。 /*sys_open*/ ...

    2012-02-13 15:43
    5884
  • Linux虚拟文件系统之文件系统卸载(sys_umount())

    Linux中卸载文件系统由umount系统调用实现,入口函数为sys_umount()。较于文件系统的安装较为简单,下面是具体的实现。 /*sys_umont系统调用*/ SYSCALL_DEFI...

    2012-02-13 10:35
    2913
  • Linux虚拟文件系统之文件系统安装(sys_mount())

    对于前面的根目录文件系统的安装中涉及到了mount系统调用的调用,这里我们考虑一个文件系统将被安装在一个已经安装文件系统之上的情形,即调用mount系统调用实现。mount系统调用被用来安装一个普通文...

    2012-02-10 19:09
    3194
  • Linux虚拟文件系统(安装根文件系统)

    安装根文件系统式系统初始化的关键部分。Linux内核允许根文件系统放在很多不同的地方,比如硬盘分区、软盘、通过NFS共享的远程文件系统以及保存在ramdisk中。内核要在变量ROOT_DEV中寻找包含...

    2012-02-10 11:36
    3074
  • Linux虚拟文件系统(内核初始化<二>)

    这部分主要对linux虚拟文件系统内核初始化部分做些补充。 关于shrinker,inode和dentry cache初始化阶段都需要注册自己的shrinker,用于缩减cache。两个操作原理类似...

    2012-02-09 16:54
    5263
  • Linux虚拟文件系统(内核初始化<一>)

    Linux虚拟文件系统在内核初始化的start_kernel()函数中主要调用两个函数来实现。asmlinkage void __init start_kernel(void) { …… v...

    2012-02-09 15:09
    3556
  • Linux虚拟文件系统(节点路径搜索)

    前面对linux虚拟文件系统的架构以及设计到的数据结构有了一个整体的认识,这里看看linux内核怎么根据给定的文件路径名在内存中找到和建立代表着目标文件或目录的dentry结构和inode结构。文件路...

    2012-02-08 15:49
    4617
  • Linux虚拟文件系统(概述)

    Linux虚拟文件系统是一个内核软件层,用来处理与UNIX标准文件系统相关的所有系统调用。其健壮性表现在能为各种文件系统提供一个通用的接口。 Linux虚拟文件系统支持的文件系统可以划分为三种主要的...

    2012-02-08 09:58
    5558
  • Linux内存管理之slab机制(概述)

    通过前面所有代码的分析和总结,已经把各个部分熟悉了一遍,在此对Linux内核中slab机制做最后的总结。 伙伴系统算法采用页作为基本内存区,这适合于大块内存的请求。对于小内存区的申请,比如说几十或几...

    2012-01-11 21:01
    15581
  • Linux内存管理之slab机制(销毁cache)

    cache的销毁很简单,依次检查和释放本地CPU cache、共享cache、三链以及cache本身。从cache的创建我们看到,创建的cache主要是从cache_cache中获得的,因为cache...

    2012-01-11 10:41
    3038
  • Linux内存管理之slab机制(创建cache)

    Linux内核中创建cache节点由函数kmem_cache_create()实现。 该函数的执行流程: 1,从全局cache_cache中获得cache结构,因为全局cache_cache初始化...

    2012-01-11 10:27
    4791
  • Linux内存管理之slab机制(销毁slab)

    总结完了slab创建、对象分配、对象释放,在这里再看看slab的销毁。销毁slab很简单,由函数slab_destroy()实现。 /** * slab_destroy - destroy and...

    2012-01-10 20:55
    2467
  • Linux内存管理之slab机制(释放对象)

    Linux内核中将对象释放到slab中上层所用函数为kfree()或kmem_cache_free()。两个函数都会调用__cache_free()函数。 代码执行流程: 1,当本地CPU cac...

    2012-01-10 17:23
    2826
  • Linux内存管理之slab机制(分配对象)

    Linux内核从slab中分配内存空间上层函数由kmalloc()或kmem_cache_alloc()函数实现。 kmalloc()->__kmalloc()->__do_kmalloc() /...

    2012-01-10 15:23
    2914
img博客搬家
img撰写博客
img专家申请
img意见反馈
img返回顶部