Linux
zhoudawei
这个作者很懒,什么都没留下…
展开
-
Linux文件子系统( VFS)的初始化
目录 概述文件的描述VFS系统的数据类型各个数据结构之间的关系VFS初始化概述Linux世界中一切都是文件,Linux文件子系统VFS(Virtual Filesystem)为用户提供了文件和文件系统的相关接口,系统中所有文件系统依赖VFS来协同工作。Linux的 文件包含两部分目录和文件,一般采用树状的结构进行组织,如:│ ├── Desktop│ ...原创 2019-01-06 18:16:17 · 1602 阅读 · 2 评论 -
__setup宏以及表驱动编程
在linux的代码中,经常可以看到这样的写法:__setup("root=", root_dev_setup);其中__setup为宏,root_dev_setup为函数名,这样的写法是什么意义呢?查找宏的定义#define __setup_param(str, unique_id, fn, early) \ static const char __setup_str_#...原创 2019-01-12 12:00:20 · 866 阅读 · 0 评论 -
从Linux BITMAP到索引池的实现
Linux代码中很多地方为了对某个资源进行标记使用了BITMAP方式,每个标记位只占用一个bit,如cpumask,它的定义在:include\linux\bitops.h#define BITS_PER_TYPE(type) (sizeof(type) * BITS_PER_BYTE)#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PE...原创 2019-01-13 11:38:28 · 399 阅读 · 0 评论 -
NO_HZ: 减少调度时钟的滴答
目录 概要永远不要忽略调度时钟滴答为空闲cpu的省略调度时钟滴答省略只有一个可运行任务的CPU的调度时钟功能RCU的影响测试已知的问题概要本文描述了可以减少调度时钟中断的次数的Kconfig选项和引导参数,从而来提高效率,减少系统抖动。减少系统抖动对于某些计算密集型高性能计算(HPC)程序和实时程序非常重要。下面描述三种方法来管理:调度时钟中断(sche...翻译 2019-01-13 18:13:11 · 9539 阅读 · 0 评论 -
Linux根文件系统的初始化
根文件系统的安装分为两个阶段:1、安装rootfs文件系统2、安装实际的文件系统其中,安装rootfs的流程在<Linux文件子系统(VFS)的初始化>已经描述,它是一个虚拟的文件系统,并且进程0的根目录和工作目录设置为这个“根文件系统”。第二阶段实际的文件系统是在内核初始化即将结束的时候进行,根据内核的编译和启动选项进行配置。相关概念:ram disk,ramfs,...原创 2019-01-20 20:08:56 · 1208 阅读 · 0 评论 -
kernfs_node、kobject和kset
sysfs是一个用于导出内核内部对象及其属性和关系的虚拟文件系统,用户可以使用sysfs来确定运行内核中的有用信息,同时也可以用来调整设备和子系统。某些系统代理依赖sysfs中的信息来进行操作。块子系统当前使用它来挂载根分区。如果禁用sysfs,就需要通过其主要和次要设备号在内核引导命令行上指定引导设备。例如: 例如,/dev/hda1的“root=03:01”在Linux内核中,kernfs...原创 2019-01-27 22:48:14 · 3808 阅读 · 0 评论 -
Linux进程PID分配
struct pid在内核内部用于标识一个“进程”,表示一个独立的任务(task)、进程组、会话,为了快速索引可以用hash表来组织。下面我们基于Linux4.20看下进程的pid是如何分配的,首先看下进程pid相关的数据结构:进程数据结构中的namespace成员:struct task_struct{ … … /* Namespaces: */ struct nsprox...原创 2019-02-05 17:37:24 · 3135 阅读 · 1 评论 -
临时内核页表的创建 __create_page_tables
相关宏: .globl swapper_pg_dir .equ swapper_pg_dir, KERNEL_RAM_VADDR - PG_DIR_SIZE 相当于: #define swapper_pg_dir (KERNEL_RAM_VADDR - PG_DIR_SIZE) .macro pgtbl, rd, phys add \rd, \phys, #TEXT_O...原创 2019-02-24 22:21:53 · 767 阅读 · 0 评论