Changes between Version 71 and Version 72 of boot_procedure


Ignore:
Timestamp:
Dec 7, 2019, 6:25:18 PM (5 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: