博客专栏  >  架构   >  Linux内核设计与实现

Linux内核设计与实现

Linux内核设计与实现所述的内容基于Linux2.6内核,对于爱好Linux学习的朋友来说绝对是不可多得的一本好书,我在阅读的同时记录自己所学,分享自己的学习历程

关注
65 已关注
52篇博文
  • 神奇的大内核锁

    Big Kernel Lock(BKL)(大内核锁),是linux内核中使用到的一种锁,它跟普通的锁原理上的一样的:lock_kernel();/* 临界区 */unlock_kernel();但是它...

    2013-09-04 10:55
    1629
  • Linux2.6内核 -- 结构的初始化

    Linux 内核中用到了大量的结构体,在编码规范中也给出了结构体初始化的规则,这篇文章中有对其的解释:http://blog.csdn.net/dlutbrucezhang/article/detai...

    2013-08-25 15:06
    1713
  • Linux2.6内核 -- 编码风格(3)

    9.typedef    内核开发者们强烈反对使用 typedef 语句。他们的理由是:    1> typedef 掩盖了数据的真实类型    2> 由于数据类型隐藏起来了,所以很容易因此而犯错误,...

    2013-08-25 13:48
    1929
  • Linux2.6内核 -- 编码风格(2)

    5.每行代码的长度      源代码中要尽可能的保证每行代码长度不超过80个字符,因为这样做可以使代码最适合在标准的 80 * 24 的终端上显示。事实上,并不存在一个广泛接受的标准--如果代码行超过...

    2013-08-25 10:34
    1922
  • Linux2.6内核 -- 编码风格(1)

    像所有其他大型软件一样,Linux 制定了一套编码风格,对代码的格式,风格和布局做出了规定。下面我就对 2.6 内核中的代码约定进行介绍。      1.缩进      缩进风格是用制表位(Tab)每...

    2013-08-25 10:10
    2078
  • mmap详解

    共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式, 因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则...

    2013-08-24 17:37
    1895
  • Linux2.6内核--对块IO层操作的讨论

    当一个块被调入内存时(也就是说,在读入后或等待写出时),它要存储在缓冲区中。每个缓冲区与一个块对应,它相当于是磁盘块在内存中的表示。块包含一个或多个扇区,但大小不能超过一页,所以一页可以容纳一个或多个...

    2013-08-23 15:44
    1964
  • Linux2.6内核--VFS层中和进程相关的数据结构

    系统中的每一个进程都有自己的一组打开的文件,像根文件系统,当前工作目录,安装点等。有三个数据结构将 VFS 层和系统的进程紧密的联系在一起,它们分别是:file_struct,fs_struct 和 ...

    2013-08-23 14:01
    2139
  • Linux2.6内核--内存管理(1)--分页机制

    在内核里分配内存可不像在其他地方分配内存那么容易。造成这种局面的因素很多。从根本上讲,是因为内核本身不能像用户空间那样奢侈的使用内存。内核与用户空间不同,它不具备这种能力,它不支持简单便捷的内存分配方...

    2013-08-22 14:51
    1842
  • Linux2.6内核--内存管理(2)--区

    由于硬件的限制,内核不能对所有的页一视同仁。有些页位于内存中的特定物理地址上,所以,不能将其用于一些特别的任务。(关于内存分页机制可以查看:http://blog.csdn.net/dlutbruce...

    2013-08-22 15:21
    1867
  • Linux内核高端内存

    Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存。段页式机制如下图。 Linux内核地址空间划分通常32位Linu...

    2013-08-22 14:11
    1771
  • linux内存屏障浅析

    内存屏障主要解决了两个问题:单处理器下的乱序问题和多处理器下的内存同步问题。为什么会乱序现在的CPU一般采用流水线来执行指令。一个指令的执行被分成:取指、译码、访存、执行、写回、等若干个阶段。然后,多...

    2013-08-22 09:34
    1341
  • LINUX自旋锁详解2

    对于互斥, 旗标是一个有用的工具, 但是它们不是内核提供的唯一这样的工具. 相反, 大部分加锁是由一种称为自旋锁的机制来实现. 不象旗标, 自旋锁可用在不能睡眠的代码中, 例如中断处理. 当正确地使用...

    2013-08-21 17:04
    1250
  • LINUX自旋锁详解

    加锁(locking)是一种广泛应用的同步技术。当内核控制路径必须访问共享数据结构或进入临界区时,就需要为自己获取一把“锁”。由锁机制保护的资源非常类似于限制于房间内的资源,当某人进入房间时,就把门锁...

    2013-08-21 17:02
    2694
  • Linux2.6内核--中断下半部实现方法 工作队列

    工作队列子系统是一个用于创建内核线程的接口,通过它创建的进程负责执行由内核其他部分排到队列里的任务。它创建的这些内核线程称作工作者线程。工作队列可以让你的驱动程序创建一个专门的工作者线程来处理需要退后...

    2013-08-21 13:15
    1824
  • Linux2.6--中断机制中的 ksoftirqd

    Linux中的中断机制被分为两个部分,回应硬件的中断请求的部分成为上半部(一般都是这样),而真正在做处理工作(耗时工作)的部分成为下半部,实现下半部在Linux2.6内核中存在三种方法:软中断,tas...

    2013-08-21 09:50
    3508
  • Linux2.6内核--中断线被关闭的情况

    中断系统是现代操作系统中不可获取的一个子系统,它由硬件主动触发并发送到CPU,最后由内核调用中断处理程序处理中断。      那么中断有时候需要关闭,这是为什么呢?      一般分为两种情况:1.内...

    2013-08-20 15:05
    2031
  • 浅析linux内核中的idr机制

    idr在linux内核中指的就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起的机制。这个机制最早是在2003年2月加入内核的,当时是作为POSIX定时器的一个补丁。现在,...

    2013-08-20 12:26
    5072
  • Linux2.6内核中链表的实现

    对于一个计算机专业的学生,链表这种数据结构对我们来说再熟悉不过了,毕竟在大学的《数据结构》中就讲解过,相信你也自己实现过,它实现起来可能是这个样子:(这里的例子都来自《Linux内核设计与实现》第三版...

    2013-08-20 10:49
    1858
  • linux内核 asmlinkage宏

    asmlinkage是个宏,使用它是为了保持参数在stack中。看一下/usr/include/asm/linkage.h里面的定义:#define asmlinkage CPP_ASMLINKAGE...

    2013-08-19 16:30
    2206
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部