Rev 169 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 169 | Rev 185 | ||
---|---|---|---|
Line 239... | Line 239... | ||
239 | boundaries. The advantage of this setup is that during most of the |
239 | boundaries. The advantage of this setup is that during most of the |
240 | allocations, no global spinlock needs to be held.</para> |
240 | allocations, no global spinlock needs to be held.</para> |
241 | 241 | ||
242 | <para>Should HelenOS run short of memory, it would start deallocating |
242 | <para>Should HelenOS run short of memory, it would start deallocating |
243 | objects from magazines, calling slab cache destructor on them and |
243 | objects from magazines, calling slab cache destructor on them and |
244 | putting them back into slabs. When a slab contanins no allocated object, |
244 | putting them back into slabs. When a slab contains no allocated object, |
245 | it is immediately freed.</para> |
245 | it is immediately freed.</para> |
246 | 246 | ||
247 | <para> |
247 | <para> |
248 | <figure float="1"> |
248 | <figure float="1"> |
249 | <mediaobject id="slab_alloc"> |
249 | <mediaobject id="slab_alloc"> |
Line 315... | Line 315... | ||
315 | magazines in the list), the algorithm continues with Step |
315 | magazines in the list), the algorithm continues with Step |
316 | 1.</para> |
316 | 1.</para> |
317 | 317 | ||
318 | <para><emphasis>Step 4.</emphasis> In this fail-safe step, an |
318 | <para><emphasis>Step 4.</emphasis> In this fail-safe step, an |
319 | object is allocated from the conventional slab layer and a pointer |
319 | object is allocated from the conventional slab layer and a pointer |
320 | to it is returned. If also the last magazine is full,</para> |
320 | to it is returned. If also the last magazine is full, a new slab |
- | 321 | is allocated.</para> |
|
321 | </formalpara> |
322 | </formalpara> |
322 | 323 | ||
323 | <formalpara> |
324 | <formalpara> |
324 | <title>Deallocation</title> |
325 | <title>Deallocation</title> |
325 | 326 | ||
Line 829... | Line 830... | ||
829 | supported by HelenOS and that there can be only one active address space |
830 | supported by HelenOS and that there can be only one active address space |
830 | per processor. In other words, when the FIFO queue is empty, there must |
831 | per processor. In other words, when the FIFO queue is empty, there must |
831 | be address spaces that are not active on any processor.</para> |
832 | be address spaces that are not active on any processor.</para> |
832 | </section> |
833 | </section> |
833 | </section> |
834 | </section> |
834 | </chapter> |
- | |
835 | 835 | </chapter> |
|
- | 836 |