4.2BSD

Avec la diffusion de 4.1BSD, la plupart des remarques désagréables concernant les performances disparurent. La DARPA, suffisamment satisfaite des résultats du premier contrat, signa avec Berkeley un nouveau contrat de deux ans, au budget presque cinq fois supérieur à celui du premier contrat. La moitié de cette somme servit au projet Unix, l'autre à d'autres projets de recherche au département d'informatique. Il s'agissait d'effectuer des travaux majeurs afin que la communauté des chercheurs de la DARPA puissent travailler plus facilement.

Des objectifs correspondants aux besoins de cette communauté furent fixés, puis le mode de définition des modifications à apporter au système. En particulier, la nouvelle version devait offrir un système de fichiers plus rapide donc adapté aux performances des disques disponibles, la gestion de processus sur des espaces d'adressage de plusieurs giga-octets, un système de communication inter-processus souple grâce auquel les chercheurs s'intéresseraient à la distribution des travaux, et une gestion réseau pour que les machines utilisant le nouveau système puissent facilement participer à l'ARPAnet.

Pour faciliter la définition du nouveau système, Duane Adams, un contracteur de Berkeley rédacteur au DARPA, constitua un groupe connu sous le nom de « comité de pilotage » chargé de guider le travail de conception et de s'assurer de la prise en compte des besoins de la communauté des chercheurs. Ce comité se réunit deux fois par an entre avril 1981 et juin 1983. Il était constitué de Bob Fabry, Bill Joy et Sam Leffler de l'université de Californie à Berkeley ; Alan Nemeth et Rob Gurwitz de Bolt, Beranek et Newman ; Dennis Ritchie des laboratoires Bell ; Keith Lantz de l'université Stanford ; Rick Rashid de l'université Carnegie-Mellon ; Bert Halstead du MIT (Massachusetts Institute of Technology) ; Dan Lynch de l'Institut des sciences de l'information ; Duane Adams et Bob Baker de la DARPA et Jerry Popek de l'université de Californie de Los Angeles. Au début de 1984, ces réunions furent supplantées par des ateliers ouverts à de nombreuses autres personnes.

Un document préliminaire décrivant les fonctionnalités a inclure dans le nouveau système circula au sein du comité de direction et fut distribué à quelques personnes externes à Berkeley en juillet 1981, engendrant de longs débats. Pendant l'été 1981, je fus impliqué au CSRG et je pris la charge du nouveau système de fichiers. Pendant cette période, Joy se concentra sur l'implémentation d'une version prototype du système de communication inter-processus. À l'automne 1981, Sam Leffler devint membre à plein temps du CSRG pour travailler avec Bill Joy.

Lorsque Rob Gurwitz diffusa une version préliminaire de l'implémentation des protocoles TCP/IP à Berkeley, Joy l'intégra dans le système et évalua ses performances. Au cours de cette tâche, il devint évident à Joy et à Leffler que le nouveau système devait gérer d'autres protocoles que ceux du DARPA. Ils réformèrent l'architecture interne du logiciel, raffinant les interfaces de telle manière que plusieurs protocoles réseau puissent être utilisés en même temps.

