home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / std_unix / volume.24 / text0016.txt < prev    next >
Encoding:
Text File  |  1991-09-03  |  7.9 KB  |  201 lines

  1. Submitted-by: pc@hillside.co.uk (Peter Collinson)
  2.  
  3. USENIX Standards Watchdog Committee
  4. Stephen R. Walli <stephe@usenix.org>, Report Editor
  5. Report on POSIX.4, .4a, .4b, .13: POSIX Realtime Extensions
  6.  
  7.  
  8. Bill O. Gallmeister <uunet!lynx!bog> reports on the April
  9. 15-19, 1991 meeting in Chicago, IL:
  10.  
  11. Summary
  12.  
  13. This week, the working group advised the technical reviewer for IPC
  14. Message Passing to either delete or severely prune back the IPC
  15. chapter.  The large group also agreed to work closely with the
  16. POSIX.12 sockets group on their interface to ensure that a ``Real-Time
  17. Protocol,'' could be implemented on top of sockets to meet real-time
  18. message passing requirements.
  19.  
  20. Work was done to harmonize POSIX.4 binary semaphores and POSIX.4a
  21. (Threads) mutexes and condition variables.  A mutex is a lock
  22. semaphore, so that only one person has access to a resource at a time
  23. - MUTually EXclusive access.
  24.  
  25. We also began to explore work for POSIX.4b (the Yet More Real-Time
  26. proposal).  Work here possibly includes the Ada Catalogue of Interface
  27. Features and Options (CIFO).
  28.  
  29. Work continued on the Application Profiles, Test Assertions, and the
  30. Language Independent Specification.
  31.  
  32. There will probably be a new recirculation of POSIX.4 before the Santa
  33. Clara meeting.  POSIX.4a will probably not be recirculated before then.
  34.  
  35. Report
  36.  
  37. IPC
  38.  
  39. The IPC chapter in POSIX.4 is a bone of contention.  In my estimation,
  40. it retains the largest number of unresolved negative ballots in all of
  41. POSIX.4.  Most objections center on the fact that the interface
  42. doesn't look much like anything seen in UNIX before, and on doubts
  43. that the interface can be implemented efficiently.
  44.  
  45. A small group spent this week looking at IPC and ways to deal with
  46. it.  They came up with some startling recommendations.  First, they
  47. noted that the sockets interface, which most of us are familiar with
  48. from BSD, is currently undergoing standardization by POSIX.12 (Protocol
  49. Independent Interfaces).  They noted that all the needs of real-time
  50. and transaction-processing IPC could be met by a new sockets protocol,
  51. perhaps with a few extensions to the sockets interface itself.  There
  52. are generally two socket protocols on a UNIX system: the UNIX domain
  53. protocol, which communicates with other processes on the same machine,
  54. and the Internet protocol, which does the network thing.  A real-time
  55. protocol would be akin to these.  The small group recommended that we
  56. work with POSIX.12 to ensure that such a real-time protocol could be
  57. defined.
  58.  
  59. In addition, they made specific suggestions for trimming back the
  60. current IPC chapter, if it is not removed altogether.  These
  61. suggestions included removing non-copy IPC modes and some of the more
  62. baroque asynchronous modes of the interface.  Another option would be
  63. to delete the POSIX.4 IPC chapter entirely and await POSIX.12 sockets
  64. and a real-time extension on top of that-probably a three-year wait.
  65.  
  66. The votes, when taken, were 17-5 in favor of deleting the chapter, and
  67. 29-2 in favor of trimming the chapter severely.  However, when given
  68. the choice of deleting POSIX.4 IPC or pruning it, the vote was 21 to
  69. 15 in favor of deleting, and only two working group members admitted
  70. that they would ballot against the draft if IPC was removed.
  71.  
  72. Synchronization
  73.  
  74. POSIX.4 specifies a binary semaphores interface; POSIX.4a (Threads)
  75. specifies mutexes and condition variables.  These two facilities,
  76. while rather similar in the abstract, are quite different in the
  77. current drafts.  A group attempted this week to bring the two closer
  78. together.
  79.  
  80. Mutexes and condition variables are based in the memory of the
  81. process, while binary semaphores are accessed via an opaque object
  82. that might be a memory address, but might not.  It had been noted in
  83. New Orleans that POSIX.4 binary semaphores worked between threads in a
  84. process, but that thread mutexes and condition variables did not work
  85. between separate processes.  This lack of parity has been the source
  86. of many ballot objections to both POSIX.4 and POSIX.4a.
  87.  
  88. The small group came up with a model of how synchronization was
  89. expected to work in the vast majority of cases.  Mutexes, condition
  90. variables, and binary semaphores are all implemented in user memory,
  91. much like how thread mutexes are currently implemented.  In addition,
  92. an extension to this implementation allows the memory-based
  93. implementation to operate in shared memory between processes.
  94.  
  95.  
  96. Because some machines (such as Crays) do not possess the hardware for
  97. memory sharing, a more abstract interface to process synchronization
  98. is required.  (Those machines will not implement binary semaphores
  99. like most other people, but will do something different.)
  100.  
  101. The working group approved a number of small changes to harmonize
  102. POSIX.4 and POSIX.4a with regards to process and thread
  103. synchronization based on this model.  The working group also demanded
  104. some documentation explaining the different models and requirements
  105. motivating the different facilities and interfaces.  Hopefully, such
  106. documentation will clear up the confusion currently surrounding the two
  107. interfaces.
  108.  
  109. POSIX.4b
  110.  
  111. POSIX.4b has as its goal the standardization of some of the less
  112. mainstream features of real-time systems.  These are basically areas
  113. that the POSIX.4 group decided to defer until ``later.'' During this
  114. meeting, small groups worked on interfaces for timeouts on all
  115. blocking system calls, for enhanced memory allocation, and for direct
  116. application use of interrupts.  The documents for all three of these
  117. areas are quite immature, and the small groups spent their time trying
  118. to identify models and requirements.  I believe the first draft of
  119. POSIX.4b will be generated in Santa Clara.  Other possible work items
  120. for this proposal include extensions to the existing synchronization
  121. primitives, and the Ada Catalogue of Interface Features and Options
  122. (CIFO).
  123.  
  124. The timeouts group received some conflicting advice.  Many people do
  125. not want this interface at all.  Of those who did, there was strong
  126. consensus for new function calls for each blocking call, i.e., we'd
  127. have timeout_read(), which could time out after a certain interval of
  128. time, since read() is a blocking call.
  129.  
  130. The memory allocation group is concerned with being able to allocate
  131. from specific pools of memory-memory presumably having some special
  132. characteristic.  They were directed to see whether mmap(), from the
  133. Shared Memory and Mapped Files chapter, would suit the requirements.
  134.  
  135. The interrupt access group came up with a model something like signal
  136. handlers for attaching a process directly to an interrupt.  Additional
  137. semantics of the interface still need to be defined, (e.g. can system
  138. calls be made from a user ``interrupt handler.'')
  139.  
  140. Application Profiles
  141.  
  142. The real-time applications profiles group is well on its way to
  143. producing a draft which defines multiple profiles: an embedded
  144. profile, a profile one up from that, a mid-size profile, and a kitchen
  145. sink profile.
  146.  
  147. The kitchen sink profile is easy: it includes everything.  At the
  148. lower layer is an embedded profile which will hopefully be very
  149. small.  It specifies the threads interface, but would like to not
  150. include the process interface, i.e. no fork or exec.  It has read,
  151. write, and open, but no other file interface.  The target for such a
  152. system would be an embedded system, perhaps without an MMU.  Much of
  153. POSIX.1, and in fact much of POSIX.4, is irrelevant to such a system.
  154. The largest area to be addressed now is the ability to remove pieces
  155. from POSIX.1 (i.e., fork() and exec()) and still have a ``POSIX''
  156. system. POSIX.1 is not set up to allow such selective removal of
  157. interfaces.
  158.  
  159. Test Assertions and Language Independent Specifications
  160.  
  161. Small groups (of one each) continued to work on the test assertions
  162. and the language independent interfaces for POSIX.4.  Not much
  163. progress was made, due to the pressing requirements of other issues
  164. and the fact that much of this work is best done late at night hunched
  165. over one's terminal.  This work will continue and should be more
  166. advanced at the Santa Clara meeting.
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199. Volume-Number: Volume 24, Number 18
  200.  
  201.