• 等级
  • 834779 访问
  • 148 原创
  • 65 转发
  • 3906 排名
  • 119 评论
  • 202 获赞

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

最近和同事一起处理了一个fuse的大bug;首先看堆栈:Corewasgeneratedby`/sf/cluster/bin/pmxcfs'.ProgramterminatedwithsignalSIGABRT,Aborted.#0 0x00007f2debdcc475inraise()from/lib/x86_64-linux-gnu/libc.so.6(gdb...

2018-04-28 17:41:18

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

为什么CSDN做的越来越丑了?真不知道CSDN的产品经理怎么当的,视觉设计师是怎么做的,真是做的越来越差了。丑的我都无法接受了。不要站在自己的角度,不要站在公司的角度,也不要站在技术的角度去做产品,这样只能把产品做死。我们应该站在用户角度、使用者的角度来思考问题。因为你们产品是给这两者来使用的,要了解他们的本质需求。可能你们自己觉得挺好的,有创新,有改进。那是因为你们对自己产品

2018-02-06 11:21:29

linux文件系统之mount流程分析

本质上,Ext3mount的过程实际上是inode被替代的过程。例如,/dev/sdb块设备被mount到/mnt/alan目录。那么mount这个过程所需要解决的问题就是将/mnt/alan的dentry目录项所指向的inode屏蔽掉,然后重新定位到/dev/sdb所表示的inode索引节点。在没有分析阅读linuxvfsmount代码的时候,我的想法是修改dentry所指向的inod

2017-09-01 10:04:00

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

1、增加个临时文件;把源文件内容逐个字节或者逐行读取出来,然后修改或者丢弃,放到临时文件中,当把源文件中所有内容过滤后,再把临时文件全部覆盖回源文件;2、读取到内存中修改;把整个文件读取到内存中,然后修改,再覆盖回到源文件;我们应该怀疑下,为什么shell命令可以很方便的删除、修改文件内容,这绝对不会有临时文件产生,也不会占用多大内存,或者可以说占用的内存不会随着文件的大小而改变?

2017-04-16 00:16:37

linux文件读写流程

在《linux内核虚拟文件系统浅析》这篇文章中,我们看到文件是如何被打开、文件的读写是如何被触发的。对一个已打开的文件fd进行read/write系统调用时,内核中该文件所对应的file结构的f_op->read/f_op->write被调用。本文将顺着这条路走下去,大致看看普通磁盘文件的读写是怎样实现的。 linux内核响应一个块设备文件读写的层次结构如图(摘自ULK3):

2017-03-29 17:26:56

网络IO虚拟化

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

2017-03-28 11:30:51

CPU虚拟化

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

2017-03-28 09:01:02

QEMU启动过程

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

2017-03-27 16:47:08

QEMU镜像格式:qcow2 与 raw

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

2017-03-27 11:47:50

RRD 数据库简介及操作

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

2017-03-23 09:33:34

编写守护进程的实例

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

2017-03-21 15:24:22

qemu-kvm内存虚拟化原理

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

2017-03-20 11:59:18

libvirt的virsh命令和qemu参数转换

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

2016-12-28 16:45:46

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

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

2016-12-15 00:57:23

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

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

2016-11-02 21:02:10

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

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

2016-11-01 17:30:01

qemu中虚拟网卡概念

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

2016-10-10 20:30:06

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

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

2016-10-10 20:13:58

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

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

2016-10-10 17:58:58

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

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

2016-08-18 20:03:14

庾志辉

关注
  • 计算机软件/软件研发工程师
  • 中国 上海 浦东新区
奖章
  • 专栏达人
  • 持之以恒