Changes between Version 71 and Version 72 of boot_procedure
- Timestamp:
- Dec 7, 2019, 6:25:18 PM (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
boot_procedure
v71 v72 153 153 The kernel initialization procedure execute sequentially the following steps:. 154 154 155 === D1 )Core and cluster identification ===155 === D1. Core and cluster identification === 156 156 157 157 Each core is supposed to have an unique hardware identifier, called '''gid''', hard-wired in a read-only register. … … 164 164 A first synchronization barrier is used to avoid that other cores use the TXT0 terminal before initialization. 165 165 166 === D2 )Cluster manager initialization ===166 === D2. Cluster manager initialization === 167 167 168 168 In each cluster, the core[0] makes the cluster manager initialization. The cluster manager contains the structures describing the main kernel ressources in the cluster : … … 176 176 As 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. 177 177 178 === D3 )Kernel entry point and process_zero initialization ===178 === D3. Kernel entry point and process_zero initialization === 179 179 180 180 All cores initialise the registers, defining the kernel entry point(s) in case of interrupt, exception or system call. … … 186 186 Here again, a synchronization barrier is required to avoid access to VSL/GPT before initialization. 187 187 188 === D4 )MMU activation ===188 === D4. MMU activation === 189 189 190 190 In each cluster, all cores activate their private MMU, as required by the architecture. … … 194 194 A synchronization barrier is required to avoid access to IOPIC before initialization. 195 195 196 === D5 )Internal & external devices initialization ===196 === D5. Internal & external devices initialization === 197 197 198 198 In each cluster[cxy], the core[cxy][0] makes the devices initialization (device == peripheral). … … 208 208 A synchronization barrier is required to avoid access to devices before initialization. 209 209 210 === D 6) IPI, Idle thread, and VFS root initialization ===210 === D.) IPI, Idle thread, and VFS root initialization === 211 211 212 212 Each core enable its private input IPI, and completes initialization of its (currently running) idle thread descriptor. … … 215 215 A synchronization barrier is required to avoid access to VFS root before initialization. 216 216 217 === D7 )VFS root initialisation in all clusters ===217 === D7. VFS root initialisation in all clusters === 218 218 219 219 In each cluster other than cluster[0], the core[0] initializes the VFS and FS contexts in the local cluster, … … 222 222 A synchronization barrier is required to avoid access to VFS before initialization. 223 223 224 === D8 )DEVFS global initialization ===224 === D8. DEVFS global initialization === 225 225 226 226 The 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]. … … 228 228 A synchronization barrier is required to avoid access to DEVFS root before initialization. 229 229 230 === D9 )DEVFS local initialization ===230 === D9. DEVFS local initialization === 231 231 232 232 In 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]. … … 234 234 A synchronization barrier is used to avoid access to DEVFS before initialization. 235 235 236 === D10 )Process init creation ===236 === D10. Process init creation === 237 237 238 238 The 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. … … 242 242 A last synchronization barrier is used before jumping to the idle_thread() function. 243 243 244 === D11 )Scheduler activation ===244 === D11. Scheduler activation === 245 245 246 246 Finally, all cores make the three following actions: