Приложение А. Библиография


                A.1. Аннотированная библиография.
                
     Эта  аннотированная  библиография  охватывает книги по теории
операционных систем так же, как и по разным видам программирования
в  среде UNIX. Указанная цена может быть точной, а может и нет, но
будет  вполне  преемлема для правительственной работы. [Если у вас
есть   книга,   которая,  по-вашему,  подходит  для  библиографии,
напишите   ее  краткий  обзор  и  пошлите  необходимую  информацию
(заголовок,автор,  издательство,  ISBN  и  приблизительная цена) и
обзор  по  адресу  johnson@sunsite.unc.edu]. Эта версия постепенно
отходит, в то время как появляется настоящая библиография.

   Заглавие:          The Design of the UNIX Operating System
   Автор:             Maurice J. Bach
   Издательство:      Prentice Hall, 1986
   ISBN:              0-13-201799-7
   Приближенная цена: $65.00

     Это  одна  из  книг, которые Linus использовал при разработке
Linux. Это описание структур данных, используемых в ядре System V.
Множество  имен  важных функций в исходных текстах Linux пришли из
этой  книги,  и  названы  по  алгоритмам,  представленным  в  ней.
Например,  если  вы  не  можете  догадаться,  что  делают  функции
getblk(), brelse(), bread(), breada() и bwrite(), глава 3 об'яснит
это очень хорошо.

     В  то  время  как большинство алгоритмов схожи или одинаковы,
стоит отметить несколько различий:

     * Буферный кеш Linux динамически перераспределяется под другой размер, так
           что алгоритм для действий по получению новых буферов немного другой. Поэтому
           об'яснение getblk(), приведенное выше, отличается от getblk() в Linux.
     * Linux не использует потоков в текущий момент, и, если потоки реализуются
           для Linux, желательно, чтобы они имели другую семантику.
     * Семантика и структура вызовов драйверов устройств другая. Концепция сходна,
           и еще стоит прочитать главу по драйверам устройств, но для подробностей по
           драйверам лучшая ссылка - The Linux Kernel Hackers' Gude.
     * Алгоритмы распределения памяти немного отличны.

     Есть  и  другие  маленькие отличия, но хорошее понимание этой
книги поможет вам разобрать исходные тексты Linux.

    Заглавие:          Advanced Programming in the UNIX Environment
    Автор:             W. Richard Stevens
    Издательство:      Addison Wesley, 1992
    ISBN:              0-201-56317-7
    Приближенная цена: $50.00

     Этот  замечательный томик охватывает все тонкости, которые вы
действительно должны знать, чтобы писать настоящие UN*X программы.
Он   включает  обсуждение  различных  стандартов  релизации  UN*X,
включая  POSIX,  X/Open  XPG3и  FIPS,  и  концентрируется  на двух
реализациях,  SVR4  и  предварительный  выпуск  4.4  BSD,  который
упоминается в книге, как 4.3 + BSD.

    Заглавие:               Advanced 80386 Programming Techniques
    Автор:                  James L. turley
    Издательство:   Osborne McGraw-Hill, 1988
    ISBN:                           0-07-881342-5
    Прибл. Цена:    $22.95

     Эта  книга  достаточно хорошо охватывает 80386, не затрагивая
других аппаратных средств. В книгу включены примеры кода. Охвачены
все  главные  возможности, также как и множество основных понятий.
Книга включает следующие главы: Основы, Сегментация памяти, Уровни
привелегий,   Замещение   страниц,  Многозадачность,  Связь  между
задачами,  Обработка  сбоев и прерываний, Эмуляция 80286, Эмуляция
8086,  Отладка,  Математический  процессор 80387, Сброс и реальный
режим,  Аппаратное  обеспечение,  и  несколько  приложений включая
таблицы управления памятью в качестве справочника.

     У  автора  хороший  стиль  изложения:  если у вас технический
склад  ума,  вы  найдете  захватывающим чтение этой книги. Сильная
сторона  этой книги в том что автор не обьясняет ни как делать что
либо   под  DOS,  ни  как  обращаться  с  конкретной  аппаратурой.
Фактически    единственное    место   где   он   упоминает   DOS и
PC-совместимое  аппаратное  обеспечение  это  во  введении  где он
обещает больше не упоминать о них.

    Заглавие:               The C programming Language, second edition.
    Автор:                  Brian W. Kernighan and Dennis M. Ritchie
    Издательство:   Prentice Hall, 1988
    ISBN:                           0-13-110362-8
    Прибл. Цена:    $35.00

     Библия  по  программированию  на  Си. Включает учебник по Си,
справочник  по  UN*X  интерфейсу, справочник по Си и справочник по
стандартным  библиотекам.  Программируете на Си, купите эту книгу.
Это просто.

    Заглавие:               Operating Systems: Design and Implementation
    Автор:                  Andrew S. Tanenbaum
    Издательство:   Prentice Hall, 1987
    ISBN:                           0-13-637406-9
    Прибл. Цена:    $50.00

     В  то  время  как эта книга имеет немного упрощенное описание
некоторых  тем  и  опускает  некоторые  важные  моменты,  она дает
достаточно  четкое  представление  о  том  что  надо сделать чтобы
написать  операционную  систему.  Пол  книги занимает исходный код
клона UN*X называемого Minix, который основывается на микроядре, в
отличии  от  Linux,  который  славится  монолитным  дизайном. Было
сказано   что   Minix   показывает   возможность  написания  UN*X,
основанного  на микроядре, но не обьясняется в достаточной степени
зачем нужно это делать.

     Певоначально предполагалось что Linux будет доступной заменой
