分类 Linux 下的文章

Linux IO 概览

似乎最近说了比较多的IO,未来也可能有几篇文章与IO也有所关联,为了便于大家理解,我决定先草拟一篇介绍各种IO的文章,免得大家看到诸如阻塞式IO、非阻塞式IO、同步IO、异步IO、IO复用等概念后理不清思路。

请注意,本文仅涉及各类IO的概念以及简单的原理介绍,旨在帮助大家更好地区分和理解,具体如何使用这些IO不属于本文的内容。同时本文也是我个人对于各类IO学习的记录,有所疏漏是难以避免的,如果大家发现了问题,还请让我知道,我会第一时间修正。希望本文对大家有用所价值!

阅读剩余部分

Linux epoll 详解

最近,异想天开,想用D实现一个web服务器(似乎已经想这件事好久了,只不过之前是C++),自然而然得开始研究epoll。早就听说过epoll的大名,只不过网上的教程似乎没多少,并且感觉也没怎么把用法给讲完整。好在,通过几天的学习,也算是有所积累,因此想通过这篇post记录下,尽量把细节给讲清楚,希望它对各位有所价值。

Linux平台也有异步IO,比较通用的是POSIX AIO,只不过这货就是新开个线程来处理IO罢了,比较适合用来处理相对耗时的磁盘IO。

同属IO复用,除了epoll,我们也能选择select和poll,之间的性能比较需要视场景而定,通常对于Web服务这种场景,epoll会更加适合,若想深究,请大家阅读一下源码,自然明了,也就2~3KLoC。

阅读剩余部分

Linux namespace 简介 part 6 - USER

此篇post为译者续写,非原作者文章翻译,特此声明。

继上一篇 [关于NET namespace的文章]1,此篇post,我们将为大家介绍这个系列的最后一个namespace——USER,通过这个namespace,我们将能够使得例子中的那个bash(如果你愿意称其为VM)更加透明。如果你尚未阅读过之前的post,我强烈建议你先阅读一遍这个系列的第一篇post,了解下linux namespace隔离机制。

首先,有一点需要特别说明,USER namespace是在Kernel-3.8才被(大部分)实现的,当然并不是说如果你的内核版本高于3.8就一定支持,很多发行版因为安全问题,在编译内核的时候并未开启USER_NS,比如Archlinux。因此,阅读此篇post之前,请确定你的系统支持USER_NS。下文所有的example都是在ubuntu14.04中运行的。

阅读剩余部分

Linux namespace 简介 part 5 - NET

本文为原文翻译,特此声明。
原文链接:https://blog.jtlebi.fr/2014/01/19/introduction-to-linux-namespaces-part-5-net/
原文中有部分内容为便于理解,并非直译,可能存在一定的疏漏,因此请参考原文理解。

继上一篇 [关于NS namespace的文章]1,你想更深入更接近一个全功能的VM吗?好!这个系列的上两篇post很明确地专注于此。而使用“NET” namespace隔离网络接口(这是真的,这不是梦)和user/group描述符让它(VM)更加透明。如果你尚未阅读过之前的post,我强烈建议你先阅读一遍这个系列的第一篇post,了解下linux namespace隔离机制。



阅读剩余部分

Linux namespace 简介 part 4 - NS(FS)

本文为原文翻译,特此声明。
原文链接:https://blog.jtlebi.fr/2014/01/12/introduction-to-linux-namespaces-part-4-ns-fs/
原文中有部分内容为便于理解,并非直译,可能存在一定的疏漏,因此请参考原文理解。

继上一篇 [关于PID namespace的文章]1,我们现在将一览一个惊人的部分:隔离挂载表(mount table)。如果你尚未阅读过之前的post,我强烈建议你先阅读一遍这个系列的第一篇post,了解下linux namespace隔离机制。



阅读剩余部分