40 | | To avoid contention when several threads access the same page table to handle TLB miss, ALMOS-MK replicates the page tables. For each multi-threaded user application P, the page table and the list of virtual segments (implemented in the Virtual Memory Manager) are replicated in each cluster K containing at least one thread of the application. According to the "on-demand paging" principle, these replicated page tables GPT(K,P) and virtual segment lists VSL(K,P) are dynamically updated when page faults are detected. This section describes this building mechanism and the coherence protocol required by these multiple copies. |
| 42 | To avoid contention when several threads access the same page table to handle TLB miss, ALMOS-MK replicates the page tables. For each multi-threaded user application P, the Generic Page Table (GPT), and the Virtual Segments List (VSL) are replicated in each cluster K containing at least one thread of the application. According to the "on-demand paging" principle, these replicated structures GPT(K,P) and VSL(K,P) are dynamically updated when page faults are detected. This section describes this building mechanism and the coherence protocol required by these multiple copies. |
44 | | ALMOS-MK supports the POSIX threads API. In order to avoid contention in massively multi-threaded applications, ALMOS-MK replicates the user process descriptors in all clusters containing threads of this process. This section describes the mechanisms for process and thread creation / destruction. |
45 | | |
46 | | == E) [wiki:thead_scheduling Threads scheduling] == |
47 | | |
48 | | Dans ALMOS, on utilise des listes doublement chaînées ''internes'' pour représenter l'ensemble des thread en attente d'une même ressource. |
49 | | Ces listes doivent être modifiées à chaque opération d'ordonnancement qui modifie l'état d'un thread. Puisque les thread d'une même application parallèle multi-thread peuvent être distribués sur tous les clusters de l'architecture, ces files d'attentes sont donc ''trans-cluster'', ce qui est contradictoire avec la politique multi-kernel d'ALMOS-MK. Cette section analyse le problème et propose différentes solutions. |
| 46 | ALMOS_MK uses double linked list to represent a set of threads. For example ALMOS-MK must build the set of all threads waiting to access a given resource, such as a given peripheral device. |
| 47 | As these threads can be running on any cluster, these linked lists are ''trans-cluster'', and requires specifictechnics in a multi kernel OS, where each kernel instance is handling only resources localized in a single cluster. |