Перед вами кисть, палитра, холст и мольберт. Напишите компилятор С++ для процессоров 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. По клику на фото откроется видеозапись работы. |
Включите центральный блок питания. В зависимости от конфигурации 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. На обратной стороне этого индикатора были зубчики, соответствующие номеру, изображённому на индикаторе; эти зубчики нажимали скрытые под индикатором контакты. Замена индикатора с одной цифрой на индикатор с другой цифрой меняла и номер, под которым устройство определялось в системе. |
Включаем питание внутренностей компьютера: находим селектор DC и переводим его в положение «DC ON». Вентиляторы корпуса раскрутятся и начнут работать, и все диски начнут негромко жужжать.
![]() |
Подаём питание на внутренности компьютера. |
Сейчас пора начать загрузку. У PDP-11 есть встроенный загрузчик, что-то типа BIOS; чтобы его запустить, надо нажать и удерживать кнопку CNTRL и, не отпуская, нажать BOOT. Если встроенный загрузчик вас по каким-то причинам не устраивает, вы можете написать свой, воспользовавшись восьмеричной цифровой клавиатурой на передней панели. Отец суперкомпьютеров Сеймур Крей, например, в принципе не признавал встроенные загрузчики, и каждый раз при включении компьютера писал загрузчик сам.
![]() | ![]() |
Загружаем встроенную программу BIOS. | Подсказка с примером загрузчика для самостоятельного ввода. |
Если всё прошло хорошо, BIOS загрузится и выдаст на экран строку статуса. Четыре набора чисел в восьмеричной системе — это, скорее всего, значения первых четырёх регистров (которых в PDP-11, напомню, было всего 8). Можно начать загрузку операционной системы, это делается вводом команды DL (обязательно большими буквами) и нажатием клавиши ⏎. Эта команда загружала операционную систему с накопителя RL-01 или RL-02. Если вам повезло, и у вас в компьютерном шкафу есть устройство RK-05 для считывания информации с жёстких дисков фронтальной загрузки, то, чтобы загрузить операционную систему с него, надо было бы ввести команду DK⏎.
![]() | ![]() |
Экран терминала VT100 со строкой статуса и введённой командой DL. | Устройство RK-05 со вставленным картриджем. |
Я не знаю, как загрузить систему с диска, если к системе подключено больше одного контроллера. Такая возможность точно есть, и ввести соответствующую команду на встроенной клавиатуре с указанием номера контроллера я могу, но как это сделать из консоли — пока что без понятия. Может, DL принимает параметр, указывающий, с какого контроллера грузиться?..
7.По окончании загрузки вам, скорее всего, придётся подправить дату и время. Только не забывайте, что PDP-11 подвержен ошибке-2000, и не пытайтесь выставить год после 2000-го.
![]() |
Загрузка операционной системы завершена. |
Самое время загрузить какую-нибудь игру!
![]() |
На экране — приключенческая бродилка Colossal Cave Adventure 1976 года издания. На заднем плане шкаф с картриджами для RL-01. На фотографии каждая полка содержит примерно 20 картриджей, это около 200 мегабайт данных. Весь шкаф можно запихнуть на один компакт-диск. |
Круто, правда? Немножко отличается от нашего обычного нажатия кнопки на системнике? Всё вышеописанное было стандартными, ежедневными, привычными процедурами всего лишь тридцать лет назад.
Теперь понимаете, почему я в таком восторге от революции?
Когда я читаю или вижу, как кто-то быстро и легко включил мэйнфрейм / суперкомьютер / танкер / самолёт / вертолёт, меня пробивает смех. Лучшим примером является фильм «007: Die Another Day», в котором Джеймс Бонд в исполнении Пирса Броснана вываливается из разваливающегося самолёта в вертолёте и во время падения успевает включить его, вывести на рабочий режим и предотвратить своё падение. Всё это — примерно за минуту. Для сравнения, вот видео из компьютерной игры «DCS Ка-50: Чёрная акула», с помощью которой тренируются настоящие пилоты настоящих вертолётов. В этом видео демонстрируется ускоренный запуск двигателей Ка-50. Длительность видео: 5 минут 37 секунд. Ладно, некоторые операции тренированный пилот выполняет быстрее, но речь всё равно идёт о трёх-четырёх минутах, не меньше.
no subject
тем не менее современные операционки грузятся примерно полминуты до сих пор
no subject
no subject
no subject
no subject
no subject
И повиснет.no subject
no subject
no subject
Но речь шла ж про оптимизацию?
no subject
no subject
no subject
no subject
no subject
Зато в Win95 была прикольная фича: кнопка "Старт" была отдельным окном. И её можно было тягать туда-сюда по таскбару, убирать, добавлять ещё одну кнопку. В 98-й эту лавочку уже прикрыли :(
no subject
no subject
no subject
no subject
no subject
no subject
Я читал историю о том, как для восстановления данных лунной программы с оригинальных записей NASA пришлось воспользоваться аппаратурой 1960-х из компьютерного музея, сохранившейся только в двух экземплярах во всём мире.
no subject
no subject
no subject
no subject
no subject
откуда и как
no subject
no subject
история информатики может быть очень увлекательной. вообще развитие технологий за последние 50 лет - удивительно.
спасибо за пост.
no subject
Взять, например, психологический триллер "Куб" (1997). Идея жуткого устройства кубической формы, всячески мучающего и убивающего людей, возникла у режиссёра Натали Винченцо во время работы с компьютером NeXTcube. Видимо, что-то там у него не клеилось… :)
no subject
Не могу смотреть сильные ужастики. След негативных эмоций чувствую очень долго после просмотра и не вижу причин для мазохизма))
А про компьютеры... единственное, о чем сожалею до сих пор, это то что перевелась когда-то из лицея в котором был суперклассный преподаватель информатики и другой, где вместо информатики преподавалась дактилография. ))) Так и пропустила шанс научиться программированию и разбираться в железках. Но... утешаю себя тем, что неизвестно если бы у моих родителей была возможность содержать меня 4 года (1991-1995). А при сегодняшних технологиях, даже совершенный тупица может научиться пользоваться разными устройствами)) Так что любуюсь железками издалека и пользуюсь благами технологической революции))
no subject
no subject
вы настолько заинтересовались, что я начала подозревать что сказала что-то не то. потому что в моей "дактилографии" ничего интересного нет, даже из вежливости.
проверила. нет. не дактилография, а машинопись.
dactilografia (румынский) = typing (англ.) = машинопись, печатание на пишущей машинке.
no subject
no subject
no subject
no subject
no subject