stringtranslate.com

Комментарий к операционной системе UNIX

Комментарий к шестому изданию операционной системы UNIX Джона Лайонса (позднее переизданный как «Комментарий Лайонса к шестому изданию UNIX» [1] [2] и обычно называемый « Книгой Лайонса ») — весьма влиятельная [3] публикация 1976 года, содержащая аналитические комментарии к исходному коду программного обеспечения «резидентного ядра» [4] (т. е. ядра ) компьютерной операционной системы Unix шестого издания , а также отформатированную и проиндексированную Лайонсом копию указанного исходного кода, полученную от авторов из AT&T Bell Labs .

Работа Лайонса, сама по себе являющаяся примером раннего успеха UNIX как переносимого кода для издательской платформы, была набрана с использованием инструментов UNIX на системах, работающих под управлением кода, перенесенного в Университет, аналогичного тому, который она документировала. [5]

Предполагается, что это самая часто копируемая книга по информатике [6] : xi  . Несмотря на свой возраст, книга Лайонса по-прежнему считается превосходным комментарием к простому, высококачественному коду.

Работа Лайонса была в последний раз переиздана в 1996 году компанией Peer-To-Peer Communications [6] и распространялась, воссоздавалась или реконструировалась различными способами в ряде СМИ другими сторонами. [5]

История

Джон Лайонс со своими учениками в 1980 году.
Японская перепечатка Джона Лайонса « Комментарий к операционной системе Unix и сопутствующий отформатированный исходный код, отображающий лицензию на использование определенными лицензиатами, а также директиву этим лицензиатам ограничить использование другими сторонами исходного кода операционной системы Unix шестого уровня».

Исходный код и комментарии были напечатаны в виде книги в 1977 году, после того как впервые были собраны в мае 1976 года в виде набора лекционных заметок [4] для курсов компьютерных наук Лайонса (6.602B и 6.657G, упомянутых во введении к книге) в Университете Нового Южного Уэльса .

UNSW получил исходный код UNIX в 1975 году в ответ на запрос Кена Робинсона от 1974 года к Деннису Ритчи из Bell. [7] Bell Labs была дочерней компанией AT&T, из-за Декрета о согласии 1956 года AT&T не имела права вести бизнес в какой-либо другой области, следовательно, не могла продавать программное обеспечение, хотя, как это ни парадоксально, требовалось лицензировать свои изобретения, такие как Unix и транзистор. Western Electric , другая дочерняя компания AT&T, управляла лицензированием. С 1977 года, с лицензиями v7 и более поздними, AT&T запретила комментарии к коду для обучения и разрешала только одну копию Lions Commentary, напечатанную, на лицензию.

Группа пользователей UNIX, информационный бюллетень USENIX, UNIX News , от марта 1977 года, объявила о доступности книги для лицензиатов UNIX. [4]

Трудность в погоне за популярностью книги привела к тому, что к 1978 году она была доступна только в AT&T Bell Labs . [8]

Когда AT&T анонсировала UNIX версии 7 на USENIX в июне 1979 года, академическая/исследовательская лицензия больше не разрешала автоматически использование в классе. Однако тысячи студентов-компьютерщиков по всему миру распространяли фотокопии. Поскольку им не преподавали ее в классе, они иногда встречались после занятий, чтобы обсудить книгу. Многие пионеры UNIX и открытого исходного кода имели заветную фотокопию нескольких поколений. [ необходима цитата ]

Другие последующие эффекты изменения лицензии включали создание Эндрю С. Таненбаумом Minix . Как Таненбаум писал в «Операционные системы» (1987):

Когда AT&T выпустила версию 7, она начала понимать, что UNIX является ценным коммерческим продуктом, поэтому она выпустила версию 7 с лицензией, которая запрещала изучать исходный код на курсах, чтобы не подвергать опасности его статус коммерческой тайны. Многие университеты подчинились, просто отказавшись от изучения UNIX и преподавая только теорию.

Различные люди из UNIX, в частности Питер Х. Салус , Деннис Ритчи и Берни Гудхарт, много лет лоббировали различных владельцев Unix (AT&T, Novell , Santa Cruz Operation ), чтобы разрешить официальную публикацию книги. В 1996 году Santa Cruz Operation наконец разрешила выпуск исходного кода 6-го издания двадцатилетней давности (вместе с исходным кодом других версий « Ancient UNIX »), а полный код и версия комментариев 1977 года были опубликованы Peer-To-Peer Communications ( ISBN  978-1-57398-013-5 ). [6] Переиздание включает комментарии Майкла Тилсона (SCO), Питера Салуса, Денниса Ритчи, Кена Томпсона , Питера Коллинсона, Грега Роуза, Майка О'Делла, Берни Гудхарта и Питера Рейнджеса.