Avec la restructuration interne du noyau effectué et les protocoles TCP/IP intégrés avec le prototype des IPC, plusieurs applications assez simples furent créées pour fournir aux utilisateurs locaux un accès à des ressources distantes. Les programmes rcp, rsh, rlogin et rwho étaient supposés être en fin de compte des outils temporaires à remplacer par des versions aux fonctionnalités raisonnables (d'où le préfixe « r » qui les distinguait). Ce système, appelé 4.1a, fut distribué en avril 1982 pour une utilisation locale : il n'avait jamais été destiné à une large diffusion, même si des copies faites en contrebande proliférèrent sur les sites impatients de recevoir la version 4.2.

Le système 4.1a était obsolète longtemps avant son achèvement. Toutefois, les commentaires de ses utilisateurs fournirent des informations très importantes. Elles furent utilisées pour créer un nouveau document pour le système appelé « 4.2BSD System Manual ». Ce document diffusé en février 1982 contenait une description concise mais complète de 4.2BSD, des interfaces utilisateurs aux fonctionnalités du système.

Tout en développant la version 4.1a, je terminais l'implémentation du nouveau système de fichiers et en juin 1982, il était totalement intégré dans le noyau 4.1a. Le système résultant fut baptisé 4.1b et ne fonctionnait que sur certaines machines de développement à Berkeley. Joy sentit qu'avec les modifications particulièrement dangereuses apportées au système, il était préférable d'interdire toute distribution, même locale, en particulier depuis qu'il était nécessaire que chacun des systèmes de fichiers soit archivé et restauré pour le convertir de la version 4.1a vers la version 4.1b. Sitôt le code du système de fichiers stabilisé, Leffler ajouta le nouveau système de fichiers aux différents appels système, pendant que Joy travaillait sur une modification du système de communication inter-processus.

À la fin du printemps 1982, Joy annonça qu'il rejoignait Sun Microsystems. Pendant l'été, il partagea son temps entre Sun et Berkeley, acheva durant la majeure partie de son temps le code de communication inter-processus et réorganisa le code source du noyau Unix pour isoler les parties dépendantes de la machine. Avec le départ de Joy, Leffler prit la responsabilité du projet. Certaines dates limites avaient déjà été fixées et les diffusions promises à la communauté de la DARPA pour le printemps 1983. En raison des contraintes de temps, le travail restant à effectuer pour terminer cette version fut évalué et des priorités fixées. En particulier, les améliorations de la gestion de la mémoire virtuelle et les parties les plus sophistiquées de la conception de la communication inter-processus virent leur priorité réduite (et plus tard totalement annulée). De plus, après un travail d'implémentation de plus d'un an et une attente de la communauté Unix de plus en plus pressante, il fut décidé qu'une version intermédiaire serait diffusée pour ménager la patience des intéressés, avant l'avènement d'une version finale. Ce système, appelé 4.1c, fut distribué en avril 1983. Bon nombre de constructeurs utilisèrent cette version pour préparer le portage de la version 4.2 sur leur matériel. Pauline Schwartz fut embauchée pour la distribution à partir de la version 4.1c.

En juin 1983, Bob Fabry laissa le contrôle administratif du CSRG aux professeurs Domenico Ferrari et Sysan Graham pour commencer une année sabbatique loin de l'activité frénétique des quatre dernières années. Leffler continua à compléter le système, à implémenter le nouveau système de signaux et la gestion du réseau, à réécrire le système indépendant de gestion des entrées/sorties pour simplifier le système d'installation, à intégrer la gestion des quotas venant de Robert Elz, à mettre à jour toute la documentation et à chercher les bogues de la version 4.1c. En août 1983, le système fut diffusé sous le nom de 4.2BSD.

Lorsque Leffler quitta Berkeley pour Lucasfilm à la suite de la mise en place de la version 4.2, il fut remplacé par Mike Karels. L'expérience précédente de Karels avec le programme de distribution de 2.1BSD sur PDP-11 lui conférait le profil idéal pour ce nouveau travail. Après avoir terminé ma thèse en décembre 1984, je rejoignis Mike Karels à plein temps au CSRG.

4.2BSD connut une popularité impressionnante. En 18 mois, plus de 1000 licences site furent diffusées. Le nombre d'exemplaires de 4.2BSD vendus dépassa celui de toutes les autres distributions de logiciels de Berkeley confondues. La plupart des vendeurs d'Unix vendaient plutôt le système 4.2BSD que le système commercial System V d'AT&T car ce dernier n'avait ni gestion réseau, ni le système de fichiers rapide de Berkeley. La version BSD ne détint cette position dominante dans le secteur commercial que durant quelques années, avant de retourner à ses racines universitaires. À mesure que le code réseau et les autres améliorations de 4.2BSD furent intégrés dans la version System V, les constructeurs l'adoptèrent à nouveau. Toutefois, les développements ultérieurs de BSD continuèrent à être intégrés dans System V.