June 2025

S M T W T F S
123 4 567
8 910111213 14
15161718 192021
22232425262728
29 30     

Style Credit

Expand Cut Tags

No cut tags
Tuesday, August 19th, 2014 17:19
Перед вами кисть, палитра, холст и мольберт. Напишите компилятор С++ для процессоров ARM.
Задание на собеседовании.

Технион (один из двух лучших университетов в Израиле и 78-й в общемировом рейтинге вузов) по-прежнему, как и тридцать лет назад, обучает студентов факультета компьютерных наук программированию на ассемблере на примере PDP-11. PDP-11 — это компьютер фирмы DEC, производившийся в конце 1970-х–начале 1980-х, в Википедии про него написано подробнее.

Выбор именно PDP-11, в отличие от более современных архитектур (скажем, x86), играет важную роль. Во-первых, это очень простой процессор. В нём всего восемь 16-битных регистров, из которых три имеют специальное предназначение, что оставляет программисту для расчётов всего пять регистров. Программист приучается ценить используемые ресурсы, тщательно продумывать свой код и не тратить ресурсы бездумно. Во-вторых, DEC уже пятнадцать лет как поглощена Compaq, которая, в свою очередь, была сожрана Hewlett-Packard; поэтому никому не будет обидно. Политкорректность на уровне. В-третьих, когда составлялась учебная программа, DEC`и были дешёвыми, поэтому их и приобрели, а затем вступила в свои права инерция мышления: наши деды программировали на PDP-11, наши отцы программировали на PDP-11, мы программировали на PDP-11, так что и детей наших будем учить на PDP-11, чтоб им неповадно было.

Понятно, что сейчас все студенты пишут самостоятельные работы и домашние задания дома, на своих обычных персональных компьютерах, используя симуляторы PDP-11, которые работают под самой обычной Виндой. Но когда-то PDP-11 были реальные, настоящие железные шкафы, которые стояли в компьютерном зале факультета электротехники (своего здания у факультета компьютерных наук в Технионе не было до 2000 года), и на доступ к которым надо было записываться заранее. Я их ещё застал, хотя сам уже с ними не работал.

Но я сомневаюсь, что кто-нибудь из выпускников факультета компьютерных наук Техниона, учившихся программированию на PDP-11, сумеет этот компьютер включить. А я теперь знаю, как это делается. И вам сейчас расскажу.

Дальнейший текст является переводом статьи PDP-11/Booting. Картинки большей частью оттуда же.

1.

Сначала надо включить терминал ввода-вывода VT100. Это делается с помощью перекидного выключателя на его задней стороне. Спустя несколько секунд после включения терминал издаст один короткий писк, прогреется и будет готов к работе, просигнализировав об этом миганием курсора в верхнем левом углу пустого экрана. Если окажется, что экран не пустой, и что на нём есть текст, не прикасайтесь ни к чему, пойдите и найдите кого-нибудь, кто объяснит вам, что происходит, и поможет с определением причины неисправности.

Внешний вид терминала DEC VT-100.Выключатель питания на задней стороне терминала.

Если вы собираетесь использовать телетайпный терминал ASR-33, остановитесь и хорошенько подумайте. При любом сомнении переходите к дисплейному терминалу. Если же вы всё-таки решили продолжать работать с ASR-33, убедитесь, что вы принесли собственный рулон бумаги: использование чужого рулона приравнивается к использованию чужого мыла в душе или к использованию чужой еды в холодильнике, и карается анально с максимальной жестокостью.

Телетайпный терминал ASR-33, который мог быть использован в качестве устройства ввода-вывода для PDP-11. По клику на фото откроется видеозапись работы.
2.

Включите центральный блок питания. В зависимости от конфигурации PDP-11 этот рубильник может находиться в разных местах. Если компьютер занимает один шкаф, то этот рубильник расположен внизу на передней стороне шкафа, а если два, то внизу задней панели правого шкафа.

Рубильник блока питания и трёхпозиционный переключатель «Remote On / Off / Local On».

Особое внимание обратите на положение трёхпозиционного переключателя «Local / Off / Remote On» (чуть выше рубильника на фотографии). В случае, если выключатель стоит в положении «Remote On», питание контролируется выключателем «Power On», расположенным где-то на передней панели; найдите его и переключите. Если этот выключатель стоит в положении «Off», переключите его на «Local On». Это действие, собственно, подаст питание остальным компонентам компьютера.

3.

Теперь пора поставить носитель информации. Найдите в шкафу компьютера корпус жёсткого диска (это обычно RL-01 или RL-02) и убедитесь, что кнопка «Load» отжата. Если кнопка была нажата, это значит, что кто-то выключил машину, не вынув картридж жёсткого диска; найдите и убейте негодяя, потому что своим действием он, скорее всего, сломал и жёсткий диск, и свой картридж.

Жёсткий диск с открытым корпусом и барабан картриджа (это сменные блины жёсткого диска).

Выдвиньте корпус жёсткого диска из шкафа и поднимите крышку, нажав кнопку на правой стороне крышки. Удерживайте барабан картриджа в одной руке, сдвиньте защёлку в рукоятке для переноски другой рукой и поднимите рукоятку. Теперь вы можете снять защитный кожух с магнитного диска картриджа. Опустите барабан картриджа внутрь жёсткого диска, следя за тем, чтобы этикетка была строго в направлении «12 часов», и опустите ручку, пока не щёлкнут магнитные фиксаторы. Поместите нижнюю часть защитного кожуха, которую вы только что сняли, поверх установленного картриджа. Закройте крышку корпуса и задвиньте жёсткий диск обратно в шкаф.

Установили картридж в считывающее устройство.Положили нижнюю часть защитного кожуха сверху.

После того, как вы закончили эти мероприятия, нажмите кнопку «Load». Она утопится и погаснет, жёсткий диск начнёт раскручиваться. Подготовка жёсткого диска к работе занимает примерно 30–45 секунд, по окончании этого процесса загорится индикатор «Ready», сигнализируя о готовности к работе.

Жёсткий диск подключён, нажимаем кнопку «Load».

Диаметр картриджа — 38 сантиметров, высота — 6. Каждый картридж хранит 5 или 10 мегабайт информации.

Лирическое отступление:
К каждой системе PDP-11 можно было подключить до четырёх жёстких дисков RL-01 или RL-02. Определение их в системе было простым и удобным, и я совершенно не ёрничаю. Никакого выбора порядка в BIOS, никакой возни с джамперами master / slave не требовалось, всё решалось проще. Каждое устройство имело индикатор готовности «Ready» с порядковым номером от 0 до 3. На обратной стороне этого индикатора были зубчики, соответствующие номеру, изображённому на индикаторе; эти зубчики нажимали скрытые под индикатором контакты. Замена индикатора с одной цифрой на индикатор с другой цифрой меняла и номер, под которым устройство определялось в системе.
4.

Включаем питание внутренностей компьютера: находим селектор DC и переводим его в положение «DC ON». Вентиляторы корпуса раскрутятся и начнут работать, и все диски начнут негромко жужжать.

Подаём питание на внутренности компьютера.
5.

Сейчас пора начать загрузку. У PDP-11 есть встроенный загрузчик, что-то типа BIOS; чтобы его запустить, надо нажать и удерживать кнопку CNTRL и, не отпуская, нажать BOOT. Если встроенный загрузчик вас по каким-то причинам не устраивает, вы можете написать свой, воспользовавшись восьмеричной цифровой клавиатурой на передней панели. Отец суперкомпьютеров Сеймур Крей, например, в принципе не признавал встроенные загрузчики, и каждый раз при включении компьютера писал загрузчик сам.

Загружаем встроенную программу BIOS.Подсказка с примером загрузчика для самостоятельного ввода.
6.

Если всё прошло хорошо, BIOS загрузится и выдаст на экран строку статуса. Четыре набора чисел в восьмеричной системе — это, скорее всего, значения первых четырёх регистров (которых в PDP-11, напомню, было всего 8). Можно начать загрузку операционной системы, это делается вводом команды DL (обязательно большими буквами) и нажатием клавиши ⏎. Эта команда загружала операционную систему с накопителя RL-01 или RL-02. Если вам повезло, и у вас в компьютерном шкафу есть устройство RK-05 для считывания информации с жёстких дисков фронтальной загрузки, то, чтобы загрузить операционную систему с него, надо было бы ввести команду DK⏎.

Экран терминала VT100 со строкой статуса и введённой командой DL.Устройство RK-05 со вставленным картриджем.

Я не знаю, как загрузить систему с диска, если к системе подключено больше одного контроллера. Такая возможность точно есть, и ввести соответствующую команду на встроенной клавиатуре с указанием номера контроллера я могу, но как это сделать из консоли — пока что без понятия. Может, DL принимает параметр, указывающий, с какого контроллера грузиться?..

7.

По окончании загрузки вам, скорее всего, придётся подправить дату и время. Только не забывайте, что PDP-11 подвержен ошибке-2000, и не пытайтесь выставить год после 2000-го.

Загрузка операционной системы завершена.
8.

Самое время загрузить какую-нибудь игру!

На экране — приключенческая бродилка Colossal Cave Adventure 1976 года издания. На заднем плане шкаф с картриджами для RL-01. На фотографии каждая полка содержит примерно 20 картриджей, это около 200 мегабайт данных. Весь шкаф можно запихнуть на один компакт-диск.

Круто, правда? Немножко отличается от нашего обычного нажатия кнопки на системнике? Всё вышеописанное было стандартными, ежедневными, привычными процедурами всего лишь тридцать лет назад.

Теперь понимаете, почему я в таком восторге от революции?

Когда я читаю или вижу, как кто-то быстро и легко включил мэйнфрейм / суперкомьютер / танкер / самолёт / вертолёт, меня пробивает смех. Лучшим примером является фильм «007: Die Another Day», в котором Джеймс Бонд в исполнении Пирса Броснана вываливается из разваливающегося самолёта в вертолёте и во время падения успевает включить его, вывести на рабочий режим и предотвратить своё падение. Всё это — примерно за минуту. Для сравнения, вот видео из компьютерной игры «DCS Ка-50: Чёрная акула», с помощью которой тренируются настоящие пилоты настоящих вертолётов. В этом видео демонстрируется ускоренный запуск двигателей Ка-50. Длительность видео: 5 минут 37 секунд. Ладно, некоторые операции тренированный пилот выполняет быстрее, но речь всё равно идёт о трёх-четырёх минутах, не меньше.

Tags:
Tuesday, August 19th, 2014 14:29 (UTC)
да. при включении ENIAC обычно сгорала пара ламп, на поиск которых могла уйти неделя
тем не менее современные операционки грузятся примерно полминуты до сих пор
Tuesday, August 19th, 2014 14:36 (UTC)
У меня Windows 8 грузится за 12 секунд. Отключено всё ненужное, а сама операционка стоит на SSD. Раньше таких результатов я только с BeOS добивался.
Tuesday, August 19th, 2014 14:40 (UTC)
такая же фигня в MacOS X, при том что BeOS грузился с низкоскоростного IDE и из 12 секунд примерно 7 уходило на инициализацию BIOS :)
Tuesday, August 19th, 2014 15:45 (UTC)
Есть преимущества в том, что девяносто девять сотых периферии не поддерживалось, и драйвера для неё не грузились :)
Tuesday, August 19th, 2014 15:58 (UTC)
что-то подсказывает мне что виндовоз даже с удалёнными лишними дровми не сильно быстрее стартанёт
Tuesday, August 19th, 2014 16:28 (UTC)
Ошибаешься. Если его хорошо подшаманить, повырывать с корнем всё ненужное, лишние службы позапрещать, — он не просто стартанёт, он взлетит. И повиснет.
Tuesday, August 19th, 2014 16:36 (UTC)
В конце концов, 98 SE была вполне ничего себе системой. Грузилась быстро, висла редко и по делу, и даже синий экран смерти у неё был без пафосной голубизны…
Tuesday, August 19th, 2014 18:05 (UTC)
Вполне, да. Последняя винда от которой ещё не хотелось блевать и которая у меня стояла
Но речь шла ж про оптимизацию?
Tuesday, August 19th, 2014 20:30 (UTC)
98SE — это затюнингованная и оптимизированная по самое «не могу» 98-я.
Tuesday, August 19th, 2014 21:39 (UTC)
а 98 — релиз 95 "ß"
Tuesday, August 19th, 2014 23:51 (UTC)
Не согласен, 98-я была значительно лучше 95-й.
Tuesday, August 19th, 2014 23:55 (UTC)
я ровно об этом и сказал. 95 бета, 98 релиз
Tuesday, August 19th, 2014 23:59 (UTC)
А-а, в этом смысле…

Зато в Win95 была прикольная фича: кнопка "Старт" была отдельным окном. И её можно было тягать туда-сюда по таскбару, убирать, добавлять ещё одну кнопку. В 98-й эту лавочку уже прикрыли :(
Tuesday, August 19th, 2014 15:18 (UTC)
Эти старые железяки такие трогательные, меня ажно слеза пробивает, когда про них кто-нибудь рассказывает. От умиления, естессно. :)
Tuesday, August 19th, 2014 16:13 (UTC)
Дивно. Ещё и выглядит вполне дизайнерски. :))
Tuesday, August 19th, 2014 16:31 (UTC)
Там подробно расписано, как эта штука строилась. Так вот, построить корпус было несложно. А вот оригинальные Cray`евские программы для неё найти взяло не просто много, а ОЧЕНЬ много времени… Были подключены музеи, правительство, НИИ и бывшие работники Cray, и дело приняло международный масштаб с подключением работников Microsoft для восстановления данных... Не умеем мы хранить историю!
Edited Aug. 19th, 2014 16:32 (UTC)
Tuesday, August 19th, 2014 22:03 (UTC)
Я удивилась сначала, а потом подумала: ну вообще да, у нас самих железо от старых компов остается иногда как сувенир исторический, но многие ли хранят при этом древний софт? Если и завалялось где, то случайно. :)
Tuesday, August 19th, 2014 23:49 (UTC)
Есть ещё один нюанс. Софт, может, и остался, но на чём его читать? У меня есть оригинальный дистрибутив MS-DOS 6.22 на фирменных дискетах Microsoft. И где я сейчас найду работоспособный флоппик? :)

