自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 多线程中使用fork()导致分页

最近和同事一起处理了一个 fuse 的大bug;首先看堆栈:Core was generated by `/sf/cluster/bin/pmxcfs'.Program terminated with signal SIGABRT, Aborted.#0  0x00007f2debdcc...

2018-04-28 17:41:18 527 0

原创 为什么CSDN做的越来有丑了??

为什么CSDN做的越来越丑了? 真不知道CSDN的产品经理怎么当的,视觉设计师是怎么做的,真是做的越来越差了。丑的我都无法接受了。 不要站在自己的角度,不要站在公司的角度,也不要站在技术的角度 去做产品,这样只能把产品做死。 我们应该站在用户角度、使用者的角度 来思考问题。因为你们产品是给这...

2018-02-06 11:21:29 860 5

转载 linux文件系统之mount流程分析

本质上,Ext3 mount的过程实际上是inode被替代的过程。例如,/dev/sdb块设备被mount到/mnt/alan目录。那么mount这个过程所需要解决的问题就是将/mnt/alan的dentry目录项所指向的inode屏蔽掉,然后重新定位到/dev/sdb所表示的inode索引节点。...

2017-09-01 10:04:00 1909 0

原创 linux c删除文件中指定内容行或指定行

1、增加个临时文件;把源文件内容逐个字节或者逐行读取出来,然后修改或者丢弃,放到临时文件中,当把源文件中所有内容过滤后,再把临时文件全部覆盖回源文件; 2、读取到内存中修改;把整个文件读取到内存中,然后修改,再覆盖回到源文件; 我们应该怀疑下,为什么 shell 命令可以很方便的删除、修改文件内容...

2017-04-16 00:16:37 9459 0

转载 linux文件读写流程

在《linux内核虚拟文件系统浅析》这篇文章中,我们看到文件是如何被打开、文件的读写是如何被触发的。 对一个已打开的文件fd进行read/write系统调用时,内核中该文件所对应的file结构的f_op->read/f_op->write被调用。 本文将顺着这条路走下去,大致看看普通磁...

2017-03-29 17:26:56 1732 0

转载 网络IO虚拟化

IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理。作为一个完整的风诺依曼计算机系统,必然有输入计算输出这个步骤。传统的IO包括了网络设备IO,块设备IO,字符设备IO等等,在KVM虚拟化原理探究里面,我们最主要介绍网络设备IO和块设备IO,其实他们的原理都很像,但...

2017-03-28 11:30:51 1253 0

转载 CPU虚拟化

上一篇文章笼统的介绍了一个虚拟机的诞生过程,从demo中也可以看到,运行一个虚拟机再也不需要像以前想象的那样,需要用软件来模拟硬件指令集了。虚拟机的指令集直接运行在宿主机物理CPU上,当虚拟机中的指令设计到IO操作或者一些特殊指令的时候,控制权转让给了宿主机(这里其实是转让给了vm monitor...

2017-03-28 09:01:02 852 0

转载 QEMU启动过程

虚拟机启动过程 第一步,获取到kvm句柄 kvmfd = open("/dev/kvm", O_RDWR); 第二步,创建虚拟机,获取到虚拟机句柄。 vmfd = ioctl(kvmfd, KVM_CREATE_VM, 0); 第三步,为虚拟机映射内存,还有其他的PCI,信号...

2017-03-27 16:47:08 2443 0

转载 QEMU镜像格式:qcow2 与 raw

qcow2 的基本原理 qcow2 镜像格式是 QEMU 模拟器支持的一种磁盘镜像。它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的 raw 格式的镜像相比,有以下特性: 更小的空间占用,即使文件系统不支持空洞(holes); 支持写时拷贝(COW, copy-on-wri...

2017-03-27 11:47:50 2604 0

转载 RRD 数据库简介及操作

RRD 数据库简介及操作 最近公司在部署了一套小米开源的监控平台 — open-falcon ,有机会认识了 RRD (更多被称作 RRDTool)。好久没 blog 了,今天跟大家分享一下这个数据库。 RRD 简介 RRDtool refers to Round Robin...

2017-03-23 09:33:34 11151 0

转载 编写守护进程的实例

守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用 的进 程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。 ...

2017-03-21 15:24:22 544 0

原创 qemu-kvm内存虚拟化原理

关系:客户机虚拟地址---> 哈希表 ---> 影子页表 ---> 虚拟地址--->宿主物理地址; 哈希表之所以用物理地址映射(到影子页表是用虚拟机地址的)是因为每个客户机只有一个哈希表,而虚拟地址每个客户机有多个进程对应的虚拟机地址,也有多个影子表。而物理地址只有一...

2017-03-20 11:59:18 953 0

转载 libvirt的virsh命令和qemu参数转换

运行虚拟机有多种方式,其中可以使用qemu-system-x86或者qemu-kvm来运行虚拟。另外还可以使用libvirt的virsh命令从xml文件定义来运行虚拟机。而网上许多的教程或者示例使用qemu命令参数来运行的,如果使用libvirt来运行可能会无从下手,不知道对应的参数。 li...

2016-12-28 16:45:46 3518 0

原创 node + express 中ejs页面中文乱码问题

1、在页面上设置   2、如果还不行,那就是文件本身不是utf-8的格式;linux中的文件格式一般是utf-8的,而Windows上的格式一般是gb2312 和 iso-8859-1 的;因为有的时候我们是在Windows上调试页面,调试满意后再上传到linux,就会导致这样的问题; ...

2016-12-15 00:57:23 3488 0

原创 父进程为1号进程(ppid=1)的僵尸进程处理和分析

但是,父进程为1号进程的进程 其实也是有可能成为僵尸进程的。下面说几种情况: 1、进程还在被其它进程使用,退出; 2、进程的子线程还在执行任务,但主线程已经死掉了(可能主线程已经被杀了,systemd停止服务时会发SIGTERM信号); 3、进程阻塞在某一IO请求上,这时控制权已交到内核手上,这...

2016-11-02 21:02:10 17811 0

转载 病毒分析--mirai物联网病毒

物联网僵尸网络病毒“Mirai”在上月参与发起了针对KrebOnSecurity安全站点的大规模分布式DDoS攻击,新一类僵尸网络从各种容易被感染的物联网设备中发起,流量巨大防不胜防。“Mirai”可以高效扫描物联网系统设备,感染采用出厂密码设置或弱密码加密的脆弱物联网设备,被病毒感染后,设备成为...

2016-11-01 17:30:01 9586 1

转载 qemu中虚拟网卡概念

注册博客园已经好长时间,一直以来也没有在上面写过文章,都是随意的记录在了未知笔记上,今天开始本着分享和学习的精神想把之前总结的笔记逐步分享到博客园,和大家一起学习,一起进步吧! 2016-09-20  17:11:05   其实之前已经有分析过网桥的原理,但是当时对其理解还是局限于表面,对于...

2016-10-10 20:30:06 2525 0

转载 qemu网络虚拟化之数据流向分析二

2016-09-27  上篇文章大致介绍了qemu网络虚拟化相关的数据结构,本篇就结合qemu-kvm源代码分析下各个数据结构是如何初始化以及建立联系的。 这里还是分为三个部分: 1、Tap设备区 2、Hub区 3、NIC区 1、Tap设备区 在net...

2016-10-10 20:13:58 755 0

转载 qemu网络虚拟化之数据流向分析一

插曲:   今天下午欣喜的想写点关于qemu网络部分的功能,但是中途出现了点小插曲,电脑被某人搞得死机了,并且文章也没有保存。结果,,,就只能重新写了!!所以这里强烈建议开发团队提供自动保存的功能! 言归正传,前段时间自己写过关于Linux 内部网桥的实现原理以及数据包从物理网...

2016-10-10 17:58:58 857 0

转载 使用strace, ltrace寻找故障原因的线索

2012-03-23 wcdj 在GNU/Linux环境下,当程序出现“疑难杂症”的时候,如何快速定位问题呢?本文介绍strace/ltrace的一些使用方法,内容主要来自个人的读书笔记(可见参考文献)。strace/ltrace 是一类不错的工具,在工作中经常会用到,其主要可以用于...

2016-08-18 20:03:14 733 0

转载 systemd详解

CentOS 7 使用systemd替换了SysV。Systemd目的是要取代Unix时代以来一直在使用的init系统,兼容SysV和LSB的启动脚本,而且够在进程启动过程中更有效地引导加载服务。 systemd的特性有: 支持并行化任务 同时采用socket式与D-Bus总线式...

2016-08-17 10:47:05 772 0

转载 走进Linux之systemd启动过程

编译自:http://linoxide.com/linux-how-to/systemd-boot-process/作者: Aun Raza 原创:LCTT https://linux.cn/article-5457-1.html译者: zpl1025 本文地址:https://lin...

2016-08-17 10:44:27 3654 0

转载 recovery: ASCII cpio archive (SVR4 with no CRC)——cpio格式的recovery解压缩和重新打包的方

中兴U930HD手机CPU采用的是联芯科技的LC1810,该平台系统的recovery.img 和boot.img 的打包格式跟其他平台(如高通、MTK、英伟达等)不一致,研究了半天终于将930HD的recovery替换了,步骤如下 1、用第三方工具root手机之后,采用dd命令导出reco...

2016-07-08 18:59:03 1184 0

转载 linux panic分析

Oops: 0000 [#1] PREEMPT SMP                Modules linked in: capidrv kernelcapi isdn slhc ipv6 loop dm_multipath snd_ens1371 gameport snd_rawmidi ...

2016-07-02 09:28:57 620 0

转载 查看设备、文件被哪个进程使用

lsof简介   lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接 和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程...

2016-06-27 11:36:23 15048 0

转载 System.map解析

第一部分:System.map的作用 有关System.map文件的信息好象很缺乏。其实它一点也不神秘,并且在整个事情当中它并不象看上去那么得重要。但是由于缺乏必要的文档说明,使其显得比较神秘。它就象耳垂,我们每个人都有,但却不知道是干什么用的。注意,我并不会是百分之一百正确的。例如,一个系...

2016-06-20 23:41:33 907 0

转载 linux宕机后根据地址来查看哪个函数出错

本文以获取内核函数 sys_open()的地址为例。    1)从System.map文件中直接得到地址:       $ grep sys_open /usr/src/linux/System.map       2)使用 nm 命令:       $ nm vmlinuz |...

2016-06-20 23:26:44 1151 0

转载 do ... while(0) 的妙用

在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。     但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是...

2016-06-16 16:04:17 347 0

原创 SSD卡驱动中trim命令的实现原理

有关trim命令的简介 可以看下http://blog.csdn.net/yuzhihui_no1/article/details/46519701 这里就大概的说下驱动中对trim命令的实现吧,由于对公司代码的保密性,这里就不沾贴代码了,就大概的说下实现原理; 首先是块设备的基本框架:队列 qu...

2016-05-06 00:00:13 1904 0

原创 linux文件系统之读流程 SYSCALL_DEFINE3(read, xxx)

SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count);fget_light();fcheck_files();ssize_t vfs_read(struct file *file, char __use...

2016-05-05 00:50:55 1936 0

转载 struct file 和 struct file_struct

在具体介绍这几个结构以前,我们需要解释一下文件描述符、打开的文件描述、系统打开文件表、用户打开文件表的概念以及它们的联系。 1.文件对象 在Linux中,进程是通过文件描述符(file descriptors,简称fd)而不是文件名来访问文件的,文件描述符实际上是一个整数。Linux中规定每个进程...

2016-05-02 21:35:33 4401 0

原创 linux中页缓冲和块缓冲之概念

页缓冲在《linux内核情景分析》一书的第5.6节文件的写与读一章中说明的很详细,这里摘抄下来; 在文件系统层中有三隔主要的数据结构,file结构、dentry结构和inode结构; file结构:代表目标文件的一个上下文,不同进程可以在同一文件上建立不同的上下文,而且同一进程也可以通过打开一个文...

2016-04-27 22:41:01 5171 0

原创 linux内存管理--实际分配函数 buffered_rmqueue

不管是快速分配还是慢速分配,实际分配内存的都是 buffered_rmqueue()函数,其他的都是在选择从哪个地方来分配比较合适; 还是先来说说各个参数: struct zone *preferred_zone 表示分配所能接受的最大zone类型 struct zone *zone  表示就在该...

2016-04-27 22:39:41 4995 0

原创 linux内存管理--slab

struct kmem_cache * kmem_cache_create(const char *name, size_t size, size_t align, unsigned long flags, void (*ctor)(void *)) { return...

2016-04-27 22:38:26 3979 0

原创 linux内存管理--高端内存映射

void *kmap(struct page *page) { might_sleep(); if (!PageHighMem(page)) return page_address(page); return kmap_high(page); } /...

2016-04-27 22:30:03 753 0

原创 linux内存管理--vmalloc

/** * vmalloc - allocate virtually contiguous memory * @size: allocation size * Allocate enough pages to cover @size from the page level...

2016-04-27 22:29:10 3926 0

原创 linux内存管理--慢速分配内存页 __alloc_pages_slowpath

page = __alloc_pages_slowpath(gfp_mask, order, zonelist, high_zoneidx, nodemask, preferred_zone, migratetype); stat...

2016-04-27 22:27:56 2560 0

原创 linux内存管理--分配内存页(快速) get_page_from_freelist

page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, nodemask, order, zonelist, high_zoneidx, alloc_flags, preferred_zone, ...

2016-04-27 22:26:58 3039 0

原创 linux内存管理--伙伴系统分配内存准备工作

linux内核内存管理的代码改变的有点大,主要是细节方面; 首先从 __get_free_pages()开始总结起: unsigned long  __get_free_pages(grp_t  gfp_mask, unsigned int order) /* ...

2016-04-27 22:26:07 1251 0

原创 __get_free_pages

说下分配策略,这个分配策略主要是获取到节点的编号(也就是得到 pgdat 结构体);下面是分配策略的结构体 static inline struct page * __alloc_pages(gfp_t gfp_mask, unsigned int order, ...

2016-04-27 22:24:51 1276 0

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