ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6667
Скачиваний: 8
Сюзанне, Барбаре, Марвину, Брэму и памяти моей дорогой я
Об авторе
Эндрю С. Таненбаум
получил степень бакалавра естественных наук в Массачу-
сетском технологическом институте и степень доктора в Университете Калифор-
нии в Беркли. В настоящее время является профессором Амстердамского универси-
тета в Нидерландах, где возглавляет группу разработчиков компьютерных систем.
Он также возглавляет факультет вычислительной техники (межвузовскую аспи-
рантуру, в которой исследуются и разрабатываются системы параллельной обра-
ботки, распределенные системы и системы формирования изображения). Тем не
менее он всеми силами старается не превратиться в бюрократа.
В прошлом он занимался компиляторами, операционными системами, сетями
и локальными распределенными системами. Его настоящее исследование связано
с разработкой глобальных распределенных систем, которые включают в себя мил-
лионы пользователей. Результатом этих исследовательских проектов стали 85 ста-
тей, опубликованных в разных журналах, выступления на конференциях и 5 книг.
Профессор Таненбаум разрабатывает программное обеспечение. Он является
главным разработчиком пакета «Amsterdam Compiler Kit» (набора инструменталь-
ных средств для написания портативных компиляторов), а также разработчиком
системы MINIX (клона UNIX для студенческих лабораторий программирования).
Вместе со своими учениками и программистами он участвовал в разработке систе-
мы Amoeba (это распределенная система с высокой производительностью на
основе микроядра). Системы MINIX и Amoeba находятся в свободном доступе
в Интернете.
Его аспиранты достигли больших высот после получения ученых степеней.
Он очень гордится ими.
Профессор Таненбаум — член Ассоциации по вычислительной технике, член
Института инженеров по электротехнике и электронике (IEEE), член Королевской
голландской академии науки и искусства. В 1994 году получил премию от Ассоциа-
ции по вычислительной технике как выдающийся педагог. В 1997 году награжден
премией от Специальной группы по образованию в области вычислительной тех-
ники (Ассоциации по вычислительной технике) за вклад в образование в области
вычислительной техники. Его имя включено в справочник
«Кто есть кто» («Who's
Who in the World»).
Его домашнюю страничку в Интернете можно найти по адресу
http://www.cs.vu.nl/~ast/.
Предисловие
В основе первых трех изданий книги лежит идея о том, что компьютер можно рас-
сматривать как иерархию уровней, каждый из которых выполняет какую-либо
определенную функцию. Это фундаментальное утверждение сейчас столь же пра-
вомерно, как и в момент выхода в свет первого издания, поэтому мы по-прежнему
берем его за основу, на этот раз уже в четвертом издании. Как и в первых трех
изданиях, в этой книге мы подробно описываем цифровой логический уровень,
уровень архитектуры команд, уровень операционной системы и уровень языка ас-
семблера (хотя мы изменили некоторые названия, чтобы следовать современным
установившимся обычаям).
В целом структура книги осталась прежней, но в четвертое издание внесены
некоторые изменения, что объясняется стремительным развитием компьютерной
промышленности. Например, все программы, которые в предыдущих изданиях
были написаны на языке Pascal, в четвертом издании переписаны на язык Java,
чтобы продемонстрировать популярность языка Java в настоящее время. Кроме
того, в качестве примеров в книге рассматриваются более современные машины
(Intel Pentium II, Sun UltraSPARC II и Sun picojava II).
Мультипроцессоры и компьютеры параллельного действия получили широкое
распространение, поэтому материал, связанный с архитектурами параллельно-
го действия, был полностью переделан и значительно расширен. В этой книге мы
затрагиваем широкий диапазон тем от мультипроцессоров до кластеров рабочих
станций.
С годами книга увеличилась в объеме (хотя не так сильно, как другие популяр-
ные компьютерные издания). Это неизбежно, поскольку происходит постоянное
развитие и о предмете становится известно все больше и больше. Поэтому если
книга используется в целях обучения, нужно иметь в виду, что этот курс может
занять более длительное время, чем раньше. Возможный вариант — изучать пер-
вые три главы, часть четвертой главы (до раздела о разработке микроархитектур-
ного уровня включительно) и пятую главу в качестве минимума, а оставшееся время
на ваше усмотрение потратить на шестую, седьмую, восьмую главы и вторую часть
четвертой главы.
В четвертое издание внесены следующие изменения В главе 1 по-прежнему
излагается история развития архитектуры компьютеров, но мы расширили ряд
рассматриваемых машин. В главе вводятся три основных примера: Pentium II,
UltraSPARC II и picojava II.
Материал второй главы обновлен и переработан. В ней мы рассматриваем
современные устройства ввода-вывода: диски RAID, CD-R, DVD, цветные прин-
теры и т. п.
16 Предисловие
Глава 3 (цифровой логический уровень) претерпела некоторые изменения —
теперь в ней рассматриваются компьютерные шины и современные устройства
ввода-вывода. Главное изменение — это новый материал о шинах (в частности, PCI
и USB). Три новых примера описываются на уровне микросхем.
Глава 4 (теперь она называется «Микроархитектурный уровень») была полно-
стью переписана. Идея использовать пример микропрограммируемой машины для
демонстрации работы тракта данных была сохранена, но в качестве примера взят
сокращенный вариант JVM. В соответствии с этим была изменена микроархитек-
тура. В главе продемонстрированы возможные компромиссы с точки зрения сто-
имости и производительности. В последнем примере, Mic-4, используется конвей-
ер из семи стадий. Этот пример наглядно демонстрирует основные принципы
работы современных компьютеров (например, Pentium II). К главе добавлен но-
вый раздел о способах увеличения производительности, в котором рассматрива-
ются новые технологии (кэширование, прогнозирование переходов, исполнение
с изменением последовательности, спекулятивное выполнение и предикация).
Новые примеры машин рассматриваются на микроархитектурном уровне.
В главе 5 (теперь она называется «Уровень архитектуры команд») рассказы-
вается о так называемом машинном языке. В качестве основных примеров здесь
используются Pentium II, UltraSPARC II и JVM.
Глава 6 (уровень операционной системы) содержит примеры операционных
систем для Pentium II (Windows NT) и UltraSPARC II (UNIX). Первая операци-
онная система сравнительно новая. Она содержит множество особенностей, кото-
рые стоит изучить. Система UNIX все еще используется во многих университетах
и компаниях, и, кроме того, она довольно проста, поэтому тоже заслуживает наше-
го внимания.
В главе 7 (уровень языка ассемблера) появились примеры для тех машин,
которые мы рассматриваем в этой книге. Кроме того, добавлен новый материал
о динамическом связывании.
Глава 8 (архитектура компьютеров параллельного действия) полностью изме-
нена. В ней подробно описываются мультипроцессоры (UMA, NUMA и СОМА)
и мультикомпьютеры (МРР и COW).
Пересмотрен список литературы. Большинство работ, на которые мы ссылаем-
ся в этой книге, опубликованы после выхода третьего издания. Двоичные числа
и числа с плавающей точкой не сильно изменились за последнее время, поэтому
приложения вошли в четвертое издание почти без изменений.
Наконец, многие проблемы, изложенные в третьем издании, были пересмотре-
ны и к ним добавлены новые.
Существует web-сайт этой книги. В Интернете имеются файлы PostScript для
всех иллюстраций. Их можно получить и распечатать. Кроме того, там можно най-
ти симулятор и другие инструментальные программные средства. Универсальный
адрес ресурса: http://www.cs.vu.nl/~ast/sco4/
Симулятор и программные средства написаны Реем Онтко (Ray Ontko). Автор
выражает признательность Рею за эти чрезвычайно полезные программы.
Автор искренне благодарит всех, кто читал рукопись данной книги и высказал
ценные замечания и предложения или оказал какую-либо помощь, в частности
Генри Бола (Henri Bal), Алана Чарльзуорта (Alan Charlesworth), Куроша Гарахор-
Предисловие 17
лоо (Koorosh Gharachorloo), Маркуса Гонкалвеса (Marcus Goncalves), Карена Па-
нетту Ленц (Karen Panetta Lentz), Тимоти Мэттсона (Timothy Mattson), Гарлана
Мак-Гана (Harlan McGhan), Майлза Мердокка (Miles Murdocca), Кэвина Нормой-
ла (Kevin Normoyle), Майка О'Коннора (Mike O'Connor), Митсунори Огихара
(Mitsunori Ogihara), Рея Онтко (Ray Ontko), Аске Плаата (Aske Plaat), Вильяма
Потвина (William Potvin II), Нагарайана Прабхакарана (Nagarajan Prabhakaran),
Джеймса Г. Пагсли (James H. Pugsley), Рональда Н. Шредера (RonaldN. Schroeder),
Райана Шумейкера (Ryan Shoemaker), Чарльза Силио-мл. (Charles Silio, Jr.) и Дей-
ла Скрина (Dale Skrien). Мои ученики Адриаан Бон (Adriaan Bon), Лаура де Вриес
(Laura de Vries), Дольф Лот (Dolf Loth), Гуидо ван Нордент (Guido van't Noordende)
помогали мне в работе над текстом, за что им большое спасибо.
Особую благодарность выражаю Джиму Гудману Qim Goodman) за его вклад
в создание этой книги (в частности, четвертой и пятой глав). Идея использовать
JVM принадлежит именно ему, и микроархитектура для реализации JVM тоже
его. Он же предложил множество новаторских идей. Книга значительно улучши-
лась благодаря его содействию.
Наконец, я хотел бы поблагодарить Сюзанну за терпеливое отношение ко мне,
несмотря на то, что я долгие часы проводил за своим Pentium'oM. С моей точки
зрения, Pentium — более усовершенствованная машина, чем мой старый IBM-386,
но с ее точки зрения никакой разницы нет. Я также хочу поблагодарить Барбару и
Марвина за то, что они такие замечательные дети, а также Брэма за то, что он вел
себя тихо, когда я писал эту книгу.
Эндрю С. Таненбаум
5 6 8 0 6 9
Барнаульский Государственный
Педагогический университет
Научная библиотека