240 发简信
IP属地:上海
  • 120
    一张图读懂nginx多线程高并发

    话不多说,先上图 Master-Worker模式 1、Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程。2、接收来自外界的信号,向各wo...

  • DirectIO的对齐问题

    最近在代码中使用了Linux AIO接口,其需要通过O_DIRECT方式打开文件,同时在IO时要求块大小对齐。 对于块大小对齐,找到了一个解释:Why does O_DIRE...

  • 120
    iSCSI initiator软件架构

    SCSI分层 Linux内核中SCSI代码结构分为三层,它们和块设备驱动的关系如下图所示: iscsi initiator要实现SCSI底层,即负责将scsi命令封装成网络报...

  • 120
    Virtio and QEMU storage stack

    virtio Virtio是IO虚拟化中的一个优化方案,属于para-virtulization的一种实现,即Guest OS中需要运行virtio的驱动程序,通过virti...

  • 内核ftrace的实现

    在动态ftrace原理中已经介绍了内核通过gcc -pg -fentry为函数增加5 Byte的stub,系统启动后这5 Byte被修改为NOP指令:66 66 66 66 ...

  • Linux内核ftrace原理

    gcc的-pg选项 ftrace 支持动态trace,即可以跟踪内核和模块中任意的全局函数。它利用了gcc的-pg编译选项,在每个函数的开始增加一个stub,这样在需要的时候...

  • 120
    PowerPC上的KVM内存虚拟化

    KVM介绍 KVM (Kernel Virtual Machine) 是Linux Kernel的一个模块。另外还有一个用户空间的工具QEMU来控制KVM去创建、配置和管理V...

  • 120
    GDB调试CentOS内核

    通过GDB和QEMU调试Linux内核已经有很多介绍了,但基本都是制作简单的根文件系统。有时候需要调试的模块或者场景需要用到发行版的Linux,因此本文介绍调试CentOS内...