08 2013 档案

摘要:初始化定义-------------------接下来的符号定义的前提是你知道在你的机器上运行的__virt_to_phy()这个转换函数的意思。这个宏把传进来的虚拟地址转换成物理地址。通常情况下,它可以简化为: phys = virt - PAGE_OFFSET + PHYS_OFFSET解压符号-------------------ZTEXTADDR 解压代码(解压代码负责把内核镜像解压到RAM中的指定地址)的起始地址。此时谈论虚拟或者物理地址没有意义,那是因为当调用解压代码时MMU是关闭的。它不必一定处于RAM中,可以处于flash、其他的只读或可读写媒介。ZBSSADDR 解压代... 阅读全文
posted @ 2013-08-31 15:45 IrisZhou 阅读(334) 评论(0) 推荐(0)
摘要:第十四章块设备驱动 本章讲述的是块设备的I/O驱动。块设备的关键点是在CPU和总线读写数据所使用的时间和硬盘速度上的不同。块设备平均访问时间很高。每个操作需要几毫秒才能完成,主要因为磁盘控制器必须把磁盘头从磁盘表面移到记录数据的确切位置。然而,一旦磁盘头准确到位了,数据传输可以维持在较快的速度。 14.1 块设备处理 每个对块设备驱动的操作涉及到大量的内核组件;其中最重要的几个组件展示在图14-1。 图 14-1 一个块设备操作影响到的内核组件 VFS Disk CachesMapping L... 阅读全文
posted @ 2013-08-12 13:37 IrisZhou 阅读(346) 评论(0) 推荐(0)
摘要:在创建进程的时候会调用到alloc_pidmap来分配一个空闲的pid。 函数入参是pid_namespace结构体,介绍下该结构体的两个成员: int last_pid 上一个进程所使用的pid; struct pidmap pidmap[PIDMAP_ENTRIES] pid位图数组,pidmap有两个成员:nr_free,用来表征当前位图中的空闲pid个数;page指针,存储一页大小的内存的虚拟地址,也就是pid位图,一页有32768位,每一位代表一个pid,置1表示该位表征的pid已被使用。 来看具体的实现流程: 1 pid = last + 1; 2 ... 阅读全文
posted @ 2013-08-05 11:35 IrisZhou 阅读(1118) 评论(0) 推荐(0)