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 | ||