Пер Бринч Хансен (13 ноября 1938 — 31 июля 2007) — датско - американский учёный-компьютерщик, известный своими работами в области операционных систем , параллельного программирования , а также параллельных и распределённых вычислений .
Пер Бринч Хансен родился в Фредериксберге , анклаве, окружённом Копенгагеном , Дания . Его отец, Йорген Бринч Хансен, работал инженером-строителем, став ведущим экспертом в области механики грунтов , а затем получив должность профессора в Техническом университете Дании . Его мать, Элсебет Бринч Хансен (урождённая Ринг), была дочерью датского композитора Олуфа Ринга и работала парикмахером до замужества. [1]
Бринч Хансен посещал гимназию им. Скт. Йоргенса , а затем изучал электротехнику в Техническом университете Дании, где он искал область для изучения, которая «все еще находилась в своей пионерской фазе», полагая, что «если предмет преподавался, то, вероятно, уже слишком поздно вносить фундаментальный вклад». [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 в качестве языка описания оборудования для создания формальной спецификации .
Не имея опыта в многопрограммировании , он использовал копию Cooperating Sequential Processes [4] Эдсгер Дейкстра отправил его, чтобы он понял синхронизацию процессов с использованием семафоров , а затем реализовал специализированный монитор реального времени RC 4000 для использования в управлении заводом по производству удобрений. Питер Крафт и Чарльз Симони , который был еще подростком, написали интерпретатор p-кода и программы задач регистрации данных, которые были скомпилированы в p-код. [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 года Бринч Хансен присоединился к факультету Калифорнийского технологического института (Caltech) в качестве доцента компьютерных наук, где он начал работу над определением языка программирования с параллельными процессами и мониторами. В апреле 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 году факультет компьютерных наук USC был признан Национальным исследовательским советом одним из десяти лучших в США. [1]
Во время учебы в USC Бринч Хансен написал свою вторую книгу « Архитектура параллельных программ», основанную на его работе по разработке операционных систем с помощью Concurrent Pascal. [2] Опубликованная в 1977 году, она стала первой книгой по параллельному программированию. [9] В 1978 году Бринч Хансен стал первым ученым-компьютерщиком, удостоенным степени доктора технических наук, высшей академической награды в области инженерных и технологических наук в Дании, [10] за работу, описанную в «Архитектуре параллельных программ» . Позже в 1978 году Бринч Хансен опубликовал концепцию языка распределенных процессов, предложив использовать удаленные вызовы процедур для синхронизации процессов, работающих в сети микрокомпьютеров. [11]
Также в 1978 году Л. Дж. Севинс и Стив Гоингс из Mostek посетили Бринка Хансена в USC, где он изложил недорогую многопроцессорную архитектуру. Mostek начал проект по внедрению такого мультипроцессора, а Бринч Хансен работал в качестве консультанта. [1] Бринч Хансен разработал новый параллельный язык программирования Edison для проекта. [12] Как и в проекте RC 4000, Edison также использовался в качестве формального языка спецификации для оборудования. Mostek получил начальный 4-узловой многопроцессорный рабочий вариант, а Бринч Хансен написал переносимый компилятор Edison на PDP 11/55, но вскоре после этого United Technologies приобрела Mostek [13] и отменила проект. В 1982 году Бринч Хансен перенес систему Edison на персональный компьютер IBM (PC), а затем опубликовал свою третью книгу Programming a Personal Computer . [14]
В 1982 году Бринч Хансен был назначен первым профессором компьютерных наук имени Генри Сальватори в Университете Южной Калифорнии. [1]
В 1984 году, тоскуя по Дании после 14 лет за границей, Бринч Хансен покинул USC и присоединился к факультету Копенгагенского университета в качестве профессора даталогии . [1] В 1985 году он был избран членом Института инженеров по электротехнике и электронике (IEEE). [15] Позже в 1985 году была опубликована его четвертая книга Brinch Hansen on Pascal Compilers , которую он использовал для своего собственного курса по компиляторам. [16]
При проектировании многокомпьютерной операционной системы для датской компании GN Elmi Бринч Хансен пришел к выводу, что ему нужен новый язык, на этот раз использующий парадигму передачи сообщений CSP Хоара . [1] Полученный язык, Joyce , устранил основное ограничение CSP, введя параллельную рекурсию . [17] Бринч Хансен разработал переносимую реализацию на IBM PC. [1]
Обнаружив, что ни он, ни его семья не чувствуют себя в Дании как дома, Бринч Хансен решил вернуться в США, но обнаружил, что их иммиграционный статус требует от них сделать это очень быстро. Бринч Хансен связался с Джоном Рейнольдсом в Сиракузском университете , и в 1987 году он присоединился к факультету в качестве почетного профессора. [1]
Работая со своим студентом Рангачари Анандом, Джойс был переведен на многопроцессорный компьютер Encore Multimax 320 в Северо-восточном центре параллельных архитектур SU. Однако, осознавая ограничения масштабирования многопроцессорных систем, Бринч Хансен искал подходящий многокомпьютерный компьютер для дальнейшей работы. Приобретя Meiko Computing Surface в 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] становлением «одним из лучших толкователей в бизнесе» [25] и его приверженностью тестированию концепций в рабочих системах — Бринч Хансен реализовал и распространил рабочие системы для новых концепций, которые он разработал, отметив:
Нередко компьютерный ученый делает предложение, не проверив, насколько оно будет полезным на практике. Потратив 3 дня на написание предложения по монитору и 3 года на его реализацию, я прекрасно понимаю это искушение. Возможно, иногда это также человеческая реакция на огромное давление на университетских профессоров, желающих быстро получить финансирование и признание. Тем не менее, мы должны помнить, что в инженерии имеет значение только одно: работает ли это (а не «может ли это сработать» или «было бы неплохо, если бы это сработало»)? [26]
Система многопрограммного обеспечения RC 4000 представила ныне стандартную концепцию ядра операционной системы и разделение механизма и политики в разработке операционной системы. Современные архитектуры микроядер берут свое начало в расширяемой архитектуре ядра RC 4000. [15] Улучшение производительности микроядра было основной темой в исследованиях операционных систем в течение трех десятилетий после RC 4000.
Текст Брича Хансена «Принципы операционной системы » был первым всеобъемлющим учебником по операционным системам. В конечном итоге опубликованный на шести языках (английском, японском, немецком, чешском, польском и сербохорватском), [1] он оставался в печати в течение десятилетий, и годы после того, как описанная в нем система RC 4000 устарела. В 1990 году, почти через два десятилетия после его первой публикации, П. Дж. Плогер рецензировал его, говоря:
Эта книга ужасно устарела. В ней описываются многие алгоритмы операционной системы RC4000. RC4000 медленный, маленький и по сегодняшним меркам ему не хватает периферии. Алгоритмы представлены на подмножестве Pascal. Зачем беспокоиться? Ответ в том, что Бринч Хансен — один из лучших толкователей в отрасли. Он объясняет вещи ясно и по существу. Он видит общий принцип, стоящий за примером, но умудряется избегать ненужной абстракции. После всех этих лет его все еще приятно читать. [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-time Euclid, Pascal-FC, Turing Plus , Predula. [6]
Concurrent Pascal был первым языком параллельного программирования: [29] первым языком, разработанным специально для параллельного программирования, и, что более важно, первым языком, продемонстрировавшим возможность внедрения безопасных, [32] высокоуровневых средств для параллельного программирования, где система могла гарантировать, что процессы получают доступ только к непересекающимся наборам переменных и не мешают друг другу зависимыми от времени способами. [23] Хоар описал его как «выдающийся пример лучших академических исследований в этой области». [33]
Исходный и переносимый код для Concurrent Pascal и операционной системы Solo были распространены по меньшей мере среди 75 компаний и 100 университетов в 21 стране, что привело к их широкому принятию, портированию и адаптации как в промышленности, так и в академических кругах. [6] Грег Эндрюс заметил, что Concurrent Pascal и мониторы «оказали значительное влияние на большинство последующих предложений по параллельным языкам». [6]
«Архитектура параллельных программ» Брича Хансена была первой книгой по параллельному программированию [29] и в конечном итоге была опубликована на трех языках (английском, японском и немецком). [1] Более чем через дюжину лет после ее публикации П. Дж. Плогер заметил:
Конечно, за последние двенадцать лет были сделаны улучшения. У нас есть лучшие алгоритмы синхронизации и более навороченные (если не обязательно лучшие) языки с управлением параллелизмом. Но лучшего обзора параллельного программирования, чем эта книга, вы не найдете. По крайней мере, я не нашел ни одного. [25]
В 2005 году члены ACM проголосовали за включение «Архитектуры параллельных программ» в двадцатку лучших классических книг, поставив ее на 18-е место в опросе и указав ее в 8% бюллетеней. [27] Теперь она доступна в цифровой библиотеке ACM.
Удаленные вызовы процедур, используемые в современных операционных системах, берут свое начало в многопрограммной системе RC 4000 [15] , которая использовала протокол связи запрос-ответ для синхронизации процессов. [34]
В своей статье 1978 года о распределенных процессах Бринч Хансен предложил язык для распределенных вычислений, основанный на внешних запросах, состоящих из вызовов процедур между процессами. [35] Позже это стало известно в контексте операционной системы как удаленный вызов процедур. [36]
Позже Бринч Хансен разработал два языка, расширяющих парадигму передачи сообщений CSP Хоара с помощью параллельной рекурсии [17] [19] и показал, как эффективно реализовать это. [37]