LinuxÄÚºËÎĵµÖ®rbtree.txt
Red-black Trees (rbtree) in Linux
January 18, 2007
Rob Landley <rob@landley.net>
=============================
red-blackÊ÷ÊÇʲôÑùµÄÊ÷£¬ÎªÊ²Ã´ÐèÒªred-blackÊ÷£¿
------------------------------------------------
red-black tree£¨RBÊ÷£©ÊÇÒ»ÖÖƽºâ¶þ²æÊ÷£¬ËüÖ÷ÒªÓÃÓÚ´æ´¢»òÕß˵Ë÷Òý¿ÉÅÅÐòµÄ¼ü
Öµ¶ÔÊý¾Ý¡£RBÊ÷£¨ºìºÚÊ÷£©ÓëradixÊ÷ºÍhash±í¶¼²»Í¬¡£radixÊ÷ÊÇÒ»ÖֱȽÏÊʺÏÓÃÓÚ
´æ´¢Ï¡ÊèµÄÊý¾Ý¼¯¶øÇÒ½«ÓÃÒ»¸ö´óÕûÊý½øÐвåÈ룬ɾ³ý£¬²éÕҵIJÙ×÷»ù´¡¡£¶øhash±í
²¢²»ÊÇÒÔijÖÖÅÅÐò˳Ðò½øÐд洢£¬¶øÇÒ±ØÐëÖ¸¶¨´óСºÍhashº¯Êý¡£
RBÊ÷ÓëAVLÊ÷ºÜÏàËÆ£¬µ«ÊDZÈAVLÊ÷ÓиüºÃµÄ²åÈëºÍɾ³ý×Çé¿öµÄʱ¼ä¸´ÔӶȣ¬ÒÔ¼°
O(log n)µÄ×²éÕÒʱ¼ä¸´ÔӶȡ£
ÒýÓÃ:
ÔÚLinuxÖÐÓкܶàµØ·½Óõ½ÁËRDÊ÷¡£anticipatory, deadline, ºÍCFQ I/Oµ÷¶È¶¼Ê¹ÓÃ
µÄÊÇRBÊ÷½øÐÐÇëÇó¸ú×Ù£¬»¹ÓÐCD/DVDÇý¶¯µÄ°ü¹ÜÀíÒ²ÊÇÈç´Ë¡£
¸ß¾«¶È¼ÆʱÆ÷£¨high-resolution timer£©Ê¹ÓÃRBÊ÷×éÖ¯¶¨Ê±ÇëÇó¡£
EXT3ÎļþϵͳҲʹÓÃRBÊ÷À´¹ÜÀíĿ¼¡£
ÐéÄâ´æ´¢¹ÜÀíϵͳҲÊÇÓÐRBÊ÷½øÐÐVMAs£¨Virtual Memory Areas£©µÄ¹ÜÀí¡£
µ±È»»¹ÓÐÎļþÃèÊö·û£¬ÃÜÂëÔ¿³×£¬“µÈ¼¶ÁîÅÆÍ°”µ÷¶ÈµÄÍøÂçÊý¾Ý°ü¶¼ÊÇÓÃRBÊý¾Ý½ø
ÐÐ×éÖ¯ºÍ¹ÜÀíµÄ¡£
Ïà¹Ø×ÊÁÏ£º
Linux Weekly News article on red-black trees
http://lwn.net/Articles/184495/
Wikipedia entry on red-black trees
http://en.wikipedia.org/wiki/Red-black_tree
¿É¼ûRBÊ÷£¨ºìºÚÊ÷£©ÔÚLinuxÄÚºËÖеÄÖØÒªÐÔ¡£
LinuxÄں˵ÄRBÊ÷ʵÏÖ
---------------------------------------
ÔÚLinuxÄÚºËÔ´´úÂëÖÐrbÊ÷µÄʵÏÖÔÚlib/rbtree.cÎļþÖУ¬¿ÉÒÔͨ¹ý
#include "linux/rbtree.h"½øÐÐʹÓá£
ÔÚLinuxÄÚºËÖеÄRBÊ÷ʵÏÖÓ봫ͳµÄʵÏÖ·½
Ïà¹ØÎĵµ£º
³ö´¦:http://ericxiao.cublog.cn/
Ò»£ºÇ°ÑÔ
ÔÚ¼üÅÌÇý¶¯´úÂë·ÖÎöµÄ±Ê¼ÇÖУ¬½Ó´¥µ½ÁËinput×Óϵͳ.¼üÅÌÇý¶¯£¬¼üÅÌÇý¶¯½«¼ì²âµ½µÄËùÓа´¼ü¶¼Éϱ¨¸øÁËinput×Óϵͳ¡£Input×ÓϵͳÊÇËùÓÐI/OÉ豸Çý¶¯µÄÖмä²ã£¬ÎªÉϲãÌṩÁËÒ»¸öͳһµÄ½çÃæ¡£ÀýÈ磬ÔÚÖÕ¶ËϵͳÖУ¬ÎÒÃDz»ÐèҪȥ¹ÜÓжàÉÙ¸ö¼üÅÌ£¬¶àÉÙ¸öÊó±ê¡£ËüÖ»Òª´Óinput×ÓϵͳÖÐÈ¥È ......
»·¾³½éÉÜ£ºCentos5.2+2.6.18-8.el5Äںˣ¬±àÒëÆ÷ÊÇGCC4.1.2¡£
Òª±àÒëµÄÄÚºË2.6.18-8.el3
½ö½öÐÞ¸ÄÁ˲¿·ÖÄں˵ÄÅäÖÃÐÅÏ¢£¬Ã»ÓдóµÄ±ä»¯¡£
È»ºó£ºmake ;make modules;make modules_install;
±àÒëûÓгöÎÊÌ⣬Éú³ÉÁËÄںˣ¬mkinitrdÉú³ÉÁËinitrd£¬¼Óµ½lilo.confÖУ¬ÖØÆôÑ¡ÔñÐÂÄںˣ¬³öÏÖÒ»ÏÂÎÊÌ⣺
hub 3-0:1.0: USB hub fo ......
ÉùÒôÎļþ±ØÐëΪWave PCM unsigned 8bits mono¸ñʽ
/* the *.wav must be 8000Hz 64kbps 8bits MONO(1)*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <linux/soundcard.h&g ......