User Tools

Site Tools


systems:4th_edition

This is an old revision of the document!


Fourth Edition Unix

Release Date: November 1973
Released By: Bell Labs Research
Source Code: a kernel which predates 4th Edition is nsys.tar.gz in the Unix Archive
Documentation: 4th Edition man pages, browsable in the Unix Tree

The fourth edition of Unix was the first version to have a kernel written in a high level language, C, along with some of the commands. A full and complete copy of Fourth Edition no longer exists. We have:

  • The manuals for Fourth Edition in machine-readable format, and
  • A copy of the earliest extant kernel in C, the “nsys” kernel, which pre-dates the actual Fourth Edition by only a few months.

The “nsys” kernel was donated by Dennis Ritchie. This is a version of the kernel quite close to that released in Fourth Edition, but without pipes. Dennis Ritchie writes:

This is a tar archive derived from a DECtape labelled “nsys”. What is contains is just the kernel source, written in the pre-K&R dialect of C. It is intended only for PDP-11/45, and has setup and memory-handling code that will not work on other models (it's missing things special to the later, smaller models, and the larger physical address space of the still later 11/70.) It appears that it is intended to be loaded into memory at physical address 0, and transferred to at location 0.

The Fourth Edition marks the first edition of research UNIX for which the accompanying manual is produced in NROFF rather than ROFF. Many deprecated/retired pages can be found in the manx folder that still bear ROFF formatting.

Changes include:

  • Epoch is redefined as seconds from 1/1/1970 instead of ms from 1/1/1972
  • Addition of the signal(II) syscall, deprecating cemt, fpe, ilgins, intr, and quit syscalls for specific signals
  • Alteration of makdir(II) into the mknod(II) syscall
  • Removal of the mdate(II) and rele(II) syscalls
  • The stty(II) interface has been altered to be less DC-11 specific
  • open(II) now supports mode “2” (read/write)
  • nice(II) allows setting a priority (rather than dropping to a fixed one)
  • mount(II) expands mountable filesystem count past 4
  • kill(II) can now be used to send arbitrary signals, not just kill itself
  • stat(II) now reports if a file is a block or character special file
  • exec(II) drops support for V1 a.out files
  • Deprecation of applications targeting the assembly version of UNIX such as tmg(VI) and m6(VI)
  • Deprecation of the salloc(III) library
  • Removal of any remaining formal B support
  • Removed DECish basic(VI) in favor of bas(I)
  • New dump(VIII)/restor(VIII) filesystem utilities to replace old chk/salv-based approach
  • chdir(I) now makes mention of needing 'x' permission on directories
  • Group support added to file modifiers
  • cref(I) gains better C support
  • date(I) adds support for setting the year
  • Core files now include the per-process data at the front, not the back
  • Adds support for shared text segments
  • login(I) now always prompts for a password as opposed to receiving it as an argument
  • Manpages have been moved from /sys/man to /usr/man
  • Sources have been moved from /sys/sys to /usr/sys
  • Supports using | or ^ as pipe instead of >
  • The tty driver supports 12 terminals instead of 10
  • the tty driver now discards the entire buffer on overflow instead of printing '#' per overflow character
  • The tty driver maps uppercase to lowercase if only uppercase is used
  • The console driver now has greater parity with other tty drivers
  • Block devices now present a raw interface and buffered access
  • Filesystem filenames (as opposed to ar(I) filenames) are extended to 14 characters
  • Filesystem objects (as opposed to ar(I) objects) now support group bits
  • In both above cases, ar(I) is *not* updated to support these
  • Indirect blocks are added to support larger filesystems (e.g. RP disks)
  • 2741 terminal support appears to be on the way out
  • The init system now utilizes /etc/rc for operations such as mounting disks (rather than filesystems being hard-coded into init)
  • A new boot procedure is provided for the C UNIX system
  • Section I adds catsim, comm, file, grep, merge, nice, nohup, pfe, plot, shift, sleep, tr, troff, wait
  • Section II adds intro, getgid, indir, setgid
  • Section III adds getarg, getchr, getpw, hmul, ierror, ldiv, nargs, perror, printf, putchr, reset, setfil, vt
  • Section IV adds cat, da, tiu, vs
  • Section VI adds azel, chess, cubic, maze, sfs, sky, spline, wump
  • Section VII adds tmheader
  • Section VIII adds ino, mkfs, mknod, sync, update

For more information about Fourth Edition Unix, see The Evolution of the Unix Time-sharing System by Dennis Ritchie.

systems/4th_edition.1685562476.txt.gz · Last modified: 2023/06/01 05:47 by segaloco