Subversion Repositories HelenOS-doc

Rev

Rev 71 | Rev 73 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 71 Rev 72
Line 187... Line 187...
187
      internal fragmentation.</para>
187
      internal fragmentation.</para>
188
 
188
 
189
      <indexterm>
189
      <indexterm>
190
        <primary>slab allocator</primary>
190
        <primary>slab allocator</primary>
191
 
191
 
192
        <secondary>slab cache</secondary>
192
        <secondary>- slab cache</secondary>
193
      </indexterm>
193
      </indexterm>
194
 
194
 
195
      <para>Slabs of one object type are organized in a structure called slab
195
      <para>Slabs of one object type are organized in a structure called slab
196
      cache. There are ususally more slabs in the slab cache, depending on
196
      cache. There are ususally more slabs in the slab cache, depending on
197
      previous allocations. If the the slab cache runs out of available slabs,
197
      previous allocations. If the the slab cache runs out of available slabs,
Line 203... Line 203...
203
      magazines.</para>
203
      magazines.</para>
204
 
204
 
205
      <indexterm>
205
      <indexterm>
206
        <primary>slab allocator</primary>
206
        <primary>slab allocator</primary>
207
 
207
 
208
        <secondary>magazine</secondary>
208
        <secondary>- magazine</secondary>
209
      </indexterm>
209
      </indexterm>
210
 
210
 
211
      <para>Each object begins its life in a slab. When it is allocated from
211
      <para>Each object begins its life in a slab. When it is allocated from
212
      there, the slab allocator calls a constructor that is registered in the
212
      there, the slab allocator calls a constructor that is registered in the
213
      respective slab cache. The constructor initializes and brings the object
213
      respective slab cache. The constructor initializes and brings the object
214
      into a known state. The object is then used by the user. When the user
214
      into a known state. The object is then used by the user. When the user
215
      later frees the object, the slab allocator puts it into a processor
215
      later frees the object, the slab allocator puts it into a processor
216
      private <indexterm>
216
      private <indexterm>
217
          <primary>slab allocator</primary>
217
          <primary>slab allocator</primary>
218
 
218
 
219
          <secondary>magazine</secondary>
219
          <secondary>- magazine</secondary>
220
        </indexterm>magazine cache, from where it can be precedently allocated
220
        </indexterm>magazine cache, from where it can be precedently allocated
221
      again. Note that allocations satisfied from a magazine are already
221
      again. Note that allocations satisfied from a magazine are already
222
      initialized by the constructor. When both of the processor cached
222
      initialized by the constructor. When both of the processor cached
223
      magazines get full, the allocator will move one of the magazines to the
223
      magazines get full, the allocator will move one of the magazines to the
224
      list of full magazines. Similarily, when allocating from an empty
224
      list of full magazines. Similarily, when allocating from an empty
Line 362... Line 362...
362
 
362
 
363
      <section>
363
      <section>
364
        <indexterm>
364
        <indexterm>
365
          <primary>address space</primary>
365
          <primary>address space</primary>
366
 
366
 
367
          <secondary>area</secondary>
367
          <secondary>- area</secondary>
368
        </indexterm>
368
        </indexterm>
369
 
369
 
370
        <title>Address space areas</title>
370
        <title>Address space areas</title>
371
 
371
 
372
        <para>Each address space consists of mutually disjunctive continuous
372
        <para>Each address space consists of mutually disjunctive continuous
Line 396... Line 396...
396
 
396
 
397
      <section>
397
      <section>
398
        <indexterm>
398
        <indexterm>
399
          <primary>address space</primary>
399
          <primary>address space</primary>
400
 
400
 
401
          <secondary>ASID</secondary>
401
          <secondary>- ASID</secondary>
402
        </indexterm>
402
        </indexterm>
403
 
403
 
404
        <title>Address Space ID (ASID)</title>
404
        <title>Address Space ID (ASID)</title>
405
 
405
 
406
        <para>When switching to the different task, kernel also require to
406
        <para>When switching to the different task, kernel also require to
Line 428... Line 428...
428
        to the active task.</para>
428
        to the active task.</para>
429
 
429
 
430
        <indexterm>
430
        <indexterm>
431
          <primary>address space</primary>
431
          <primary>address space</primary>
432
 
432
 
433
          <secondary>ASID stealing</secondary>
433
          <secondary>- ASID stealing</secondary>
434
        </indexterm>
434
        </indexterm>
435
 
435
 
436
        <para>
436
        <para>
437
          <classname>ASID stealing algoritm here.</classname>
437
          <classname>ASID stealing algoritm here.</classname>
438
        </para>
438
        </para>
Line 487... Line 487...
487
 
487
 
488
      <section id="page_tables">
488
      <section id="page_tables">
489
        <indexterm>
489
        <indexterm>
490
          <primary>page tables</primary>
490
          <primary>page tables</primary>
491
 
491
 
492
          <secondary>hierarchical</secondary>
492
          <secondary>- hierarchical</secondary>
493
        </indexterm>
493
        </indexterm>
494
 
494
 
495
        <title>Hierarchical 4-level page tables</title>
495
        <title>Hierarchical 4-level page tables</title>
496
 
496
 
497
        <para>Hierarchical 4-level page tables are the generalization of the
497
        <para>Hierarchical 4-level page tables are the generalization of the
Line 510... Line 510...
510
 
510
 
511
      <section>
511
      <section>
512
        <indexterm>
512
        <indexterm>
513
          <primary>page tables</primary>
513
          <primary>page tables</primary>
514
 
514
 
515
          <secondary>hashing</secondary>
515
          <secondary>- hashing</secondary>
516
        </indexterm>
516
        </indexterm>
517
 
517
 
518
        <title>Global hash table</title>
518
        <title>Global hash table</title>
519
 
519
 
520
        <para>Implementation of the global hash table was encouraged by the
520
        <para>Implementation of the global hash table was encouraged by the
Line 554... Line 554...
554
 
554
 
555
      <section id="tlb_shootdown">
555
      <section id="tlb_shootdown">
556
        <indexterm>
556
        <indexterm>
557
          <primary>TLB</primary>
557
          <primary>TLB</primary>
558
 
558
 
559
          <secondary>TLB shootdown</secondary>
559
          <secondary>- TLB shootdown</secondary>
560
        </indexterm>
560
        </indexterm>
561
 
561
 
562
        <title>TLB consistency. TLB shootdown algorithm.</title>
562
        <title>TLB consistency. TLB shootdown algorithm.</title>
563
 
563
 
564
        <para>Operating system is responsible for keeping TLB consistent by
564
        <para>Operating system is responsible for keeping TLB consistent by