Changes between Version 35 and Version 36 of processus_thread
- Timestamp:
- Nov 6, 2017, 3:39:33 PM (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
processus_thread
v35 v36 72 72 The process creation in a remote cluster implement the POSIX fork() / exec() mechanism. 73 73 When 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.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 non-standard fork_place() system call to specify the target cluster. 75 75 76 76 === 3.1) fork() === 77 77 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. 78 FIRST SPECIFICATION: 79 80 A 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. 79 81 80 82 1. the cluster K allocates memory in K for the reference process descriptor of C, and get a pointer on this process descriptor. … … 85 87 86 88 At 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 90 SECOND SPECIFICATION 91 92 A 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. 87 93 88 94 === 3.2) exec() ===