Я читал историю о том, как для восстановления данных лунной программы с оригинальных записей NASA пришлось воспользоваться аппаратурой 1960-х из компьютерного музея, сохранившейся только в двух экземплярах во всём мире.
Edited Aug. 20th, 2014 00:05 (UTC)
Wednesday, August 20th, 2014 06:22 (UTC)
Точно, у меня зипы до сих пор где-то валялись, это такие толстые как бы дискеты мегов на 100 или 200, которые читались штукой под названием зипдрайв, который давно сгорел. Фиг знает, что на них записано, теперь уж не достанешь. :) скоро и сидюки будет нечем прочитать :)
Wednesday, August 20th, 2014 17:23 (UTC)
Если очень сильно нужно, у меня есть френд [livejournal.com profile] incopolis, так вот у него такие штуки, вроде, ещё сохранились. :)
Wednesday, August 20th, 2014 17:28 (UTC)
Подтверждаю, есть. Правда, пока мой компьютер не хочет зипдрайв опознавать. Еще у меня один магнитооптический диск лежит - но его совсем уж читать нечем.
Wednesday, August 20th, 2014 17:30 (UTC)
Не, вряд ли там что ценное, там по работе файлы носили, но за предложение пасиба, буду знать ксли что :))
Tuesday, August 19th, 2014 22:27 (UTC)
давай поподробнее про работников микрософта с восстановлением
откуда и как
Tuesday, August 19th, 2014 23:50 (UTC)
Читай, в статье всё написано. Это не в рамках работы было, а просто в качестве хобби. Человек фактически восстановил операционку Cray методом реверс-инжиниринга.
Tuesday, August 19th, 2014 15:48 (UTC)
прочитала \смотрела ролики\ с удовольствием!
история информатики может быть очень увлекательной. вообще развитие технологий за последние 50 лет - удивительно.
спасибо за пост.
Tuesday, August 19th, 2014 17:10 (UTC)
На здоровье. Я сам люблю всякие старые железки. И в рамках истории, и в рамках "пощупать". Уж очень много всего интересного с ними связано.

