Changes between Version 71 and Version 72 of boot_procedure


Ignore:
Timestamp:
Dec 7, 2019, 6:25:18 PM (7 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • boot_procedure

    v71 v72  
    153153The kernel initialization procedure execute sequentially the following steps:.
    154154
    155 === D1) Core and cluster identification ===
     155=== D1. Core and cluster identification ===
    156156
    157157Each core is supposed to have an unique hardware identifier, called '''gid''', hard-wired in a read-only register.
    … …  
    164164A first synchronization barrier is used to avoid that other cores use the TXT0 terminal before initialization.
    165165
    166 === D2) Cluster manager initialization ===
     166=== D2. Cluster manager initialization ===
    167167
    168168In each cluster, the core[0] makes the cluster manager initialization. The cluster manager contains the structures describing the main kernel ressources in the cluster :
    … …  
    176176As all cluster managers are global variables, accessible by any kernel instance, running in any cluster, a synchonization barrier is required to avoid  access to a cluster manager before initialization.
    177177
    178 === D3) Kernel entry point and process_zero initialization ===
     178=== D3. Kernel entry point and process_zero initialization ===
    179179
    180180All cores initialise the registers, defining the kernel entry point(s) in case of interrupt, exception or system call.
    … …  
    186186Here again, a synchronization barrier is required to avoid  access to VSL/GPT before initialization.
    187187
    188 === D4) MMU activation ===
     188=== D4. MMU activation ===
    189189
    190190In each cluster, all cores activate their private MMU, as required by the architecture.
    … …  
    194194A synchronization barrier is required to avoid  access to IOPIC before initialization.
    195195
    196 === D5) Internal & external devices initialization ===
     196=== D5. Internal & external devices initialization ===
    197197
    198198In each cluster[cxy], the core[cxy][0] makes the devices initialization (device == peripheral).
    … …  
    208208A synchronization barrier is required to avoid  access to devices before initialization. 
    209209
    210 === D6) IPI, Idle thread, and VFS root initialization ===
     210=== D.) IPI, Idle thread, and VFS root initialization ===
    211211
    212212Each core enable its private input IPI, and completes initialization of its (currently running) idle thread descriptor.
    … …  
    215215A synchronization barrier is required to avoid  access to VFS root before initialization. 
    216216
    217 === D7) VFS root initialisation in all clusters ===
     217=== D7. VFS root initialisation in all clusters ===
    218218
    219219In each cluster other than cluster[0], the core[0] initializes the VFS and FS contexts in the local cluster,
    … …  
    222222A synchronization barrier is required to avoid  access to VFS before initialization. 
    223223
    224 === D8) DEVFS global initialization ===
     224=== D8. DEVFS global initialization ===
    225225
    226226The core[0] in cluster[0] makes the DEVFS global initialization: It initializes the DEVFS context, and creates the DEVFSb''dev'' and ''external'' directory inodes in cluster[0].
    … …  
    228228A synchronization barrier is required to avoid access to DEVFS root before initialization. 
    229229
    230 === D9) DEVFS local initialization ===
     230=== D9. DEVFS local initialization ===
    231231
    232232In each cluster[cxy], the core[0] completes in parallel the DEVFS initialization. Each core[0] get the extended pointers on the ''dev'' and ''external'' directories from values stored in cluster[0]. Then each core[0] creates the DEVFS ''internal'' directory, and creates the pseudo-files for all chdevs in cluster[cxy].
    … …  
    234234A synchronization barrier is used to avoid access to DEVFS before initialization. 
    235235
    236 === D10) Process init creation ===
     236=== D10. Process init creation ===
    237237
    238238The core[0] in cluster[0] creates (i.e. allocates memory, and initializes) the process descriptor for the first user process. This includes the VMM initialization : the user process GPT and VSL inherits relevant informations from the kernel process GPT and VSL.
    … …  
    242242A last synchronization barrier is used before jumping to the idle_thread() function.
    243243
    244 === D11) Scheduler activation ===
     244=== D11. Scheduler activation ===
    245245
    246246Finally, all cores make the three following actions: