cdash@BOULDER.COLORADO.EDU (Charles Shub) (08/04/88)
We've got the following comments and questions on version 6.0 of V. The questions are directly or indirectly related to process migration. Any help or insights would be appreciated. Mail responses to me, please. cdash aka cdash@boulder.Colorado.EDU -or- ..!{ncar|nbires}!boulder!cdash 1. Migration Facilities a. Comment on ../V/cmds/migrateprog/mi/migrateprog.c: In the routine GetRemoteHost, a check is made to ensure that a logical host is not migrating to the same physical host it is on. This check apparently does not work. As a consequence, about 50% of the time migrateprog will not work. b. Question on ../V/kernel/mi/migrate1.c: In the routine DestroyMigratingProcess, there are two calls to InitializeAlien_1. The second call assumes that an alien process descriptor has been set up when a send is performed between two different logical hosts on the same physical host. Is this assumption correct? Shouldn't a call to Alienate or DirectNonLocalForward be made instead? A subsequent reply will eventually generate a call to Dealienate for this process descriptor which can't be found among the aliens. 2. V Kernel a. Comment on ../V/kernel/mi/lhost.c: In the routine DestroyHost, no attempt is made to leave the LKERNEL_SERVER_GROUP or LTEAM_SERVER_GROUP. This causes a problem if the same logical host tries to migrate back to this same machine before a call to ScavengeGroupDescriptors is made. b. Question on Mutual Exclusion: What, besides queues being locked, is the kernel policy for mutual exclusion (synchronization) on other kernel objects? For instance, should hash table updates be preceded by 'disable' and followed with a 'enable'? Also, should object count updates be locked and unlocked as queues are? We've run across synchronization problems trying to get to two or more logical hosts to migrate to the same machine from different machines at the same time. c. Question on Real and Alien Processes: When are alien process descriptors (APD) built? So far we have been assuming the following: (1) IPC between two processes on different physical hosts always generates APDs for both sender and receiver. (2) IPC between two processes on the same physical host never generates APDs even if the two processes are on different logical hosts. (3) GROUPIPC always generates APDs even if the two processes are on the same logical host. (4) A process descriptor (that is in use) is either linked into either the Pd_bundle[] or AlienMap[] hash table but not both. 3. Miscellaneous a. Question on Remote Alias Process: What is a remote alias process? When is the REMOTE_ALIAS_PROCESS bit in the process identifier (pid) ever set? b. Question on config.c and config.h for sun3+le: Are the config.c and config.h files for ../V/kernel/sun3+ie suitable for use with a Sun 3/50 Lance Ethernet configuration? We have a new kernel directory called sun3+le that is the same as sun3+ie except for compiling in enetle.c versus enetie.c.