для  Minix фактически он первоначально должен был быть совместимым
на  уровне  двоичного  кода  с  Minix-386.  Minix-386  был  средой
разработки  под  которой  был  раскручен  Linux.  В Linux нет кода
Minix,  но  признаки  этого наследия проявляются в таких вещах как
файловая система Minix в Linux.

     На  ранних  порах  существования Linux, Эндрю Таненбаум начал
жаркую  войну  с  Linus  по  поводу  разработки  ОС,  которая была
интересной, если не поучительной.

     Однако  эта  книга  может  оказаться  стоящй для тех кто ищет
доступного обьяснения основ ОС, так как в изложении Таненбаума они
остаются  наиболее  понятными  (и более занимательными, если вы не
хотите скучать).

     К сжалению упор делается на основы, в то время как такие вещи
как виртуальная память не охвачены вообще.

    Заглавие:               Modern operating systems
    Автор:                  Andrew S. Tanenbaum
    Издательство:   Prentice Hall, 1992
    ISBN:                           0-13-588187-0
    Прибл. Цена:    $51.75

     первая  половина книги это перепечатка более ранней Operating
systems,  но  эта  книга  включает  некоторые  вещи не раскрытые в
ранней,  включая  такие  вещи  как  виртуальная  память.  Minix не
упоминается,   но   есть   обзор   MS-DOS   и   нескольких  других
распостраненных  систем.  Эта книга вероятно более полезна для тех
кто  зочет углубить свои знания, чем более ранняя книга Таненбаума
Operating  systems: Design and Implementation. Причину этого можно
видеть  в заголовке.. Однако что делает DOS в книге по СОВРЕМЕННЫМ
операционным системам многие не могут понять.

    Заглавие:               operating Systems
    Автор:                  William Stallings
    Издательство:   Macmillan, 1992 (800-548-9939)
    ISBN:                           0-02-415481-4
    Прибл. Цена:    $??.??

     Наиболее  полнай  текст  по  операционным системам, эта книга
дает более глубокий подход к темам раскрытым в книге Таненбаума, и
охватывает  больше  тем,  имеет  живой  стиль мзложения. Эта книга
охватывает  все главные темы которые понадобятся вам для написания
операционной  системы, и делает это очень доступным образом. Автор
использует    примеры   из   трех   главных   систем   сравнивая и
противопоставляя  их:  UN*X,  OS/2,  и  MVS.  В каждом разделе эти
системы  используются для разяснения пунктов и приведения примеров
реализации.

     Темы  охваченные  в  Operating Systems включают Нити (Связи),
системы   рельного   времени,   Планировка   в  Мультипроцессорах,
распределенные  системы, миграция процессов, и Безопасность, также
как  и  стандартные темы как планировка управление памятью. Раздел
по  распределенной  обработке похоже вполне современен, и я нахожу
его очень полезным.

    Заглавие:               UNIX Network programming
    Автор:                  W. Richard Stevens
    Издательство:   Prentice Hall, 1990
    ISBN:                           0-13-949876-1
    Прибл. Цена:    $48.75

     Эта книга охватывает несколько видов работы в сетях под UN*X,
и  содержит  очень  полезные  справки  по формам сетевой обработки
которые она непосредственно не охватывает. Она охватывает TCP/IP и
XNS особенно полно, и довольно исчерпывающе описывает как работают
все  вызовы. В ней также есть описание и пример кода использующего
TLI  System  V,  и  достаточно полное описание IPC System V. Книга
содержит  много примеров исходного кода и много полезных процедур.
Один  из  примеров  это  код  реализующий  используемые  семафоры,
основанный   на  частично-  фрагментированной  реализации  которая
применяется в System V.

    Заглавие:               Programming in the UNIX environment
    Автор:                  Brian W. Kernighan and Robert Pike
    Издательство:   Prentice Hall, 1984
    ISBN:                           0-13-937699 (hardcover) 0-13-937681-X (paperback)
    Прибл. Цена:    $??.??

                        Нет Аннотации.


    Заглавие:      Writing UNIX Device drivers
    Автор:                  George Pajari
    Издательство:   Addison Wesley, 1992
    ISBN:                           0-201-52374-4
    Прибл. Цена:    $32.95

     Эта  книга  написана  президентом и основателем Driver Design
Labs, компании специалзирующейся на разработке драйверов устройств
для  UN*X.  Эта  книга  отличное  введение  в  порой  суровый  мир
разработки  драйверов устройств. Сначало кратко обсуждаются четыре
основные  типа  драйверов  (символьные,  блочные,  tty,  STREAMS).
Приведено  множество  полных  примеров  драйверов устройств разных
типов,  начиная  с простейших и с растущей сложностью. Все примеры
драйверов работают под UN*X на PC-совместимой аппаратуре. Включены
следующие главы:

           Character Drivers I: A Test Data Generator Character Drivers II:
           An A/D Converter Character Drivers III: A Line Printer Block Drivers I:
           A Test Data Generator Block Drivers II:
           A RAM Disk Driver Block Drivers III: A SCSI Disk Driver Character
           Drivers IV: The Raw Disk Driver Terminal Drivers I: The COM1 Port
           Character Drivers V: A Tape Drive STREAMS Drivers I:
           A Loop-Back Driver STREAMS Drivers II: The COM1 Port (Revisited) Driver
          Installation Zen and the Art of Device Driver Writting.

     Хотя  множество  вызовов  используемых в этой книге Linux- не
совместимы,   присутствует   общая  идея,  и  большинство  решений
отображаются непосредственно в Linux.