home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / std_unix / v22 / 060 < prev    next >
Internet Message Format  |  1991-03-07  |  4KB

  1. From jsq@cs.utexas.edu  Fri Jan  4 19:14:21 1991
  2. Received: from CS.UTEXAS.EDU by uunet.UU.NET (5.61/1.14) with SMTP 
  3.     id AA25939; Fri, 4 Jan 91 19:14:21 -0500
  4. Posted-Date: 4 Jan 91 18:26:34 GMT
  5. Received: by cs.utexas.edu (5.64/1.92) 
  6. From: domo@tsa.co.uk (Dominic Dunlop)
  7. Newsgroups: comp.std.unix
  8. Subject: Re: qfork()
  9. Message-Id: <16522@cs.utexas.edu>
  10. References: <16213@cs.utexas.edu> <16483@cs.utexas.edu>
  11. Sender: jsq@cs.utexas.edu
  12. Reply-To: domo@tsa.co.uk
  13. Organization: The Standard Answer Ltd.
  14. X-Submissions: std-unix@uunet.uu.net
  15. Date: 4 Jan 91 18:26:34 GMT
  16. To: std-unix@uunet.UU.NET
  17.  
  18. Submitted-by: domo@tsa.co.uk (Dominic Dunlop)
  19.  
  20. In article <16483@cs.utexas.edu> lewine@dg.uucp (Donald Lewine) writes:
  21.  
  22. >     I think I would vote "NO" on qfork().  I think that there are 
  23. >     two better solutions:
  24. >     (1) Just use fork() and require the implementation to do it
  25. >         in an efficient manner.
  26.  
  27. Well, I know that we POSIX folks want to rule the world, but just how
  28. ugly a world will we put up with in order that we can rule it?  qfork()
  29. (and vfork()) special-case a particular usage of the process creation
  30. mechanism in order to give implementors an easier time of it.  By now we
  31. know that in a ``from to ground up'' virtual memory implementation of
  32. UNI*X with a half-way useful memory management hardware copy on write and
  33. similar finessing can make the general-case fork() call as efficient as
  34. any special-case variant, and, unlike the variants, is free from any
  35. threat that sixteen ton weights will be dropped on any programmer who
  36. steps out of line.
  37.  
  38. That said, POSIX has nothing to say about the efficiency of any
  39. particular implementation: that's a quality issue, not a conformance
  40. issue.  One hopes that in the kind of free market that standards are
  41. supposed to encourage, better quality will win out over poorer quality,
  42. other things being equal.  So, yes, I'm in favour of keeping just
  43. fork(), and letting implementors worry about how slick they need to make
  44. it.  After all, there's few implementors in this world than applications
  45. programmers, so it seems to make sense to localize the pain involved to
  46. the smaller group.  Sorry about that.  I am aware that the efficient
  47. implementation of fork() is a real headache on some architectures, and
  48. particularly in hosted POSIX, but, well, so's cooking up fake inodes
  49. (or parts thereof).  Happily, I hear nobody suggesting that we define
  50. unsafe versions of stat() to get around that problem.  Just how far
  51. should we bend over backwards to accommodate history?  Remember that
  52. every extra function we define has to be maintained on all
  53. implementations for ever more (more or less), and that every extra
  54. function is something else that programmers have to learn about.
  55.  
  56. >     (2) Add some new functions (fexec() ?) which do the fork() and
  57. >         exec() in one call.  I know that this is not existing practice
  58. >         but neither was sigemptyset() or tcgetispeed().  This may be
  59. >         another case where it is better to define a new interface than
  60. >         to try to describe the existing practice.  [[Also, qfork() is
  61. >         not quite vfork() so it can be shot down on the same basis.]]
  62.  
  63. I don't like this much either, but it might be an acceptable compromise
  64. if the effect of the new functions was defined in the standard in terms
  65. of fork() and exec() family functions.  This would make it easy to bring
  66. existing implementations with an efficient fork() into line.  Please
  67. let's resist the temptation to add new functionality to exec (for
  68. example) on the way past.
  69.  
  70. By the way, what line (if any) are the .5 (Ada) folks taking on this
  71. issue?  How does all this square (if at all) with Ada's concept of a
  72. task?
  73. -- 
  74. Dominic Dunlop
  75.  
  76. Volume-Number: Volume 22, Number 60
  77.  
  78.