Содержание

Комментарий Lions к UNIX 6-е издание с исходным кодом, переиздание 1996 г. [6]

UNIX Operating System Source Code Level Six — это исходный код ядра, слегка отредактированный Lions для лучшего разделения функциональности — инициализация системы и управление процессами, прерывания и системные вызовы, базовый ввод-вывод, файловые системы и каналы и символьные устройства. Все процедуры и символы перечислены в алфавитном порядке с перекрестными ссылками.

Представленный код будет работать на PDP-11 /40 с дисководом RK05 , интерфейсом линейного принтера LP11, устройством записи на перфоленту PCL11 и терминальным интерфейсом KL11 или на подходящем эмуляторе PDP-11, например SIMH .

Комментарий к операционной системе UNIX начинается с заметок о UNIX и другой полезной документации (страницы руководства UNIX, руководства по оборудованию DEC и т. д.), раздела об архитектуре PDP-11 и главы о том, как читать программы на языке C. Далее следует исходный комментарий, разделенный на те же разделы, что и код. Книга заканчивается предлагаемыми упражнениями для студента.

Как объясняет Лайонс, этот комментарий дополняет комментарии в источнике. Понять код можно и без дополнительных комментариев, и читателю рекомендуется делать это и читать примечания только по мере необходимости. В комментарии также упоминается, как можно улучшить код.

«От вас не ждут, что вы это поймете»

Печально известный программный комментарий "Вы не должны этого понимать" находится в строке 2238 исходного кода ( Lions' Commentary , стр. 22) в конце комментария, объясняющего механизм обмена процессами. Он относится к строке 325 файла slp.c. [9] Исходный код гласит: [10] [11]

 /*  * Если новый процесс остановился, потому что был  * выгружен, установите уровень стека на последний вызов  * savu(u_ssav). Это означает, что return  , * который выполняется сразу после вызова aretu  , * на самом деле возвращает из последней процедуры, которая  * сделала savu.  *  * От вас не ожидается понимания этого.  */ if ( rp -> p_flag & SSWAP ) { rp -> p_flag =& ~ SSWAP ; aretu ( u . u_ssav ); }       

Основная причина, по которой этот фрагмент кода было трудно понять, заключалась в том, что он зависел от странности способа, которым C-компилятор для PDP-11 сохранял регистры в вызовах процедур. Этот код не работал при портировании на другие машины и его пришлось перепроектировать в версии 7 UNIX . [12] Деннис Ритчи позже объяснил значение этого замечания: [10]

«От вас не ждут, что вы это поймете» было задумано как замечание в духе «Этого не будет на экзамене», а не как дерзкий вызов.

Смотрите также

Ссылки

  1. ^ Лайонс, Джон (1976–1977). Комментарий к шестому изданию операционной системы UNIX. Университет Нового Южного Уэльса: Кафедра компьютерных наук. OCLC  494684468.
  2. ^ Исходный код операционной системы Unix уровня шесть. Университет Нового Южного Уэльса: Кафедра компьютерных наук. 1976–1977. OCLC  494684460.
  3. ^ Джонатан Корбет Брайан Керниган о происхождении Unix LWN.net. 17 января 2022 г.
  4. ^ abc "NEW BOOK". UNIX News . USENIX. Март 1977.
  5. ^ ab Lehey, Greg (2015-09-14). "Комментарий к шестому изданию операционной системы UNIX". Грег Лехей, Уоррен Туми.
  6. ^ abcd Lions, John (1996). Комментарий Lions к UNIX 6-е издание с исходным кодом . Одноранговые коммуникации. ISBN 978-1-57398-013-5.
  7. ^ Факультет инженерии, UNSW, (декан) (18.09.2020). «Вспоминая Кена Робинсона». Университет Нового Южного Уэльса: Инженерное дело. Архивировано из оригинала 20.10.2020.
  8. Демон, GNU и Пингвин - Главы 2 и 3 ( Питер Х. Салус )
  9. ^ Кен Томпсон. "unix-history-repo/usr/sys/ken/slp.c". GitHub . Получено 12 октября 2018 г.
  10. ^ ab Деннис Ритчи (2002-06-22). "Странные комментарии и странные действия в Unix" . Получено 2021-05-14 .
  11. ^ https://swtch.com/unix/ [ пустой URL ]
  12. ^ Джонсон, SC; Ритчи, DM (1978). «Система разделения времени UNIX: переносимость программ на языке C и системы UNIX» (PDF) . Bell System Technical Journal . 57 (6): 2021–2048. doi :10.1002/j.1538-7305.1978.tb02141.x. S2CID  17510065. Архивировано (PDF) из оригинала 2022-10-09.

Дальнейшее чтение

Внешние ссылки