Changes between Version 11 and Version 12 of processus_thread


Ignore:
Timestamp:
Jul 10, 2016, 5:28:19 PM (8 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • processus_thread

    v11 v12  
    1 = Création dynamique des processus et des thread =
     1= Dynamic process and thread creation =
    22
    33[[PageOutline]]
    44
    5 == __1) descripteur de processus__ ==
     5== __1) Process__ ==
    66
    7 Le PID (Process Identifier) est codé sur 32 bits, et il est unique dans le système : les 16 bits de poids fort contiennent
    8 les coordonnées (X,Y) du cluster propriétaire Z, les 16 bits de poids faibles (LPID) contiennent le numéro local dans le cluster propriétaire.
    9 Le cluster propriétaire est donc défini par les 16 bits de poids fort du PID.
    10 Le descripteur d’un processus P et les tables qui lui sont associées  sont répliqués - partiellement - dans les clusters qui contiennent au moins un thread de P (appelés clusters actifs de P).
     7The PID (Process Identifier) is coded on 32 bits. It is unique in the system, and has a fixed format:  The 16 MSB (CXY) contain the owner cluster identifier. The  16 LSB bits (LPID) contain the local process index in owner cluster. The '''owner cluster''' is therefore defined by PID MSB bits.
    118
    12 Puisque qu'il existe plusieurs copies du descripteur de processus, il doit exister une copie de référence, située dans le cluster de référence. Attention: le '''cluster de référence''' peut être différent du '''cluster propriétaire'''.
     9To avoid contention, the process descriptor of a P process, and the associated structures, such as the Page Table, or the File Descriptors Table  are  (partially) replicated in all clusters containing at least one thread of P.
    1310
    14 Le descripteur de processus est défini dans ALMOS-MK par la structure process_t, et il contient les informations suivantes:
     11As it exists several copies of the process descriptors, ALMOS-MK defines a reference process descriptor, located in the '''reference cluster''', and the other copies are used as local caches.
    1512
    16 - PID :  processus identifier (contient les coordonnées du cluster propriétaire)
    17 - PPID : parent processus identifier,
    18 - XMIN, XMAX, YMIN, YMAX : recrangle recouvrant tous les clusters actifs
    19 - CREF : coordonnées du cluster de référence
    20 - PT : table des pages du processus,
    21 - VSL : liste des vsegs du processus,
    22 - FDT : table des fichiers ouverts du processus,
    23 - TH_TBL : liste des threads du processus,
    24 - ENV : variables d’environnement du processus,
     13'''Warning''' : to support process migration, the '''reference cluster''' can be different from the '''owner process'''.
    2514
    26 == __2) descripteur de thread__ ==
     15In each cluster K, the local cluster manager (cluster_t type in ALMOS-MK) contains a process manager (pmgr_t type in ALMOS-MK) that maintains three structures for all process owned by K :
     16 * The PREF_TBL[lpid]] is an array indexed by the local process index. Each entry contains an extended pointer on the reference process descriptor.
     17 * The COPIES_ROOT[lpid] array is also indexed by the local process index. Each entry contains the root of the global list of copies for each process owned by cluster K.   
     18 * The LOCAL_ROOT is the root of the local list of all process descriptors in cluster K. A process descriptor copy of P is present in K, as soon as P has a thread in cluster K.
    2719
    28 Il existe quatre types de threads :
    29  * un thread '''USER''' est créé suite à un appel système pthread_create().
    30  * un thread '''KERNEL''' est créé pour exécuter un service système.
    31  * un thread '''IDLE''' est exécuté par un CPU qui ne possède aucun autre thread exécutable.
    32  * un thread '''RPC''' est créé et ou activé par le noyau pour exécuter une ou plusieurs RPCs.
     20The process descriptor (process_t in ALMOS-MK) contains the following informations:
     21- PID :  proces identifier.
     22- PPID : parent process identifier,
     23- XMIN, XMAX, YMIN, YMAX : rectangle covering all active clusters.
     24- PREF : extended pointer on the reference process descriptor.
     25- VMM : virtual memory manager containing the PG_TBL and the VSEG_LIST.
     26- FD_TBL : open file descriptors table.
     27- TH_TBL : local table of threads owned by this process in this cluster.
     28- LOCAL_LIST : member of local list of all process descriptors in same cluster.
     29- COPIES_LIST : member of global list (globale) of all copies of same process.
     30- CHILDREN_LIST : member of global list of all children of same parent process.
     31- CHILDREN_ROOT : root of global list of children process.
    3332
    34 QUESTION : pourquoi distingue-t-on les thread KERNEL et les thread RPC ? [AG]
     33Elements of a local list are in the same clusters, and ALMOS-MK uses local pointers. Elements of a global list can be distributed on all clusters, and  ALMOS-MK uses extended pointers. 
    3534
    36 Un thread peut être dans 6 états décrits dans la section [wiki:thead_scheduling D].
     35== __2) Thread__ ==
    3736
    38 L'instance du noyau propriétaire d'un processus P attribue à un thread de P un identifiant unique dans le processus. Ce TRDID est codé sur 32 bits,
    39 et il indexe la table THTBL.
     37ALMOS-MK defines four types of threads :
     38 * one '''USER''' thread is created by a pthread_create() system call.
     39 * one '''KERNEL''' thread is dynamically created by the kernel to execute a kernel service in a cluster.
     40 * one '''RPC''' thread is activated by the kernel to execute one or several pending RPC requests.
     41 * the  '''IDLE''' thread is executed when there is no other thread to execute on a core.
    4042
    41 Les principales informations stockées dans le descripteur de thread sont les suivantes :
     43From the point of view of scheduling, a thread can be in six states, as described in section [wiki:thead_scheduling D].
     44
     45This implementation of ALMOS-MK does not support thread migration: a thread is pinned on a given core in a given cluster. The only exception is the main thread of a process, that is automatically created by the kernel when a new process is created: This main thread follow its owner process in case of process migration.
     46
     47An user thread is identified by a fixed format TRDID identifier, coded on 32 bits : The 16 MSB bits (CXY) define the cluster where the thread has been pinned. The 16 LSB bits (LTID) define the thread local index in the local TH_TBL[K,P] of
     48a process descriptor P in a cluster K. This LTID index is allocated by the local process descriptor when the thread is created.
     49
     50Therefore, the TH_TBL(K,P) thread table for a given process in a given clusters contains only the threads of P placed in cluster K. The set of all threads of a given process is defined by the union of all TH_TBL(K,P) for all active clusters K.
     51To scan the set off all threads of a process P, ALMOS-MK traverse the COPIES_LIST of all process_descriptors associated to P process.
     52
     53The thread descriptor (thread_t in ALMOS-MK) contains the following  informations:
     54 * TRDID : thread identifier
     55 * PTRDID : parent thread identifier
    4256 * TYPE : KERNEL / USER / IDLE / RPC
    43  * TRDID : thread identifier
    4457 * FLAGS : attributs du thread
    45  * PID : pointer on the local process descriptor
     58 * PROCESS : pointer on the local process descriptor
    4659 * STATE : CREATE / READY / USER / KERNEL / WAIT / DEAD
     60 * LOCKS_COUNT : current number of locks taken by this thread
    4761 * PWS : zone de sauvegarde des registres du coeur.
    48  * PARENT : TRDID du thread parent qui doit être informé de la terminaison.
    49  * IO : canaux alloués au thread dans le cas des périphériques multi-canaux.
    50  * SIGNALS : vecteur de bits permettant d’enregistrer les signaux reçus par le thread
     62 * XLIST : member of the global list of threads waiting on the same resource.
     63 * SCHED : pointer on the scheduler in charge of this thread.
     64 * CORE : pointer on the owner processor core.
     65 * IO : allocated devices (in case of privately allocated devices).
     66 * SIGNALS : bit vector permettant d’enregistrer les signaux reçus par le thread
    5167- etc.
    5268
    53 == __3) création d’un processus dans un cluster distant__ ==
     69== __3) Process creation__ ==
    5470
    55 Ce mécanisme a été implémenté dans ALMOS-MK par Pierre-Yves Péneau, il est décrit dans la thèse de Mohamed Karaoui.
    56 La création d’un processus distant utilise le mécanisme fork / exec.
    57 On rappelle qu’il existe un ordonnanceur par coeur, qui a pour rôle d’ordonnancer les threads qui ont été placés sur ce coeur.
     71The process creation in a remote cluster implement the POSIX fork / exec  mechanism.
     72ALMOS-MK implements  one private scheduler per processor core.
    5873
    5974=== 3.1) fork() ===
    6075
    61 Le processus père P s’exécute sur un coeur dans un cluster Z. Il fait un appel système fork() qui a principalement
    62 pour rôle de sélectionner un cluster cible X qui deviendra le cluster propriétaire du processus fils F, et de dupliquer
    63 le processus P dans le cluster Z. Le choix du cluster cible devrait en principe s’appuyer sur la DQDT, bien que
    64 celle-ci ne soit pas implémentée actuellement dans ALMOS-MK.
     76The parent process P is running on a core in cluster K, and execute the fork() system call to create a remote process F. This syscall selects a target cluster Z, that will become the owner of the F process. Cluster K will contain the reference process descriptor. The target cluster can be specified by the user application or automatdefined by the kernel using the DQDT.
     77 1. the kernel in cluster K allocates memory in K to store the reference process descriptor of F, and get a pointer on this process descriptor using the process_alloc() function.
     78 1. the kernel in cluster K ask to kernel in cluster Z to allocate a PID for the F process and to register the extended pointer on process descriptor in PREF_TBL[Z] of cluster Z. This done by the RPC_PROCESS_PID_ALLOC that takes the process descriptor pointer argument and returns the PID.
     79 1. the kernel in cluster K initializes the F process descriptor from informations found in the P parent process descriptor. This includes the inherited ...
     80 1. the kernel in cluster K creates locally the main thread of process F, and register this thread in the TH_TBL[K,P]
     81
     82
    6583
    6684L’appel system fork() crée dans le cluster Z un nouveau descripteur de processus pour le processus clone P’, ainsi qu’un descripteur de thread  pour le thread principal attaché au processus P’.