Rev 52 | Rev 59 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 52 | Rev 53 | ||
---|---|---|---|
Line 58... | Line 58... | ||
58 | <section> |
58 | <section> |
59 | <title>Hash tables</title> |
59 | <title>Hash tables</title> |
60 | <para> |
60 | <para> |
61 | The kernel, as well as userspace, makes use of the hash table implementation with |
61 | The kernel, as well as userspace, makes use of the hash table implementation with |
62 | separate chaining. The implementation is very generic in that it forces the user |
62 | separate chaining. The implementation is very generic in that it forces the user |
63 | to supply methods for computing the hash index, comparing items with several keys |
63 | to supply methods for computing the hash index, comparing items against a set of keys |
64 | and the item removal callback function. Besides these virtual operations, |
64 | and the item removal callback function. Besides these virtual operations, |
65 | the hash table is composed of a dynamically allocated array of list heads that |
65 | the hash table is composed of a dynamically allocated array of list heads that |
66 | represent each chain, number of chains and the maximal number of keys. |
66 | represent each chain, number of chains and the maximal number of keys. |
67 | </para> |
67 | </para> |
68 | </section> |
68 | </section> |
69 | 69 | ||
70 | <section> |
70 | <section> |
71 | <title>B+trees</title> |
71 | <title>B+trees</title> |
72 | <para> |
72 | <para> |
- | 73 | HelenOS makes use of a variant of B-tree called B+tree. B+trees, in HelenOS implementation, |
|
- | 74 | are 3-4-5 balanced trees. They are characteristic by the fact that values are kept only in |
|
- | 75 | the leaf-level nodes and that these nodes are linked together in a list. This data structure |
|
- | 76 | has logaritmic search, insertion and deletion times and, thanks to the leaf-level list, |
|
- | 77 | provides fantastic means of walking the nodes containing data. Moreover, B+trees can be used |
|
- | 78 | for easy storing, resizing and merging of disjunctive intervals. |
|
73 | - | ||
74 | </para> |
79 | </para> |
75 | </section> |
80 | </section> |
76 | 81 | ||
77 | </chapter> |
82 | </chapter> |