Пер Бринч Хансен (13 ноября 1938 — 31 июля 2007) — датско - американский ученый-компьютерщик , известный своими работами в области операционных систем , параллельного программирования , параллельных и распределенных вычислений .
Пер Бринч Хансен родился во Фредериксберге , анклаве, окруженном Копенгагеном , Дания . Его отец, Йорген Бринч Хансен, работал инженером-строителем, став ведущим специалистом в области механики грунтов, а затем получил должность профессора в Техническом университете Дании . Его мать, Эльзебет Бринч Хансен (урожденная Ринг), была дочерью датского композитора Олуфа Ринга и до замужества работала парикмахером. [1]
Бринч Хансен посетил Skt. Йоргенса, а затем изучал электротехнику в Датском техническом университете, где он искал область для развития, которая «все еще находилась на новаторской стадии», полагая, что «если предмет преподается, вероятно, уже слишком поздно вносить фундаментальный вклад». ." [1] [2] После семинедельной студенческой стажировки в лаборатории IBM Hursley в Англии он решил посвятить свою карьеру компьютерам. Первоначально сосредоточившись на сборке компьютеров, чтение книги о проекте IBM 7030 Stretch , в которой описывалась организация компьютеров с точки зрения программиста [3], переориентировало его интерес на то, чтобы стать компьютерным архитектором. [1]
После получения степени магистра наук в области электронной инженерии в 1963 году Бринч Хансен устроился на работу в Regnecentralen , тогда исследовательское учреждение Датской академии технических наук (Akademiet for de Tekniske Videnskaber), работая в группе компиляторов под руководством Питера Наура. и Йорн Йенсен . [2] Там его первым значительным проектом было написание синтаксического анализатора компилятора COBOL для компьютера Siemens 3003.
Впоследствии он написал файловую систему , которая будет использоваться во время выполнения скомпилированных программ COBOL, позже заметив: [1]
Теперь я понимаю, что это была действительно маленькая операционная система, которую я запрограммировал. Однако в середине 1960-х годов граница между языковой реализацией и операционными системами еще не была четко понята.
В 1966 году Бринч Хансен перешел в группу оборудования Хеннинга Исакссона в Regnecentralen, которая к тому времени уже была компанией с акционерами. Вместе с Питером Крафтом он определил компьютерную архитектуру и набор команд для третьего компьютера Regnecentralen, RC 4000, используя ALGOL 60 в качестве языка описания аппаратного обеспечения для создания формальной спецификации .
Не имея опыта мультипрограммирования , он использовал копию книги «Взаимодействующие последовательные процессы» [4], которую Эдсгер Дейкстра послал ему разобраться в синхронизации процессов с помощью семафоров , а затем реализовал специализированный монитор реального времени RC 4000 для использования при управлении заводом по производству удобрений. Питер Крафт и Чарльз Симони , который был еще подростком, написали интерпретатор p-кода и программы задач регистрации данных, которые были скомпилированы в p-code. [1]
Летом 1967 года Бринч Хансен покинул группу аппаратного обеспечения Regnecentralen и возглавил отдел разработки программного обеспечения RC 4000 , где он возглавил команду, в которую входили Йорн Йенсен, Петер Крафт и Сёрен Лауесен, в разработке многопрограммной системы общего назначения RC 4000 с целью избегать разработки собственной операционной системы управления в реальном времени для каждой установки RC 4000, а также поддерживать пакетную обработку и разделение времени . [1] Получившаяся система не представляла собой полноценную операционную систему, а представляла собой небольшое ядро , обеспечивающее механизмы, на основе которых можно было построить операционные системы для различных целей. [5] К весне 1969 года уже работала хорошо документированная и надежная версия мультипрограммной системы RC 4000. [1]
В конце 1970 года Бринч Хансен переехал в Питтсбург , приняв приглашение Алана Перлиса посетить факультет информатики Университета Карнеги-Меллон в качестве научного сотрудника, пока он писал первый систематический учебник по принципам операционных систем. [1] [2] В это время на Летней школе 1971 года в Марктобердорфе и симпозиуме в Белфасте Бринч Хансен, Тони Хоар и Дейкстра начали обсуждать идеи, которые превратились в концепцию монитора . Весной 1972 года, прочитав о концепции классов , изобретенной Оле-Йоханом Далем и Кристен Найгаард для Simula 67, Бринч Хансен завершил свой текст главой о защите ресурсов, в которой предлагалась первая нотация монитора с использованием общих классов. [6] В 1973 году были опубликованы «Принципы операционной системы» , ставшие первым всеобъемлющим учебником по операционным системам. [7]
В июле 1972 года Бринч Хансен поступил на факультет Калифорнийского технологического института (Калтех) в качестве доцента кафедры информатики, где начал работу над определением языка программирования с параллельными процессами и мониторами. В апреле 1974 года он распространил технический отчет по Concurrent Pascal . [1] [2] Компилятор Concurrent Pascal для PDP 11/45 , написанный докторантом Бринча Хансена Элом Хартманном, был выпущен в январе 1975 года. [8] Впоследствии Бринч Хансен начал писать модели операционных систем на Concurrent Pascal, чтобы оценить язык. В мае 1975 года он завершил работу над Solo, однопользовательской операционной системой для разработки программ Concurrent Pascal. Затем он переписал исходный планировщик реального времени RC 4000 на языке Concurrent Pascal, потратив три дня на его написание и три часа машинного времени на его систематическое тестирование. [6]
Когда факультет компьютерных наук Калифорнийского технологического института переключился на компьютерную инженерию, а не на программирование, Бринч Хансен решил уйти, а не искать там постоянную должность. [1]
В 1976 году Бринч Хансен выбрал Университет Южной Калифорнии (USC) для своей следующей должности, чтобы его семья могла остаться в своем доме в Альтадене . Придя на факультет в качестве штатного профессора и первого заведующего недавно созданной кафедрой информатики, он возглавил усилия по выявлению и привлечению первоклассных преподавателей для создания первоклассной кафедры. К 1980 году факультет компьютерных наук Университета Южной Калифорнии был включен Национальным исследовательским советом в десятку лучших в США. [1]
Во время учебы в Университете Южной Калифорнии Бринч Хансен написал свою вторую книгу « Архитектура параллельных программ», основанную на его работе по разработке операционных систем с помощью Concurrent Pascal. [2] Опубликованная в 1977 году, это была первая книга по параллельному программированию. [9] В 1978 году Бринч Хансен стал первым ученым-компьютерщиком, получившим степень доктора технических наук, высшую академическую награду в области инженерных и технологических наук в Дании, [10] за работу, описанную в книге «Архитектура параллельных программ» . Позже, в 1978 году, Бринч Хансен опубликовал концепцию языка «Распределенные процессы», предложив использовать удаленные вызовы процедур для синхронизации процессов, выполняемых в микрокомпьютерной сети. [11]
Также в 1978 году Л. Дж. Севинс и Стив Гоингс из Мостека посетили Бринч Хансена в Университете Южной Калифорнии, где он представил недорогую многопроцессорную архитектуру. Мостек начал проект по внедрению такого мультипроцессора, а Бринч Хансен работал консультантом. [1] Бринч Хансен разработал для этого проекта новый язык параллельного программирования Edison. [12] Как и в проекте RC 4000, Edison также использовался в качестве формального языка спецификации аппаратного обеспечения. Мостеку удалось создать первоначальный четырехузловой мультипроцессор, а Бринч Хансен написал портативный компилятор Эдисона для PDP 11/55, но вскоре после этого United Technologies приобрела Мостек [13] и закрыла проект. В 1982 году Бринч Хансен перенес систему Эдисона на персональный компьютер (ПК) IBM, а затем опубликовал свою третью книгу « Программирование персонального компьютера ». [14]
В 1982 году Бринч Хансен был назван первым профессором компьютерных наук Генри Сальватори в Университете Южной Калифорнии. [1]
В 1984 году, испытывая тоску по Дании после 14 лет за границей, Бринч Хансен покинул Университет Южной Калифорнии и поступил на факультет Копенгагенского университета в качестве профессора даталогии . [1] В 1985 году он был избран членом Института инженеров по электротехнике и электронике (IEEE). [15] Позже в 1985 году была опубликована его четвертая книга Бринч Хансена о компиляторах Паскаля , которую он использовал для своего собственного курса по компиляторам. [16]
Разрабатывая мультикомпьютерную операционную систему для датской компании GN Elmi, Бринч Хансен пришел к выводу, что ему нужен новый язык, на этот раз использующий парадигму передачи сообщений CSP Хоара . [1] Получившийся в результате язык Joyce устранил главное ограничение CSP, введя параллельную рекурсию . [17] Бринч Хансен разработал портативную реализацию на IBM PC. [1]
Обнаружив, что ни он, ни его семья не чувствуют себя в Дании как дома, Бринч Хансен решил вернуться в США, но обнаружил, что их иммиграционный статус требует от них сделать это очень быстро. Бринч Хансен связался с Джоном Рейнольдсом из Сиракузского университета , и в 1987 году он поступил на факультет в качестве заслуженного профессора. [1]
Работая со своим учеником Рангачари Анандом, Джойс был переведен на мультипроцессор Encore Multimax 320 в Северо-восточном центре параллельных архитектур Университета. Однако, понимая ограничения масштабируемости мультипроцессоров, Бринч Хансен искал подходящий мультикомпьютер для дальнейшей работы. Приобретя вычислительную поверхность Meiko в 1989 году, он начал экспериментировать с научными приложениями, разрабатывая параллельные программы для метода Хаусхолдера (редукции), а затем моделирования n-тел в качестве обучающих упражнений, и был удивлен, обнаружив, что обе программы имели почти идентичные структуры управления. Придя к выводу, что оба они соответствуют «парадигме всех пар», он затем сосредоточился на изучении повторно используемых структур параллельных алгоритмов, которые он назвал «парадигмами программирования» или «универсальными программами» (позже широко известными как « шаблоны проектирования »). [1] В 1995 году была опубликована пятая книга Бринч Хансена « Исследования в области вычислительной науки: парадигмы параллельного программирования» [18] с программами, переписанными на SuperPascal , полностью реализованном языке публикации, который он создал для параллельных алгоритмов. [19]
В последние годы своей жизни Бринч Хансен опубликовал ретроспективу своих наиболее важных статей « В поисках простоты» (1996), [20] текст курса программирования для неспециалистов « Программирование на Java для всех » (1999), [21] ] ретроспектива эволюции операционных систем, Классические операционные системы: от пакетной обработки к распределенным системам (2001), [22] и ретроспектива эволюции параллельного программирования, Происхождение параллельного программирования: от семафоров к удаленным вызовам процедур ( 2002). [23] В 2004 году он самостоятельно опубликовал на своем веб-сайте мемуары « История программиста: жизнь пионера компьютеров» . [1]
В 2002 году Бринч Хансен был награжден премией IEEE Computer Pioneer Award «За новаторские разработки в области операционных систем и параллельного программирования, примером которых является работа над мультипрограммной системой RC 4000, мониторами и Concurrent Pascal». [15]
31 июля 2007 года Бринч Хансен умер вскоре после того, как ему поставили диагноз неизлечимого рака. [24]
Бринч Хансен познакомился со своей женой Миленой (урожденной Храстар) во время школьной поездки в Югославию в 1962 году. Они поженились в 1965 году, у них родилось двое детей: дочь Метте и сын Томас. [1]
За свою пятидесятилетнюю карьеру Бринч Хансен внес плодотворный вклад в области операционных систем, параллельных вычислений, а также параллельных и распределенных вычислений, которые оказали влияние на развитие этих областей и продвинули их от специальных методов к систематическим инженерным дисциплинам. [15] Влияние его работы усиливалось его «неустанным поиском простоты», [15] его настойчивостью в ясности, многократным написанием и переписыванием своих статей перед их публикацией, [20] тем, что он стал «одним из лучших объяснителей в business» [25] и его приверженность тестированию концепций в рабочих системах – Бринч Хансен реализовал и распространил рабочие системы для новых концепций, которые он разработал, отметив:
Ученый-компьютерщик нередко выдвигает предложение, не проверив, насколько оно полезно на практике. Потратив 3 дня на написание предложения по монитору и 3 года на его реализацию, я вполне могу понять это искушение. Возможно, иногда это также человеческая реакция на огромное давление на профессоров университетов, требующее быстрого получения финансирования и признания. Тем не менее, мы должны помнить, что в инженерии имеет значение только одно: работает ли это (а не «может ли это работать» или «было бы хорошо, если бы это работало»)? [26]
Мультипрограммная система RC 4000 представила ставшую теперь стандартной концепцию ядра операционной системы и разделение механизма и политики при проектировании операционной системы. Современные архитектуры микроядра уходят корнями в архитектуру расширяемого ядра RC 4000. [15] Повышение производительности микроядра было основной темой исследований операционных систем в течение трех десятилетий после RC 4000.
Текст Бринч Хансена « Основы операционной системы » стал первым всеобъемлющим учебником по операционным системам. В конечном итоге опубликованный на шести языках (английском, японском, немецком, чешском, польском и сербско-хорватском) [1] он оставался в печати в течение десятилетий, и спустя годы после того, как описанная в нем система RC 4000 устарела. В 1990 году, почти через два десятилетия после первой публикации, П. Дж. Плаугер сделал рецензию на нее, сказав:
Эта книга ужасно устарела. В нем описаны многие алгоритмы операционной системы RC4000. По сегодняшним стандартам RC4000 медленный, маленький и лишен периферийных устройств. Алгоритмы представлены в подмножестве Паскаля. Зачем беспокоиться? Ответ в том, что Бринч Хансен — один из лучших объяснителей в бизнесе. Он объясняет вещи ясно и по делу. Он улавливает общий принцип примера, но ему удается избегать ненужной абстракции. Спустя столько лет его по-прежнему приятно читать. [25]
В 2005 году члены Ассоциации вычислительной техники (ACM) включили «Принципы операционной системы» в число 25 лучших классических книг в ходе опроса по выбору вышедших из печати классических книг для добавления в цифровую библиотеку ACM. «Принципы операционной системы» заняли 15-е место в опросе, появившись в 8,8% бюллетеней. [27] Теперь он доступен в цифровой библиотеке ACM.
Используя Concurrent Pascal, Бринч Хансен продемонстрировал, что можно полностью реализовать операционные системы на языках высокого уровня, и что это сокращает усилия по разработке на один-два порядка. [28] Более того, целые операционные системы могут быть опубликованы и поняты во всей их полноте. Бринч Хансен сделал именно это в книге «Архитектура параллельных программ» , в результате чего Рой Мэддукс и Харлан Миллс заявили:
Вторая часть книги действительно замечательна. Здесь видна вся операционная система, и каждая строка программы открыта для изучения. В этом нет никакой скрытой тайны, и после изучения таких обширных примеров читатель чувствует, что он мог бы заняться аналогичной работой и изменить систему по своему желанию. Никогда прежде мы не видели операционную систему, показанную так подробно и с такой возможностью модификации. [29]
Бринч Хансен и Хоар разработали концепцию монитора. Бринч Хансен опубликовал первую нотацию монитора, приняв концепцию классов Simula 67 [7] и изобрел механизм организации очередей. [30] Хоар уточнил правила возобновления процесса. [31] Бринч Хансен создал первую реализацию мониторов в Concurrent Pascal. [6] К 1990 году было создано более дюжины дополнительных языков для мониторов: Simone, Modula , CSP/k, CCNPascal, PLY, Pascal Plus, Mesa, SB-Mod, Concurrent Euclid , Pascalc, Concurrent C, Emerald, Real. -время Евклид, Паскаль-ФК, Тьюринг Плюс , Предула. [6]
Параллельный Паскаль был первым языком параллельного программирования: [29] первым языком, разработанным специально для параллельного программирования, и, что более важно, первым языком, продемонстрировавшим возможность внедрения безопасных [32] средств высокого уровня для параллельного программирования, где Система может гарантировать, что процессы получают доступ только к непересекающимся наборам переменных и не мешают друг другу в зависимости от времени. [23] Хоар охарактеризовал его как «выдающийся пример лучших академических исследований в этой области». [33]
Исходный и переносимый код для Concurrent Pascal и операционной системы Solo был распространен как минимум в 75 компаний и 100 университетов в 21 стране, что привело к его широкому внедрению, портированию и адаптации как в промышленности, так и в научных кругах. [6] Грег Эндрюс заметил, что Concurrent Pascal и мониторы «сильно повлияли на большинство последующих предложений по параллельным языкам». [6]
Книга Бринч Хансена « Архитектура параллельных программ» была первой книгой по параллельному программированию [29] и в конечном итоге была опубликована на трех языках (английском, японском и немецком). [1] Спустя более десяти лет после публикации П. Дж. Плаугер заметил:
Конечно, за последние десять лет произошли улучшения. У нас есть лучшие алгоритмы синхронизации и более сложные (если не обязательно лучшие) языки с контролем параллелизма. Но вы не найдете лучшего обзора параллельного программирования, чем эта книга. По крайней мере я не нашел ни одного. [25]
В 2005 году члены ACM включили «Архитектуру параллельных программ» в число 25 лучших классических книг, заняв 18-е место в опросе и появившись в 8% бюллетеней. [27] Теперь он доступен в цифровой библиотеке ACM.
Удаленные вызовы процедур , используемые в современных операционных системах, уходят корнями в мультипрограммную систему RC 4000 [15] , которая использовала протокол связи запрос-ответ для синхронизации процессов. [34]
В своей статье о распределенных процессах 1978 года Бринч Хансен предложил язык для распределенных вычислений, основанный на внешних запросах, состоящих из вызовов процедур между процессами. [35] Позже это стало известно в контексте операционной системы как удаленный вызов процедуры. [36]
Позже Бринч Хансен разработал два языка, расширяющие парадигму передачи сообщений CSP Хоара с помощью параллельной рекурсии, [17] [19] и показал, как эффективно ее реализовать. [37]