[net.sources] Compare.B

jbc@ut-sally.UUCP (08/07/83)

                                     - 2 -



          of such topics as: installation and  configuration;  sources
          and  documentation;  groups  and  identifiers; file systems;
          interprocess    communications;    networks;     performance
          (including some tentative benchmarks); and vendor support.

               Common features are mostly  left  to  the  manuals,  in
          order  to  better concentrate on differences.  This is meant
          to be a _q_u_a_l_i_t_a_t_i_v_e comparison, intended to serve only as  a
          guide for further study.

          1.  Introduction

          1.1  Intent

               This  paper  describes  certain   differences   between
          System V  and  4.1C BSD, leaving details of common functions
          to the manuals.  This is a _q_u_a_l_i_t_a_t_i_v_e comparison,  intended
          to serve only as a guide for further study.

               While performance is not a major theme of  this  paper,
          some  tentative  benchmarks  are  included  to  indicate the
          relative performance of the two systems.   These  benchmarks
          should  not  be considered conclusive, since 4.1C is not 4.2
          and since we have not had sufficient  production  experience
          with System V.

               This  paper  supersedes  a   previous   paper,   ``UNIX
          System III and 4.1BSD, A Practical Comparison'', by the same
          authors.  In some cases, features are noted herein as having
          been  introduced  in  System V  or  4.1C BSD  when they were
          actually introduced in System III or 4.1BSD.   This  usually
          occurs  when  comparisons  are being made with V7/32V and is
          done simply to decrease the verbiage.

          1.2  Format of the Paper

               The first section following the  Introduction  contains
          subsections   corresponding   to   sections   of   the  _U_N_I_X
          _P_r_o_g_r_a_m_m_e_r'_s _M_a_n_u_a_l* in order to  provide  a  framework  for
          comparison of detailed features of the operating systems.

               There follow several sections  on  subjects  which  are
          wider  than  a  single  manual  entry  or  which we consider
          important.



          __________

            * The 4.1C BSD title; see section on Documentation.












                                     - 3 -



               Finally, there is a summary section which includes some
          comments on recent cooperation among UNIX system developers.

          1.3  Disclaimers and Acknowledgments

               The authors of this paper are in no way affiliated with
          the  University of California, Bell Laboratories, or Western
          Electric,  and  are  solely  responsible  for  the  opinions
          presented herein.

               4.1C BSD   is   not   a   regular   Berkeley   Software
          Distribution  and  inquiries  should _n_o_t be sent to Berkeley
          concerning  it.   Facilities  in  4.1C  may  be  represented
          differently  in  4.2.   In  cases  in which we know what the
          differences will be we have noted them but we do  not  claim
          to  have  caught  every  case.   When  Berkeley  is ready to
          distribute 4.2BSD, they will announce it.

               We would like to acknowledge Dr. Michael Molloy of  the
          Computer  Science Department, University of Texas at Austin,
          for the use of  the  departmental  VAX-11/780  and  for  his
          assistance,   as  well  as  Bill  Lee  of  the  U.T.  Austin
          Computation Center for  his  continued  moral  and  material
          support.   We  would  also  like  to thank the following for
          reviewing the  paper:  Sam  Leffler  of  the  University  of
          California  at  Berkeley,  Nina McCloskey of AT&T Technology
          and  Licensing  Division,  Armando  Stettner  of  DEC,   Dan
          Franklin  of  Bolt, Beranek, and Newman (BBN), and Doug Gwyn
          of the U.S. Army Ballistic Research Laboratory (BRL).


          2.  Manual Sections

               The subsections of this section  generally  follow  the
          order of the _U_N_I_X _P_r_o_g_r_a_m_m_e_r'_s _M_a_n_u_a_l.

          2.1  Commands

               The general utility  commands  supplied  with  the  two
          systems  exhibit  relatively  minor  differences,  mainly in
          terms of the options available.  A few commands are included
          in  each  distribution which do not occur in the other; many
          of these are  of  questionable  usefulness  anyway  and  the
          reader  is  referred  to  the  manuals  for further details.
          Certain larger packages, however, such as  language  support
          facilities,  are  rather  different and are discussed in the
          following sections.

          2.1.1  _U_s_e_r__c_o_n_v_e_n_i_e_n_c_e  Several  utilities  are  considered
          important for the convenience of the frequent user.












                                     - 4 -



               Berkeley UNIX provides the _p_a_g_e and _m_o_r_e  file  perusal
          commands,  used  to examine a file a screenful at a time. No
          equivalent is available in Bell UNIX.

               The Berkeley _l_s command understands proper  multicolumn
          formatting  of  a  directory listing (when stdout is a tty).
          Under System V, _l_s generates a listing with  one  entry  per
          line;  a  multicolumn listing must be obtained by piping the
          output into the _p_a_s_t_e command, e.g.

                              ls | paste - - - - -

               The Berkeley _w program may  be  used  to  monitor  user
          activity;  the  System V  equivalent  uses  a  command file,
          /etc/whodo, to generate similar information. However, it  is
          rather inconvenient to have to specify the absolute pathname
          and few users actually have /etc as part  of  their  default
          path.   (We  note,  of  course,  that  the  superuser's PATH
          environment variable _d_o_e_s include /etc, perhaps  to  suggest
          that  only  system  administrators  and  the  like should be
          interested in such information.)

          2.1.2  _P_r_o_g_r_a_m_m_i_n_g__s_u_p_p_o_r_t__e_n_v_i_r_o_n_m_e_n_t_s    Several   changes
          have  been  made  to  the  C programming support environment
          (_S_o_f_t_w_a_r_e _G_e_n_e_r_a_t_i_o_n _S_y_s_t_e_m in WECo parlance) in System V.

               Most of the #include files  have  been  rearranged  and
          expanded,  and  it is advisable to recompile all C programs.
          _P_c_c,  the   portable   C   compiler,   includes   reasonable
          enumerations,   changes  to  structure  and  union  handling
          (nonunique structure member names), correct handling of  the
          void  data  type,  and  several  bug  fixes.  The _c_c command
          itself  has  added  the  W  flag  to  allow  options  to  be
          explicitly  specified  for a particular compilation subpass.
          Certain bugs which are known to remain are documented in the
          _S_y_s_t_e_m _R_e_l_e_a_s_e _D_e_s_c_r_i_p_t_i_o_n.

               Two new tools  are  included:  _c_x_r_e_f,  which  generates
          cross-reference  listings  and obsoletes both _c_r_e_f and _x_r_e_f,
          and _c_f_l_o_w, which  builds  a  graph  of  external  references
          occurring  in  a  collection  of  assorted  source files (C,
          assembler, etc.).

               The System V f77 programming support  environment  also
          includes  two  new  tools:  _a_s_a  interprets the standard ASA
          carriage control characters, and _f_s_p_l_i_t may be used to split
          FORTRAN  sources  (f77, efl, ratfor) on a procedure-per-file
          basis.  In addition, the load-time library has been  greatly
          extended and enhanced.













                                     - 5 -



               The libraries for both  C  and  f77  are  available  in
          profiled  versions, which must be loaded explicitly in place
          of the default, non-profiled ones.  These profiled libraries
          allow  program  execution  profiling at the library function
          level rather than the user program function level.

               Further,  the  symbolic  debugger  _s_d_b  is  very   much
          improved  and  may  be  used  easily  with  either  C or f77
          programs.

               The _a_s assembler and _l_d linker have  been  modified  to
          utilize   the  new  Common  Object  File  Format,  which  is
          discussed below.  Note that any change to a source file  for
          a  program  thus  necessitates  recompilation of all sources
          before the objects may be relinked using _l_d, since  the  old
          and new object formats are radically different.

               The C compiler in 4.1C (_p_c_c) is very similar to the one
          in  System III,  including  void, union, enum, and structure
          elements named per structure, some of which were added after
          32V.   Berkeley added very long identifiers in 4.1BSD, while
          System III and  System V  retained  the  old  7/8  character
          identifiers.    The   _a_s   assembler,  the  _l_d  linker,  and
          associated  libraries  are  similar  to  the  ones  in  32V,
          although  in  4.1  _l_d  was reworked to be four to five times
          faster and this improvement is preserved in  4.1C  and  4.2.
          The _d_b_x symbolic debugger is new.

               4.1C BSD has some bug fixes and other  improvements  to
          _f_7_7  (an  overlaid version of this compiler is available for
          2.8bsd).

               4.2 has an extensively reworked version of _f_7_7 and  its
          associated  libraries:   early  versions of this new FORTRAN
          package were apparently the  source  for  the  new  System V
          FORTRAN facilities.

               Both systems support Ratfor and  the  Extended  FORTRAN
          Language  (EFL),  but  4.1C additionally provides the _s_t_r_u_c_t
          utility, used to convert  FORTRAN  sources  into  reasonably
          clean Ratfor.

               System V has _b_s, essentially derived from _B_A_S_I_C.  There
          is  no  equivalent  in  4.1C BSD; however, the University of
          British Columbia _B_A_S_I_C sytem is compatible with 4BSD.

               Similarly, System V includes  the  classic  _s_n_o  SNOBOL
          system, while 4.1C includes _P_A_S_C_A_L, _F_R_A_N_Z _L_I_S_P, _A_P_L, and _f_p.
          _A_P_L is a user contributed software package from Purdue.   _F_p
          (Functional   Programming   language   compiler/interpreter)
          implements the applicative language proposed by John  Backus











                                     - 6 -



          in  his  Turing award lecture.  4.2 may include _I_c_o_n as user
          contributed software.

               There is a _C_O_B_O_L compiler  commercially  available  for
          4BSD, and possibly for System V.

          2.1.3  _S_h_e_l_l_s  System V supports the Bourne shell (_s_h), with
          few  noticeable changes from V7.  4.1C BSD has much the same
          Bourne shell plus the Cshell (_c_s_h), often a new user's first
          command language.

               The Cshell has most of the capabilities of  the  Bourne
          shell  (though  the  syntax is different), plus the history,
          alias and directory stack features.  History and alias allow
          editing  and replaying of saved commands.  Such features are
          the main reason many users prefer the Cshell (although  some
          cite  its  extensive  C-like  control  structures as another
          reason).

               The 4.1C Cshell also has a set of job control  features
          (requiring  the  Berkeley  `new  tty' terminal driver) which
          allow the user to suspend and resume subprocesses.

               The 4.1C resource limitation  facilities  are  normally
          accessed   via  the  _c_s_h  _l_i_m_i_t  command.   The  only  close
          equivalent in System V _s_h is the  _u_l_i_m_i_t  command,  used  to
          control the size of the file a child process may write.

          2.1.4  _F_o_r_m_a_t_t_i_n_g__a_n_d__t_y_p_e_s_e_t_t_i_n_g  4.1C offers the -me macro
          package,  while  System V  has  the  -mm  package,  somewhat
          augmented from PWB.  The -ms macros have been  removed  from
          System V  but  are  still  found in 4.1C.  In 4.2, they have
          been extended to provide support for tables of contents  and
          the like.

               System V  includes   additional   macro   support   for
          generating slides and viewgraphs.

               An improved interface to the Versatec  is  provided  in
          System V, along with new _i_o_c_t_l calls for state control.  The
          _v_c_a_t filter for _t_r_o_f_f which was  documented  but  absent  in
          System III seems to have disappeared entirely in System V.

               Both systems have Versatec drivers expecting  a  single
          interrupt  address,  whereas  the  Versatec  itself  has two
          configured into the hardware.  4.1C at least has comments in
          the code to tell you this (and #ifdefs to deal with it).

               The 4.1 Versatec user programs  expected  a  unit  wide
          enough  to  handle four pages abreast; this problem has been
          fixed in 4.2 (but not 4.1C) by  extensions  to  the  printer