home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / os / minix / 4918 < prev    next >
Encoding:
Internet Message Format  |  1992-12-14  |  5.1 KB

  1. Path: sparky!uunet!gatech!news.byu.edu!hamblin.math.byu.edu!sol.ctr.columbia.edu!caen!spool.mu.edu!yale.edu!qt.cs.utexas.edu!cs.utexas.edu!natinst.com!hrd769.brooks.af.mil!hrd769.brooks.af.mil!not-for-mail
  2. From: news@hrd769.brooks.af.mil (InterNet News)
  3. Newsgroups: comp.os.minix
  4. Subject: Re: A few remote procedure call questions
  5. Date: 14 Dec 1992 12:54:08 -0600
  6. Organization: Armstrong Lab MIS, Brooks AFB TX
  7. Lines: 100
  8. Distribution: world
  9. Message-ID: <1gil8gINNbbd@hrd769.brooks.af.mil>
  10. References: <921213328@gandalf.moria>
  11. NNTP-Posting-Host: hrd769.brooks.af.mil
  12. Keywords: RPC, remote procedure call
  13.  
  14. In article <921213328@gandalf.moria> u31b3hs@pool.informatik.rwth-aachen.de (Michael Haardt) writes:
  15. ]I don't like timeouts for RPCs, but having the kernel generate an answer
  16. ]message if either the addressee is invalid or busy (not listening for
  17. ]RPC requests).  If the addressed process doesn't listen, it is up to the
  18. ]caller to send the RPC again or treat it as an error.  Of course that
  19. ]means that I expect reliable connections.
  20. ]
  21.  
  22.   Kind of depends on the process, I would think.  If the addressed process
  23. died and we have an answer (or question) for it, we pretty much out of luck,
  24. right!?  If we were the kernel, and we had a system process we wanted to answer,
  25. and it died, things are about to get out of hand anyway, as a rule.  User
  26. processes die all of the time; we would just dump the message.
  27.  
  28. ]I understood the RPC concept to be synchronous, which means that a
  29. ]process can be in one of the following states:
  30. ]
  31. ]-  busy
  32. ]-  listening for RPCs
  33. ]-  busy with calculating an answer
  34. ]-  waiting for answer of a sent RPC
  35. ]-  busy with calculating an answer and waiting for answer of a sent RPC
  36. ]
  37. ]Is that correct?
  38.  
  39.   I have gotten a little bit different understanding of them, in that they 
  40. are asynch.  In spite of that, the five states seem to cover all of the 
  41. options.
  42.  
  43. ]
  44. ]I think that not using RPC queues for non-listening processes would
  45. ]result in bad performance because RPC are getting sent again and again,
  46. ]but queues can overflow, and they will do for sure if a process doesn't
  47. ]intend ever to listen to RPCs.
  48.  
  49.   Wouldn't we implement some kind of 'can't listen right now' sentinel/flag?
  50. Or when a server is not available (not listening), we mark the node as 'dead'
  51. and redirect to another source of service.  We could check back (or have it
  52. interrupt) when it is ready to listen again, and start using the node as a
  53. server again.
  54.  
  55. ]
  56. ]The synchronous concept doesn't allow a process to run in threads and
  57. ]managing its own queue, because after listening for one RPC it first
  58. ]has to be answered.  That brought me to the idea of redirecting a call.
  59. ]That way, a client (a) can run in threads (b,c,...), which all have
  60. ]ports to the kernel.  
  61.  
  62.   Let's look at an example.  I have machine a running as my file system,
  63. and machine b operating as my memory.  They are all connected together by
  64. TCP/IP.  Machine c is on the net, and contains the kernel.  Machine c needs
  65. a block of memory; it goes to machine b for it.  Machine b has, as it's 
  66. processes, a memory manager that uses a client (ba) that redirects all
  67. calls to a queue.  processes (bb, bc, and bd) all are memory allocators.
  68. We allocate the memory using one of the b[c-d] clients.  These clients could
  69. ALSO be on other machines.  The queue would be FIFO, but could physically
  70. reside just about anywhere.  Remote Process Calls generalized to the max, I 
  71. think.
  72.  
  73.   Of course, it isn't likely that we would do something like this (except
  74. maybe for an NFS or something) but it is conceivable.
  75.  
  76. ]Other processes always send RPCs to (a), which
  77. ]redirects them to (b,c,...) depending on which one is listening.
  78. ]Redirecting means, that now (a) can again listen, because (b,c,...) will
  79. ]answer that call.  Sending out a redirected RPC is equivalent to
  80. ]answering it concerning the above process states.  This method allows a
  81. ]threaded filesystem to be written, and for each filesystem thread to let
  82. ]a device driver process answer a call directly back to the client.  That
  83. ]way, traffic is reduced a lot.
  84. ]
  85.  
  86.   I like it.  This would really free up the processes to do their thing.
  87. Combine this with the message process that Minix already uses, and I think
  88. we might have something here...
  89.  
  90. ]I first want to get these (and perhaps more:) questions answered, if
  91. ]things turn out not to be too complicated, perhaps I will write a small
  92. ]kernel only containing process management (create, kill), memory
  93. ]management (alloc, free) and communication (delivering RPCs)
  94. ]capabilities to play with it.  Such a microkernel should be very small
  95. ]and not too hard to write.  To keep things simple for the beginning, I
  96. ]will not care about routing RPCs in a distributed system yet.
  97. ]
  98. ]Any comments?
  99. ]
  100. ]Michael "wondering about RPC"
  101. ]
  102. ]PS: I know, this isn't related to Minix, but this group is read by
  103. ]    kernel hackers, so ... :-)
  104.  
  105.   Oh, but it is in such a neat kind of way.  If the message method we use 
  106. in Minix now were expanded to include the RPC concept, we could set up a
  107. cluster of 8088's, each responsible for some feature in the kernel...
  108.  
  109. WOW !!!!!!!!
  110.  
  111. I'm just going to set down for a while a dream on that..
  112.  
  113. TSgt Dave Burgess
  114.