Взять, например, психологический триллер "Куб" (1997). Идея жуткого устройства кубической формы, всячески мучающего и убивающего людей, возникла у режиссёра Натали Винченцо во время работы с компьютером NeXTcube. Видимо, что-то там у него не клеилось… :)
Tuesday, August 19th, 2014 17:37 (UTC)
О!...Ой, нет. Хотела сказать "посмотрю", но после того как переключила описание на русскую википедию, и прочитала о чем фильм, поняла что скорее всего не смогу)) \в английской версии все еще слишком много текста для меня\
Не могу смотреть сильные ужастики. След негативных эмоций чувствую очень долго после просмотра и не вижу причин для мазохизма))

А про компьютеры... единственное, о чем сожалею до сих пор, это то что перевелась когда-то из лицея в котором был суперклассный преподаватель информатики и другой, где вместо информатики преподавалась дактилография. ))) Так и пропустила шанс научиться программированию и разбираться в железках. Но... утешаю себя тем, что неизвестно если бы у моих родителей была возможность содержать меня 4 года (1991-1995). А при сегодняшних технологиях, даже совершенный тупица может научиться пользоваться разными устройствами)) Так что любуюсь железками издалека и пользуюсь благами технологической революции))
Tuesday, August 19th, 2014 23:52 (UTC)
Дактилография? Звучит довольно интересно. В качестве школьной дисциплины?!
Wednesday, August 20th, 2014 06:05 (UTC)
тысяча извинений!
вы настолько заинтересовались, что я начала подозревать что сказала что-то не то. потому что в моей "дактилографии" ничего интересного нет, даже из вежливости.
проверила. нет. не дактилография, а машинопись.
dactilografia (румынский) = typing (англ.) = машинопись, печатание на пишущей машинке.
Wednesday, August 20th, 2014 09:01 (UTC)
А-а. Ну, тоже полезное занятие :)
Wednesday, August 20th, 2014 09:23 (UTC)
Вот именно, мне тоже смешно))
Wednesday, August 20th, 2014 03:52 (UTC)
ну так на то оно и кино :)
Wednesday, August 20th, 2014 09:02 (UTC)
Это одна из причин, по которым я не люблю театр :)
Wednesday, August 20th, 2014 09:04 (UTC)
да уж. там эти номера не пройдут )