Komentarz do systemu operacyjnego UNIX

Komentarz do systemu operacyjnego Unix
Brian Kernighan in 2012 at Bell Labs 2.jpg
Brian Kernighan trzymający kopię komentarza Lions's
Autor Jan Lwy
Kraj
  • Australia (oryginał)
  • Stany Zjednoczone (przedruk z 1996 r.)
Język Język angielski; dostępne również w języku chińskim i japońskim
Temat System operacyjny Unix
Gatunek muzyczny Informatyka
Wydawca Uniwersytet Nowej Południowej Walii
Data publikacji
1976
OCLC 36099640
005.43
Klasa LC QA 76,76 .O63 L56

A Commentary on the UNIX Operating System autorstwa Johna Lionsa (później wznowiony jako Lions' Commentary on UNIX 6th Edition ) to bardzo wpływowa publikacja z 1976 roku zawierająca komentarz analityczny na temat kodu źródłowego 6th Edition komputerowego systemu operacyjnego Unix „jądro rezydentne” (tj . kernel ) wraz z kopią sformatowaną i zindeksowaną przez Lions wspomnianego kodu źródłowego uzyskaną od autorów z AT&T Bell Labs . Jest również powszechnie nazywana Księgą Lwów . [ potrzebne źródło ]

Będąc przykładem wczesnego sukcesu UNIX-a jako przenośnego kodu dla platformy wydawniczej, praca Lions została złożona przy użyciu narzędzi UNIX-owych, na systemach z kodem przeniesionym na Uniwersytet, podobnym do tego, który udokumentowano, patrz strona vi .

Powszechnie uważano, że jest to najczęściej kopiowana książka w informatyce . [ potrzebne źródło ] Pomimo swojego wieku, książka Lionsa jest nadal uważana za doskonały komentarz do prostego, wysokiej jakości kodu.

Praca Lionsa została ostatnio przedrukowana w 1996 roku przez Peer-To-Peer Communications i była rozpowszechniana, odtwarzana lub rekonstruowana w różny sposób w wielu mediach przez inne strony, np. patrz strona internetowa Grega Leheya.

Lions Commentary on UNIX 6th Edition with Source Code 1996 reedycja

Streszczenie

Kod źródłowy systemu operacyjnego UNIX Level Six to kod źródłowy jądra, lekko zredagowany przez Lions w celu lepszego oddzielenia funkcjonalności — inicjalizacja systemu i zarządzanie procesami, przerwania i wywołania systemowe, podstawowe wejścia/wyjścia, systemy plików, potoki i urządzenia znakowe. Wszystkie procedury i symbole są wymienione alfabetycznie z odsyłaczami.

Przedstawiony kod będzie działał na PDP-11 /40 z napędem dyskietek RK-05, interfejsem drukarki liniowej LP-11, nagrywarką taśmy papierowej PCL-11 i interfejsem terminala KL-11 lub odpowiednim emulatorem PDP-11, takim jak SIMH .

Komentarz na temat systemu operacyjnego UNIX zaczyna się od uwag na temat systemu UNIX i innej przydatnej dokumentacji (stron podręcznika UNIX, instrukcji sprzętu DEC itd.), rozdziału o architekturze PDP-11 i rozdziału o tym, jak czytać programy C. Poniżej znajduje się komentarz źródłowy, podzielony na te same sekcje co kod. Książkę kończą propozycje ćwiczeń dla ucznia.

Jak wyjaśnia Lions, ten komentarz uzupełnia komentarze w źródle. Możliwe jest zrozumienie kodu bez dodatkowego komentarza, a czytelnikowi zaleca się, aby to zrobił i czytał uwagi tylko w razie potrzeby. Komentarz zawiera również uwagi dotyczące możliwości ulepszenia kodu.

Historia

John Lions ze swoimi uczniami w 1980 roku
Japoński przedruk John Lions Komentarz do systemu operacyjnego Unix i towarzyszący mu sformatowany kod źródłowy wyświetlający licencję do użytku przez niektórych licencjobiorców oraz dyrektywę dla tych licencji w celu ograniczenia używania przez inne strony, kod źródłowy systemu operacyjnego Unix poziom szósty

informatyki Lions (6.602B i 6.657G, wspomniane we wstępie do książki) na Uniwersytecie Nowej Południowej Walii .

UNSW faktycznie uzyskał kod źródłowy UNIX w 1975 roku, w odpowiedzi na zapytanie z 1974 roku skierowane do Dennisa Ritchiego z Bell. Bell Labs była spółką zależną AT&T, podlegającą ograniczeniom ze względu na jej monopolistyczny charakter jako krajowego dostawcy infrastruktury telekomunikacyjnej i nie miała pozwolenia na prowadzenie działalności w żadnej innej dziedzinie, [potrzebne źródło], a więc nie mogła czerpać zysków ze sprzedaży oprogramowania , [ potrzebne źródło ] jednak UNIX był dostarczany na licencji przez inną spółkę zależną AT&T, Western Electric, co najmniej do 1977 roku . [ potrzebne wyjaśnienie ]

Grupa użytkowników UNIX, biuletyn USENIX , UNIX News , z marca 1977 r., ogłosiła dostępność książki dla licencjobiorców UNIX. Należy zauważyć, że własne mocno sformułowane zawiadomienie o ograniczeniu rozpowszechniania biuletynu mogło mieć zastosowanie tylko w ramach istniejących licencji do licencjobiorców posiadających umowy zawarte z wymienionymi organizacjami, a nie do osób niebędących licencjobiorcami, w ramach umowy cywilnej - biuletyn nie wyświetla żadnych dowód organu rządowego typu, który mógłby pozwolić na ogólne powstrzymanie obiegu, taki jak ściśle tajnego bezpieczeństwa narodowego ).

