3 jasonLee_lijiaqi

尚未进行身份认证

暂无相关简介

等级
TA的排名 1w+

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

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

2019-04-16 14:55:00

虚表指针初始化顺序

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

2019-04-07 18:30:05

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

2018-11-30 14:45:33

terminal开启多个窗口并切换

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

2018-11-29 10:18:37

gem5 FS模式下mount文件到shell

下面是根据我自己的实际情况,写一点总结。教程:1、挂载linux-x86.imgmount -o loop,offset=32256 linux-x86.img /mnt2、看看/mnt目录下是否有内容,有内容则挂载成功ls /mnt3、把要传输的文件拷贝到/mnt目录下cp ./hello /mnt4、在启动FS模拟之前,确保该loop设备已经被卸载了umount /...

2018-11-28 17:41:58

gem5+NVMain联合编译

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

2018-11-27 19:37:57

git clone指定分支的代码

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

2018-11-21 16:34:41

GitHub一些基础操作

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

2018-11-12 09:58:03

kmalloc和vmalloc的区别

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

2018-11-02 09:39:05

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

一般我们在编写内核模块时,可以直接使用内核中使用EXPORT_SYMBOL或者EXPORT_SYMBOL_GPL导出的函数,没有导出的内核函数不能直接使用。否则会报错未定义:WARNING:“do_sys_open”[/home/tiany/paper/mod/mySdelNotEcrypt_success/hello.ko]undefined!那么我们到底能不能使用内核中没有导出的函数呢?答...

2018-10-16 15:39:07

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

一、匿名页面这些内存页面保存了一些通常所说的机动性最强的内容,或者可以认为是银行的活期存款,这些内存可以随时被使用,随时被归还。例如用户通过malloc–>>mmap申请的内存,或者通过brk/sbrk扩大的堆空间。相对于mmap文件、文件系统元数据之类的内容,这些空间对用户来说最为顺手,也最为常见。但是管理起来也比较复杂,因为这里涉及到这些页面如果被同时使用了很多,系统内存负载将会...

2018-10-16 09:50:43

Linux swap详解

推荐一篇blog,写的十分详细。特别是里面的流程图对于理解整个swap有很大的帮助。http://tinylab.org/linux-swap-and-zramfs/简介内存管理基本概念内存管理区 Struct ZonePFN(Page Frame Number)页 Struct PagePTE 与 VMA内存回收匿名页的内存回收 - 交换Zram 交换技术...

2018-10-15 21:13:16

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 blocks of directories.Warm node : contains dir...

2018-10-08 21:10:38

f2fs读取磁盘block过程:do_read_inode

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

2018-10-08 17:16:00

inode_hashtable哈希表及f2fs查找inode过程

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

2018-10-08 16:50:31

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

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

2018-09-26 17:30:44

bio,request,request_queue的关系

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

2018-09-26 11:13:50

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

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

2018-09-25 10:19:41

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

我们所有分析的,是基于2.6.32及其后的内核.我们在Linux上总是要保存数据,数据要么保存在文件系统里(如ext3),要么就保存在裸设备里。我们在使用这些数据的时候都是通过文件这个抽象来访问的,操作系统会把我们需要的数据提交给我们,而我们则无需和块设备打交道。从下图,我们可以清除的看到:I/O子系统是个层次很深的系统,数据请求从用户空间最终到达磁盘,经过了复杂的数据流动。对设驱开发人...

2018-09-25 09:30:58

container of()函数与拓展

container of原理其实,原理很简单: 已知结构体type的成员member的地址ptr,求解结构体type的起始地址。 type的起始地址 = ptr - size (这里需要都转换为char *,因为它为单位字节)。到此,该函数已经讲完,是不是很简单??? 其实也不是,这里并没有提到size如何计算,而令我们头晕的正是这里。好吧,先上c...

2018-09-19 09:51:25

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。