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