抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

qemu中的初始化技术

qemu的初始化框架qemu启动需要初始化很多内容,为了方便维护和添加初始化函数,qemu有它自己的一种实现方式。 qemu的初始化时根据具体的模块类型,执行该类型的所有模块的初始化。有如下类型: 1234567891011typedef enum { MODULE_INIT_MIGRATION, MODULE_INIT_BLOCK, MODULE_INIT_OP...

日志型文件系统

日志型文件系统试想这么一个场景,磁盘正在写data block或data bitmaps或inodes时发生了crash,要如何保证数据的一致性呢?这时使用 日志journaling 就是一个很好的解决方案。 原理在真正更新磁盘数据前,会先往磁盘写入一些信息,这些信息用于描述接下来的任务,这种方式被称为 write-ahead loggind。 当发生crash时就可以通过记录的信息回溯cr...

Linux中的内存管理

为何需要逻辑地址由于系统中的物理内存是随分配不断在变化的,有时候这个程序使用,有时候那个程序在使用。如果不使用逻辑地址直接使用物理地址,那当前进程操作的地址被占用,则不能使用内存。通过将连续的逻辑地址映射成不连续的物理地址,程序将只用关系的连续的逻辑地址,而物理地址再通过一些方法找到并映射过去就行了。 考虑一种简单的映射方法: 如果简单的使用<物理地址起始地址,大小>实现:程序A...

使用ftrace追踪内核函数调用

1 初探ftrace遇到的问题1.1 搞清楚ftrace是否标记出中断函数根据官网的描述,funcgraph-irqs选项,用于表明是否追踪中断。因此关闭后就不会记录中断信息。 123funcgraph-irqs When disabled, functions that happen inside an interrupt will not be traced. 1.2 搞清楚为...

事务简介

事务简介事务是指一套操作,这些操作要么全部完成,要么全部不完成。 事务的四个特性 原子性(Atomicity) 这些操作要么全部执行成功,要么全部不执行。只要一个指令执行失败数据就要进行回滚到指令执行之前的状态 一致性(Consistency) 事务的执行使数据从一个状态转换为另一个状态,但是对于整个数据的完整性保持稳定 隔离性(Isolation) 当多个用户并发访问时,事务之间不...

RUP简介以及常用模型

RUP有时候用户需求难以捉摸,甚至连用户自己都理不清,RUP就提供了一系列模板方便我们快速地获取用户的需求。用户只需要像填写表格一样把公式化的内容填上,再套用对应的模板,建立一系列模型,就能快速地系统地开发。 为此RUP还定义了一些术语来通用的建模和描述业务。 1.1 什么叫迭代增量式iteration incrementation开发将整个开发工作组织成一系列小的项目,被称为一系列迭代。根...

execv中的缓存管理分析

page cache与缓存管理直接从磁盘访问文件会很慢,可以利用空闲的内存来缓存一些磁盘文件的内容,这部分用作缓存磁盘文件的内存就叫做page cache。 1 execv中的调用page cache的流程执行read()系统调用后,首先会查看page cache里有没有目标文件的内容,如果有(cache hit),直接读取;如果没有(cache miss)再从磁盘上读取,放入page ca...

Buddy系统的原理及实现

Buddy系统的原理及实现 本质上就是一个多级链表, 然后使用伙伴系统这种特殊的”索引方式”开快速分配和查找所需内存 通过”二分查找”的方式快速找到所需大小的内存空间。对于大内存的分配是比较快的。 基本要素: 多级freelist用于索引: e.g. 有大小为32, 64, 128…的freelist heap空间用于分配, bitmap用于标识是否分配 对齐空间内存布局用于快速删该 ...

slab分配器

slab分配器slab分配器的两个功能: 1 减少内部碎片: 小结构占用一个page不划算 一般名为kmalloc-xxx, e.g. kmalloc-4096, 这些是通用型slab 2 作为高速缓存,存储内核中经常被分配并释放的对象 Jeff Bonwick 发现对内核中普通对象进行初始化所需的时间超过了对其进行分配和释放所需的时间。因此他的结论是不应该将内存释放回一个全局的内...

execv中地址地址映射流程分析

1 execv函数地址映射流程分析1.1 execv如何填充新进程的页表execv()中会调用bprm_mm_init函数准备一个linux_binprm结构体,该结构体用于描述新进程的各种信息,最后由search_binary_handler找到对应文件格式的处理程序加载执行load_binary。 其中bprm_mm_init会执行如下流程: 123456789101112bprm_mm...