Lines Matching full:allocator
74 Design of a General Purpose Memory Allocator for the 4.3BSD UNIX\(dg Kernel
96 This paper describes a general purpose dynamic memory allocator
98 The design of this allocator takes advantage of known memory usage
101 This allocator replaces the multiple memory allocation interfaces
108 the new memory allocator,
138 of an older allocator.
145 To reduce the overhead, a ``new'' memory allocator was built in 4.3BSD
151 First, the new allocator can only handle a limited range of sizes.
157 A generalized memory allocator is needed to reduce the complexity
160 the kernel should provide a single general purpose allocator.
164 If a good general purpose allocator is available,
166 purpose allocator.
169 the memory allocator should have an interface similar to the interface
170 of the well-known memory allocator provided for
182 .H 1 "Criteria for a Kernel Memory Allocator
184 The design specification for a kernel memory allocator is similar to,
186 the design criteria for a user level memory allocator.
187 The first criterion for a memory allocator is that it make good use
207 An allocator requires more memory than requested because of fragmentation
209 A perfect memory allocator would have a utilization of 100%.
230 The most important criterion for a memory allocator is that it be fast.
232 a slow memory allocator will degrade the system performance.
242 Another problem with a slow memory allocator is that programmers
244 cannot afford to use it as their primary memory allocator.
245 Instead they will build their own memory allocator on top of the
268 The fastest memory allocator in the survey by nearly a factor of two
269 was the memory allocator provided on 4.2BSD originally
272 the 4.2BSD memory allocator also wasted twice as much memory
275 The 4.2BSD user-level memory allocator works by maintaining a set of lists
291 .H 1 "Considerations Unique to a Kernel Allocator
294 memory allocator for the kernel that do not apply to a user process
295 memory allocator.
316 Another special condition of the kernel memory allocator is that it
337 no single allocator could starve the rest of the kernel of all
341 the single general purpose memory allocator can provide the same
361 Thus, a memory allocator only needs to be
363 .H 1 "Implementation of the Kernel Memory Allocator
367 The kernel memory allocator that we ended up with is a hybrid
368 of the fast memory allocator found in the 4.2BSD C library
369 and a slower but more-memory-efficient first-fit allocator.
377 made to the allocator itself.
378 To ensure that the allocator is always called for large requests,
397 A frequent caller of the memory allocator
419 The allocator then uses a first-fit algorithm to find space in the
435 become available as a result of the call into the allocator.
441 the allocator must keep track of the sizes of the pieces it has handed out.
442 The 4.2BSD user-level allocator stores the size of each block
460 The allocator can be called both from the top half of the kernel,
467 the allocator guarrentees that their request will succeed.
468 Thus, these clients can need not check the return value from the allocator.
470 the allocator returns a null pointer.
476 The new memory allocator was written about a year ago.
477 Conversion from the old memory allocators to the new allocator
487 For example, the allocator that was built on top of the buffer pool allocator
498 the general purpose allocator without increasing their running time.
500 Quantifying the performance of the allocator is difficult because
514 putting in our new allocator,
523 The new allocator is difficult to measure
524 because the usual case of the memory allocator is implemented as a macro.
529 Running in this mode, the memory allocator accounted for six percent
534 we estimate that the allocator would account for
536 These measurements show that the new allocator does not introduce
544 with the allocator to four kilobytes of information
563 With the 4.2BSD memory allocator this causes problems,
569 of memory are never stranded as they are with the 4.2BSD allocator.
602 The other major allocator that remains is
619 we have made various versions of our allocator available to our test sites.