| 19 | | All these |
| 20 | | * Proc[0][0][0] MMU activation |
| 21 | | * Private vobjs initialisation : ''boot_vobjs_init()'' |
| 22 | | * Schedulers initialisation : ''boot_schedulers init()'' |
| | 21 | All these pages tables are packed in one segment (seg_ptab) occupying one single big page (2 Mbytes), but this PTAB segment is replicated in all clusters. |
| | 22 | As the kernel read-only segments (seg_kcode and seg_kinit) are replicated in all clusters to avoid contention, the content of the page tables depends |
| | 23 | on the cluster-coordinates: for the kernel code, a given virtual address is mapped to different physical addresses, depending on the cluster coordinates. |
| | 24 | |
| | 25 | |
| | 26 | |
| | 27 | |
| | 28 | === '''boot_schedulers init()''' === |
| | 29 | This function makes the schedulers initialisation, as specified in the mapping, with the following principles. |
| | 30 | * There is one scheduler per processor. |
| | 31 | * Any task defined in any application can be allocated to any processor. |
| | 32 | * The allocation of task to processors is fully static (no task migration). |
| | 33 | * One single processor cannot schedule more than 14 tasks. |
| | 34 | s One scheduler occupies 8 Kbytes. The user |