Trudność w dotrzymaniu kroku popularności książki sprawiła, że ​​do 1978 roku była dostępna tylko w AT&T Bell Labs . [ potrzebne źródło ]

Przez wiele lat książka Lions była jedyną dokumentacją jądra systemu UNIX dostępną poza Bell Labs. [ potrzebne źródło ] Chociaż licencja 6. edycji [ potrzebne źródło ] zezwalała na użycie kodu źródłowego w klasie, licencja 7. wydania [ potrzebne źródło ] wyraźnie wykluczała takie użycie, więc później książka, oparta na bardziej liberalnej licencji wersja, szeroko rozpowszechniona poprzez reprodukcje maszynowe, prawdopodobnie pod różnymi wymówkami, w tym (między innymi!) hojnymi warunkami licencji edukacyjnej udzielonymi instytucji wydawniczej przez właściciela kodu źródłowego [ potrzebne źródło ] , a także różne zwolnienia z praw autorskich chroniące dyskusję na temat prac matematycznych, choć w cieniu rosnącej presji politycznej mającej na celu erozję takich praw, ponieważ technologiczne środki do „samokopiowania” — a nawet samodzielnego publikowania — prac stały się tańsze , wydajniejsze i wydajniejsze. [ potrzebne źródło ] Sam UNIX był jednym z nich, ponieważ był udaną innowacją finansowaną przez firmę Bell w celu ułatwienia publikowania instrukcji technicznych we własnym zakresie. [ potrzebne źródło ]

Kiedy AT&T ogłosiło UNIX Version 7 na USENIX w czerwcu 1979 r., Licencja akademicka/badawcza nie pozwalała już automatycznie na użycie w klasie.

Jednak tysiące studentów informatyki na całym świecie rozpowszechnia kserokopie. Ponieważ nie uczono ich tego na lekcjach, czasami spotykali się po godzinach, aby omówić książkę. Wielu pionierów UNIX-a i open source posiadało cenną wielopokoleniową kserokopię.

Inne dalsze skutki zmiany licencji obejmowały stworzenie Minix przez Andrew S. Tanenbauma . Jak napisał Tanenbaum w Systemach operacyjnych (1987):

Kiedy AT&T wypuściło wersję 7, zaczęło zdawać sobie sprawę, że UNIX jest cennym produktem komercyjnym, więc wydało wersję 7 z licencją, która zabrania studiowania kodu źródłowego na kursach, aby uniknąć narażenia jego statusu jako tajemnicy handlowej. Wiele uniwersytetów zastosowało się, po prostu porzucając naukę o systemie UNIX i nauczając wyłącznie teorii.

  Różni ludzie UNIX, zwłaszcza Peter H. Salus , Dennis Ritchie i Berny Goodheart, przez wiele lat lobbowali różnych właścicieli Uniksa (AT&T, Novell , Santa Cruz Operation ), aby zezwolili na oficjalne opublikowanie książki. W 1996 roku Operacja Santa Cruz ostatecznie zezwoliła na wydanie dwudziestoletniego kodu źródłowego szóstego wydania (wraz z kodem źródłowym innych wersji „ Ancient UNIX ”), a pełny kod wraz z wersją komentarza z 1977 roku został opublikowane przez Peer-to-Peer Communications ( ISBN 1-57398-013-7 ). Wznowienie zawiera komentarze Michaela Tilsona (SCO), Petera Salusa, Dennisa Ritchiego, Kena Thompsona , Petera Collinsona, Grega Rose, Mike'a O'Della, Berny'ego Goodhearta i Petera Reintjesa.

„Nie oczekuje się, że to zrozumiesz”

Niesławny komentarz programu „Nie oczekuje się, że to zrozumiesz” pojawia się w linii 2238 kodu źródłowego ( Komentarz lwów , s. 22) na końcu komentarza wyjaśniającego mechanizm wymiany procesów. Dotyczy to wiersza 325 pliku slp.c. Kod źródłowy brzmi:

        









         
                 /*  * Jeśli nowy proces został wstrzymany, ponieważ został  * zamieniony, ustaw poziom stosu na ostatnie wywołanie  * savu(u_ssav). Oznacza to, że powrót   *, który jest wykonywany natychmiast po wywołaniu aretu  * faktycznie powraca z ostatniej procedury, która  * wykonała savu.  *  * Nie oczekuje się, że to zrozumiesz.  */  if  (  rp  ->  p_flag  &  SSWAP  )  {  rp  ->  p_flag   
                
         =&  ~  SWAP  ;  aretu  (  u  .  u_ssav  );  } 

Głównym powodem, dla którego ten fragment kodu był trudny do zrozumienia, było to, że zależał od dziwactwa sposobu, w jaki kompilator C dla PDP -11 zapisywał rejestry w wywołaniach procedur. Ten kod nie powiódł się po przeniesieniu na inne maszyny i musiał zostać przeprojektowany w wersji 7 UNIX . Dennis Ritchie wyjaśnił później znaczenie tej uwagi:

„Nie oczekuje się, że to zrozumiesz” miało być uwagą w duchu „Tego nie będzie na egzaminie”, a nie bezczelnym wyzwaniem.

Zobacz też

Dalsza lektura