我是一只小小鸟
全部博文(184)
发布时间:2014-11-10 15:58:04
1. 前言 Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令。但是.........【阅读全文】
发布时间:2014-11-10 15:56:41
1. Linux内核namespace机制Linux Namespaces机制提供一种资源隔离方案。PID,IPC,Network等系统资源不再是全局性的,而是属于某个特定的Namespace。每个namespace下的资源对于其他namespace下的资源都是透明,不可见的。因此在操作系统层面上看,就会出现多个相同pid的进程。系统中可以同时存在两个进程号为0,1,.........【阅读全文】
发布时间:2014-11-10 15:56:04
linux的主流文件系统(如ext4等),在文件系统持续比较满,且需要经常删改文件时,会产生大量文件碎片,使得磁盘io性能大幅下降。通过一些简单的优化,就可以让磁盘io得到数倍的提升。
另外对于互联网图片服务器,通过将同一页面的多个图片合并,或整理到连续磁盘空间,也可以得到数倍的io性能提升......【阅读全文】
发布时间:2014-11-10 12:52:02
自旋锁自旋锁是内核中最基础的锁机制。自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元持有,调用者就一直循环在那里看是否该自旋锁的持有者已经释放了锁,"自旋"一词就是因此而得名。自旋锁适用于锁使用者保持锁时间比较短的情况。使用自旋锁需要注意有可能造成的死锁情况: .........【阅读全文】
发布时间:2014-11-10 12:48:52
slab/kmalloc/vmalloc都是内核分配虚拟地址空间的方法,不是物理地址的方法 get_free_page/allocate_page这些都是内核分配物理空间的,但是最终又要重新映射为虚拟地址空间vremap 用户态的虚拟地址空间的分配是new/malloc,最终都是要到.........【阅读全文】
发布时间:2014-11-10 12:48:32
我们都知道Linux内核里的双向链表和学校里教给我们的那种数据结构还是些不一样。Linux采用了一种更通用的设计,将链表以及其相关操作函数从数据本身进行剥离,这样我们在使用链表的时候就不用自己去实现诸如节点的插入、删除、遍历等操作了。当然,Linux也是从2.1.x内核开始才对链表进行了这样的统一,和我们目前看到的样.........【阅读全文】