07 2017 档案

摘要:POLL机制的作用这里就不进行介绍,根据linux man手册,解释为在一个文件描述符上等待某个事件。按照抽象一点的理解,当某个事件被触发(条件被满足),文件描述符变为有状态,那么用户空间可以根据此进行操作,结合多个文件描述符,可以实现文件描述符的无阻塞访问。其实个人感觉这里的无阻塞主要是在监听多个 阅读全文
posted @ 2017-07-31 19:50 jack.chen 阅读(1420) 评论(0) 推荐(0)
摘要:2017-07-20 eventfd在linux中是一个较新的进程通信方式,和信号量等不同的是event不仅可以用于进程间的通信,还可以用户内核发信号给用户层的进程。eventfd在virtIO后端驱动vHost的实现中作为vhost和KVM交互的媒介,起到了重大作用。本节结合linux源码就eve 阅读全文
posted @ 2017-07-20 20:22 jack.chen 阅读(11971) 评论(0) 推荐(1)
摘要:2017-07-09 今天周末,闲来无事聊聊linux内核内存分配那点事……重点在于分析vmalloc的执行 流程 以传统x86架构为例,内核空间内存(3G-4G)主要分为三大部分:DMA映射区,一致映射区、高端内存区。其中前两者占据低端892M,而剩下的128M作为高端内存区。DMA映射区涉及到外 阅读全文
posted @ 2017-07-10 14:28 jack.chen 阅读(5481) 评论(1) 推荐(0)
摘要:2017-07-06 上节主讲了用户层通过netlink和内核交互的详细过程,本节分析下用户层接收数据的过程…… 有了之前基础知识的介绍,用户层接收数据只涉及到一个核心调用readmsg(), 其他的就不多介绍了,不太明白的请参考之前的文章,我们还是重点看下内核究竟在背后做了什么!该函数在内核对应于 阅读全文
posted @ 2017-07-06 17:05 jack.chen 阅读(1164) 评论(0) 推荐(0)
摘要:2017-07-05 本节从一个小案例入手,结合源码分析下通过netlink进行内核和用户通信的流程。 内核端 按照传统CS模式,其实内核端可以作为是服务器端,用以接收用户的请求并作出处理,但是从netlink本身的特性,其更像是一个对等实体。双方都可以进行主动数据的传递。 内核中首先调用netli 阅读全文
posted @ 2017-07-06 10:59 jack.chen 阅读(4151) 评论(0) 推荐(0)
摘要:2017-07-05 上文以一个简单的案例描述了通过Netlink进行用户、内核通信的流程,本节针对流程中的各个要点进行深入分析 sock的创建 sock管理结构 sendmsg源码分析 sock的创建 这点包含用户socket的创建以及内核socket的创建,前者通过socket调用实现,后者通过 阅读全文
posted @ 2017-07-06 10:59 jack.chen 阅读(1784) 评论(0) 推荐(0)
摘要:2017-07-04 netlink是一种基于网络的通信机制,一般用于内核内部或者内核与用户层之间的通信。其有一个明显的特点就是异步性,通信的双方不要求同时在线,也就不用阻塞等待。NetLink按照数据包的格式发送/接收消息,提供双向通信,和其他内核与用户层通信机制相比,NetLink有其特有的优势 阅读全文
posted @ 2017-07-06 10:58 jack.chen 阅读(2545) 评论(1) 推荐(2)
摘要:2017-06-30 在KVM中基于其搞特权及,可以透明的读写客户机的内存信息,为此KVM提供了一套API,这里姑且称之为kvm_read_guest_virt*/kvm_write_guest_virt*函数,因为根据不同的场景会由不同的函数,但是基本的原理都是一样的,具体如下所示 kvm_rea 阅读全文
posted @ 2017-07-02 12:38 jack.chen 阅读(1580) 评论(0) 推荐(0)

以马内利