jasonLee的博客

保持饥饿

filebench查看每个负载的参数特性

下面是filebench中fileserver的负载设置; 通过观察负载设置,找到有用的设置信息; 在readfile中,iosize=$iosize,表示读操作的IO size; 在appendfile中,iosize = $meanappendsize,表示写操作的IO size; set ...

2019-04-16 14:55:00

阅读数 64

评论数 0

虚表指针初始化顺序

无继承时: 1、分配内存 2、初始化列表之前赋值虚表指针 3、列表初始化 4、执行构造函数体 有继承时: 1、分配内存 2、基类构造过程(按照无继承来) 3、初始化子类虚表指针 4、子类列表初始化 5、执行子类构造函数体 Q:虚表指针在初始化列表之前被赋值,可以放在初始化列表之后赋值吗?即顺序是:...

2019-04-07 18:30:05

阅读数 30

评论数 0

编译内核出现:cc1: error: code model kernel does not support PIC mode

2018-11-30 14:45:33

阅读数 2019

评论数 6

terminal开启多个窗口并切换

1、正常方式打开一个terminal Ctrl + Alt + T 2、同一个terminal开启另一个窗口 Ctrl + shift + T 3、切换窗口 切换第一个窗口 Alt + 1 切换第二个窗口 Alt + 2 切换第n个窗口 Alt + n ...

2018-11-29 10:18:37

阅读数 1361

评论数 0

gem5 FS模式下mount文件到shell

下面是根据我自己的实际情况,写一点总结。 教程: 1、挂载linux-x86.img mount -o loop,offset=32256 linux-x86.img /mnt 2、看看/mnt目录下是否有内容,有内容则挂载成功 ls /mnt 3、把要传输的文件拷贝到/mnt目录下 cp ...

2018-11-28 17:41:58

阅读数 116

评论数 0

gem5+NVMain联合编译

1.注册bitbucket账号 进入官网,注册即可,记住你的用户名及邮箱,在后面会用到。 2.获取NVMain使用权 打开https://bitbucket.org/mrp5060/nvmain/并登陆bitbucket账号,登陆后重新打开前面这个网站获取下载命令 我的命令是: hg c...

2018-11-27 19:37:57

阅读数 126

评论数 0

git clone指定分支的代码

今天想学习一下开源中国Android客户端的app源码,源码的Git地址:http://git.oschina.net/oschina/android-app,如下图所示: 由于Master主分支上没有放置源码,因此需要切换到指定的Tag分支去查看,如下图所示: 切换到v2.8.1这个分支就可...

2018-11-21 16:34:41

阅读数 94

评论数 0

GitHub一些基础操作

创建本地分支 git branch 新分支 创建本地新分支,并切换到新分支 git branch -b 新分支 查看本地分支 git branch 查看当前分支信息 git status 查看日志信息 git log 查看远程分支 git remote -v 在远程仓库创建新分支 git push...

2018-11-12 09:58:03

阅读数 80

评论数 0

kmalloc和vmalloc的区别

kmalloc和vmalloc完全不同。 kmalloc kmalloc申请一段物理地址和逻辑地址连续的内存空间。 /* 申请一段物理地址连续的内存空间 */ static __always_inline void *kmalloc(size_t size, gfp_t flags) { if...

2018-11-02 09:39:05

阅读数 425

评论数 2

内核模块中使用未导出的函数

一般我们在编写内核模块时,可以直接使用内核中使用EXPORT_SYMBOL或者EXPORT_SYMBOL_GPL导出的函数,没有导出的内核函数不能直接使用。否则会报错未定义: WARNING:“do_sys_open”[/home/tiany/paper/mod/mySdelNotEcrypt_s...

2018-10-16 15:39:07

阅读数 232

评论数 0

内存管理---匿名页面管理

一、匿名页面 这些内存页面保存了一些通常所说的机动性最强的内容,或者可以认为是银行的活期存款,这些内存可以随时被使用,随时被归还。例如用户通过malloc–>>mmap申请的内存,或者通过brk/sbrk扩大的堆空间。相对于mmap文件、文件系统元数据之...

2018-10-16 09:50:43

阅读数 291

评论数 0

Linux swap详解

推荐一篇blog,写的十分详细。特别是里面的流程图对于理解整个swap有很大的帮助。 http://tinylab.org/linux-swap-and-zramfs/ 简介 内存管理基本概念 内存管理区 Struct Zone PFN(Page Frame Number) 页 Struct Pa...

2018-10-15 21:13:16

阅读数 179

评论数 0

F2FS:struct curseg_info结构

F2FS 在运行时,F2FS在“Main Area”区域管理6个活跃的log,分别是Hot/Warm/Cold node log和Hot/Warm/Cold data logs,每一个log对应着一个独立的segment。 Hot node : contains direct node...

2018-10-08 21:10:38

阅读数 233

评论数 0

f2fs读取磁盘block过程:do_read_inode

f2fs:依据inode的节点号,将inode对应的block读到页缓存 f2fs_iget依据索引节点号,查找对应的inode,若没有,则创建一个新的inode,读取磁盘上的inode所在的block,生成f2f2_inode对象去初始化这个新inode。 其中,当inode不存在时,需要创建新...

2018-10-08 17:16:00

阅读数 509

评论数 2

inode_hashtable哈希表及f2fs查找inode过程

文件系统中的所有inode存放在一个名为inode_hashtable的全局哈希表中。另一方面,所有的inode还存放在超级块中的s_inode链表中。 inode_hashtable哈希表加快了对索引节点对象的搜索。 前提是必须知道索引节点号和文件所在文件系统对应的超级块对象。 该inode_t...

2018-10-08 16:50:31

阅读数 185

评论数 0

普通文件和块设备文件的page cache问题

注:本文代码基于linux-3.18.31,此版本中块缓存已经合入页缓存。 写在前面 普通文件和块设备文件都有一个address_space对象,inode中分别维护两个成员指向这两个不同的address_space,分别是i_mapping和i_data。需要注意的是,这两个page cache...

2018-09-26 17:30:44

阅读数 207

评论数 0

bio,request,request_queue的关系

通用块层的核心数据结构称为bio描述符,它描述了块设备的io操作。每一个bio结构都包含一个磁盘存储区标识符(存储区中的起始扇区号和扇区数目)和一个或多个描述与IO操作相关的内存区段(bio_vec数组) bio结构中的字段 /* * main unit of I/O for the block...

2018-09-26 11:13:50

阅读数 318

评论数 0

从文件 I/O 看 Linux 的虚拟文件系统

1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等。通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,对文件的 操作可以跨文件系统而执行。如图 1 所示,我们可以使用 cp 命令从 ...

2018-09-25 10:19:41

阅读数 100

评论数 0

Linux IO子系统和文件系统读写流程

我们所有分析的,是基于2.6.32及其后的内核. 我们在Linux上总是要保存数据,数据要么保存在文件系统里(如ext3),要么就保存在裸设备里。我们在使用这些数据的时候都是通过文件这个抽象来访问的,操作系统会把我们需要的数据提交给我们,而我们则无需和块设备打交道。 从下图,我们可以清除的看到: ...

2018-09-25 09:30:58

阅读数 446

评论数 0

container of()函数与拓展

container of原理 其实,原理很简单: 已知结构体type的成员member的地址ptr,求解结构体type的起始地址。 type的起始地址 = ptr - size (这里需要都转换为char *,因为它为单位字节)。 到此,该函数已经讲完,...

2018-09-19 09:51:25

阅读数 118

评论数 1

提示
确定要删除当前文章?
取消 删除
关闭
关闭