Changes between Version 35 and Version 36 of processus_thread


Ignore:
Timestamp:
Nov 6, 2017, 3:39:33 PM (6 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • processus_thread

    v35 v36  
    7272The process creation in a remote cluster implement the POSIX fork() / exec()  mechanism.
    7373When a parent process P executes the fork() system call, a new child process C is created.
    74 The new C process inherit from the parent process P the open files (FDT), and the memory image (VSL and GPT). These structures must be replicated in the new process descriptor. After a fork(), the C process can execute an exec() system call, that allocate a new memory image to the C process, but the new process can also continue to execute with the inherited memory image. For load balancing, ALMOS-MKH  uses the DQDT to create the child process C on a different cluster from the parent cluster P, but the user application can also use the fork_place() system call to specify the target cluster.
     74The new C process inherit from the parent process P the open files (FDT), and the memory image (VSL and GPT). These structures must be replicated in the new process descriptor. After a fork(), the C process can execute an exec() system call, that allocate a new memory image to the C process, but the new process can also continue to execute with the inherited memory image. For load balancing, ALMOS-MKH  uses the DQDT to create the child process C on a different cluster from the parent cluster P, but the user application can also use the non-standard fork_place() system call to specify the target cluster.
    7575
    7676=== 3.1) fork() ===
    7777
    78 The parent process P is running on a core in cluster K, and executes the fork() system call to create a new process C on a remote cluster Z, that will  become the owner of the C process. ALMOS-MK creates the first C process descriptor in the same cluster as the parent cluster P, and postpone the costly remote copy of VSL and GPT from P to C, because this copy is useless in case of exec(). When the fork() system call returns, the C process owner cluster is Z, but the reference process descriptor is in cluster K. The child process and the associated main thread will be migrated to cluster Z later, when the child process makes an "exec" or any other system call.
     78FIRST SPECIFICATION:
     79
     80A thread of parent process P, running in a cluster K,  executes the fork() system call to create a new process C on a remote cluster Z, that will  become the owner for the C process. ALMOS-MK creates the first C process descriptor in the same cluster as the parent cluster P, and postpone the costly remote copy of VSL and GPT from P to C, because this copy is useless in case of exec(). When the fork() system call returns, the C process owner cluster is Z, but the reference process descriptor is in cluster K. The child process and the associated main thread will be migrated to cluster Z later, when the child process makes an "exec" or any other system call.
    7981
    8082 1. the cluster K allocates memory in K for the reference process descriptor of C, and get a pointer on this process descriptor.
     
    8587
    8688At the end of the fork(), the owner cluster for the new  C process is cluster Z, and the reference cluster is cluster K. This C process contains one single thread running on K.
     89
     90SECOND SPECIFICATION
     91
     92A thread of parent process P, running in a cluster X,  executes the fork() system call to create a child process C on a remote cluster Y, that will  become both the owner and the reference cluster for the C process. If the reference cluster Z for process P is different from X, the work must be done in  cluster Z, because only the reference cluster Z contains a complete description of the parent process VSL and GPT.
    8793
    8894=== 3.2) exec() ===