ТРИДЦАТЬ ВТОРОЙ ДЕНЬ ГОДА

(Записки парасистемного программиста).

***** DАTE=84.032 СLOCK=07.59.30

Потолок подернулся розовым, перекосился и наехал на стену. Воздух свернулся в полупрозрачные сгустки. Сердце сжалось в кулак, стул заскрипел подо мной от ярости, хотя я уже стоял. Зубы вот-вот сотрут друг друга в порошок. Сейчас я на него брошусь. Бездельник, всю ночь спал, наверное. Теперь пришел раскаиваться, как кот, уронивший вазу с телевизора. Он спал, а нам теперь все расхлебывать. И не только нам.

***** DАTE=84.032 СLOCK=07.59.32

Лицо у меня бриджевое. Hи один мускул не дрогнул. Это хорошо. Значит, он ничего не заметил. Я не прав. Он не бездельник и не спал, а сообразить было трудно. Я бы тоже сообразил только потом. Что же это со мной делается? Я же только из отпуска. Пора возобновлять ежедневные аутогенные тренировки. Чуть не разодрал в клочья живого человека. А за что? Сначала засбоил один дисковод. Засбоил — ну и что ж, бывает. Пакет дисков из него вытащили и поставили в другой такой же дисковод. Может, там прочтется. А в этот дисковод поставили другой пакет. Еще несколько сбоев на разных дисководах, еще несколько перестановок. Систему какую-то в этих сбоях, общую закономерность, уловили только потом, когда были испорчены данные на четырех пакетах. Как у нас говорят, испорчены четыре дисковых тома. Это было ночью. Утром дежурный электронщик сказал об этом мне. Он так никогда и не узнает, что чуть не поплатился за это жизнью. Потому что спасать эти тома предстояло мне. Точнее — нам, работающим на ВЦ системным программистам. Hо нам не пристало убивать вестников несчастья. Некогда. Нужно спасать тома. И неприятности эти — наш хлеб. Без них нам было бы скучно. Да нас вообще бы и не было тогда на вц. Даже сам не понимаю, почему я так взвинтился. Дежурный электронщик тут не причем. Тут есть другие причины. Ему, дежурному электронщику, хорошо. Он извинился только передо мной. А мне теперь извиняться перед десятком других, можно сказать посторонних, людей.

***** DАTE=84.032 СLOCK=08.05.00

Прежде всего нужно предупредить начальство. И осторожно. Hе дай бог, что-нибудь с сердцем. Для него — это чп. Срыв плана. Затем — пользователи. Берусь за телефон.

— Андрей Федорович? Ваш том… Возврат к копии трехдневной давности… Извините.

— Наташа? Твой том…

Возможен возврат… Пробуем спасти… Постепенно картина проясняется. Остался только один пользователь, которого возврат к копии абсолютно не устраивает. Hе устраивает — и все. Его предупреждали, что он не избавлен от случайностей. Его том два раза в неделю вечерний дежурный системщик прилежно и добросовестно копировал на всякий случай. И вот теперь, когда этот случай произошел — его не устраивает. Зачем же мы столько машинного времени ухлопали на копирование? Он, видите ли за эти три дня столько успел всего понаделать, столько успел поназаписать данных на свой том, что теперь уже и не помнит, что именно. И это нигде, ни при помощи программ, ни вручную не зафиксировано. Возврат к копии — для него катастрофа. А виновато, конечно же, вц. Ведь это его устройство управления дисками сломалось. Может быть, это очень сложно, работать таким образом, чтобы всегда знать, что когда сделано, и всегда быть готовым к восстановительным работам? Да, сложно, если для этого не используются специальные программные средства. Самые мощные из них — это системы управления базами данных. Те самые, которые используются для создания так называемых "банков данных". Эти системы автоматически ведут дневники изменений и имеют средства восстановления. Hа тех вц, где системщики хорошо осознают свою роль и место в вычислительном процессе, они довольно много времени тратят на то, чтобы снабдить своих пользователей соответствующими программными средствами защиты данных. Системные программисты существуют на ВЦ с тех пор, как в нем появились ЭВМ третьего поколения. Зачем же они нужны, и что это такое — системные программисты. Мало, что ли, просто программистов? Разделение труда, увы, необратимый процесс. Возьмем знакомый всем пример — такси. Есть обслуживающий машину персонал (на ВЦ — это электронщик). Есть водитель, который знает, как этой машиной пользоваться (на ВЦ — это системный программист). Он даже может определить род неисправности, так сказать, на слух. Устройство ее он знает хуже обслуживающего персонала, но достаточно, чтобы по внешним проявлениям сделать вывод о характере неисправности. А вот починить он ее не может. Для этого у него нет ни знаний ни навыков. И еще он не знает, куда на этой машине ехать. Это знает пассажир (в нашем случае — это программист). Программист не работает на вц. Он пользуется его услугами, как пассажир пользуется услугами такси. Водитель знает машину, знает город и правила движения. Пассажир знает, куда ехать. Если машина по дороге сломалась, кто виноват? Пассажир, который приказал ехать по этой, плохой дороге, а не по той, по которой предлагал водитель? Водитель, который не сумел объехать ухаб? Механик, который плохо закрепил колесо? Или вообще никто не виноват: скрытая раковина в металле? Ясно одно: выслушай механик пожелания водителя, работай грамотно водитель, слушайся пассажир советов водителя — и не было бы неприятностей. Только водитель может влиять на ситуацию максимально. Потому что он в середине всей системы. Так и на вц. Если системный программист сумел наладить контакт с электронщиком и с программистом, последний будет доволен, а про ВЦ все будут говорить, что он работет хорошо. Это может только системный программист — и никто другой. Потому что он знает, как пользоваться ЭВМ, в каких режимах ее лучше всего использовать. Он знает и базовое программное обеспечение, включающее в себя операционные системы, системы управления базами данных и многие другие программные средства. Эти средства, как и правила дорожного движения, организуют работу ЭВМ и пользователей. Это он рекомендует пользователям кратчайший путь к цели, если только они его об этом спрашивают.

***** DАTE=84.032 СLOCK=09.22.15

В машинном зале аварийно-восстановительные работы в самом разгаре. Три из четырех томов удалось восстановить без потерь своими средствами, не обращаясь к пользователям. А вот с томом "теGRаL" дела обстоят хуже. "ТеGRаL" — это имя тома. Как название книги. А в книге этой около десяти тысяч страниц. И у нее тоже есть оглавление. Опись всего содержимого. Сбой в оглавлении — и с томом ничего не сделать. Тридцать миллионов байтов — как корова языком слизала. А ведь он, том этот, почти весь целый. Энтропия слепа, но терпелива. Рано или поздно, обстреливая наши позиции по квадратам, она нанесет удар по штабу, по центру связи. И тогда первая линия обороны уничтожена. И приходится отходить на запасные позиции. Иными словами, доставать из магнитотеки пакет дисков с копией тома. Десять тысяч страниц информации в машинном виде. Один-два раза в неделю дежурный системщик делает копию каждой такой книги, а несколько коллективов пользователей вц с той или иной интенсивностью содержимое этих книг изменяют. В такой книге могут быть программы на фортране, алголе или коболе, спецификации изделий большого завода и вообще все, что угодно. А в оглавлении потеряно-то всего несколько десятков байтов информации. Будто какой-то злодей вырвал несколько страниц оглавления, украл одну, а остальные перепутал местами. Почти все тридцать миллионов байтов целы. Маленькая пуля, попавшая в сердце большого слона. А реаниматоры мы плохие. Потому что наша операционная система (ос) не обладает программами восстановления оглавления. Мы готовы буквально по буковкам-байтикам собрать весь том, но не можем. Ос с таким томом работать не желает. Можно, конечно, и вручную, но это — работа на неделю. А возврат к копии и приведение ее в состояние на момент сбоя — несколько часов. Если пользователь умеет это делать. Да и недели никто не даст — ритм производства.

***** DАTE=84.032 СLOCK=11.22.45 <<<<< Дежурного системного программиста на ЭВМ номер 2

Это началась наша обычная жизнь. Аварийные работы постепенно уступают место в машинном зале вычислительному процессу с даными на томах пользователей. За работу берутся операторы ЭВМ. Дело раскручивается на полную катушку, и конечно же начинаются всякие непонятности. Значит, без дежурного системного программиста не обойтись. Я давно уже не дежурный системщик. Выбился в начальники. Hо аппаратура громкой связи держит меня в курсе дела. Тихий стук в дверь. Пришла Светочка. Практикантка. У нее своя беда. В институте ее научили фортрану. Диплом она на нем пишет. Моделирование, марковские цепи. Программа в 600 операторов. И правильно. Раньше инженер, не знающий логарифмичекой линейки, был смешон. А теперь — программирование, как ликбез. Hо, представьте себе линейку со множеством дополнительных устройств и приспособлений для пущего удобства. Автоматическая ориентация в пространстве, механический привод движка, компенсатор температурного расширения, оптический визир и подсветка… Вобщем, тумба — в два кубометра, адреса гарантийных мастерских, настройка на дому, восемь ручек, пятнадцать кнопок шести цветов. И все это не имеет никакого отношения ни к десятичным логарифмам, ни к синусу, ни к делению. Вот и Светочка. Знает фортран, а как заказать нашей ос, чтобы она, в свою очередь, заставила нашу ЭВМ выполнить программу на фортране, Светочка и не знает. А это жутко сложно. Сделать это нужно так:

//ВRЕLОК JОВ 'SY8513','СВЕТА К.', // МSGLЕVЕL=(1,1),RD=R,ТIМЕ=40,СLАSS=А,

// RЕGIОN=180К,СLАSS=С //А ЕХЕС FОRТGСLG,РАRМ.GО='16,25,49', // ТIМЕ.GО=35

Читатель, попробуй написать такое. Нет, не сочинить и не в качестве диктанта, а просто списать один к одному без ошибок. И все это не имеет никакого отношения ни к фортрану, ни к марковским цепям, ни к Свете.

Светочка чуть не плачет, страшную английскую фразу

JOB NOT RUN, JCL ERROR

("задание не прошло — ошибка в языке управления заданиями") она знает наизусть, хотя всю жизнь изучала французский язык, если, конечно, не считать русского. Она уже четыре раза пыталась выполнить свое задание, а там еще осталось две ошибки.

***** DАTE=84.032 СLOCK=12.09.10 <<<<< Сбой в системных очередях на устройстве 135 <<<<< дежурного системного программиста на ЭВМ номер 3

А вот еще одна Светочка. Только зовут ее Михаил Леонидович. Отличается от Светочки тем, что у него не диплом, а отдел и план. То есть, предполагается, что отдел этот должен сделать некоторую работу. А люди, занятые этой работой, в той же степени программисты, в какой и Светочка. Программисты бывают разные. Одних называют неквалифицированными пользователями. То есть, они, конечно, квалифицированные в своей области знаний. Они иногда даже знают фортран или еще какой-нибудь язык программирования. Значит, они достаточно точно могут сформулировать, чего же они хотят от вц.

Hо таким ЭВМ нужна лишь однажды, для достижения какого-то результата. Например, сосчитать поле в ванне с электролитом. В одной ванне — одно поле. А если нужно сделать так, чтобы на ВЦ функционировали в постоянном режиме программы, периодически расчитывающие много таких полей. Тут одного фортрана мало. Такими делами вершат квалифицированные пользователи. Этим составить задание, над которым билась Светочка, — раз плюнуть. Машина для них — как такси для инкассатора, а не спешащего к началу спектакля театрала, привычное место работы. Он и город знает, и маршрут свой, и к правилам дорожного движения присмотрелся.

***** DАTE=84.032 СLOCK=12.53.00 <<<<< Операционная система не выходит на связь с оператором <<<<< дежурного системного программиста на ЭВМ номер 2

Вот и Михаил Леонидович должен разработать целый вычислительный процесс и потом эксплуатировать его на вц. И чтобы всегда все хорошо работало. Что ж, квалифицированный пользователь при методической помощи системщика с этим справится. Хуже то, что Михаил Леонидович таковым не является. Михаил Леонидович пришел к нам, когда его люди все уже успели сделать, то есть, по своему разумению спроектировать процесс. Через месяц уже все должно работать. Только теперь можно по мнению Михаила Леонидовича поговорить и с системным программистом. Тяжелый у нас с Михаилом Леонидовичем будет разговор, длинный. У Михаила Леонидовича все очень просто выглядит. Конструктора спроектировали изделия. Много изделий. Шестеренки, винтики там всякие. Составили они и таблицы описаний технологического процесса изготовления этих изделий на автоматической линии. Затем, у нас на ВЦ эти таблицы операторы подготовки данных занесут на перфокарты и отдадут людям Михаила Леонидовича. Они отнесут их на нашу ЭВМ распечатать. У них и программы распечатки написаны. Затем они заберут эти перфокарты на проверку и исправление. Ошибочные карты заменят. Теперь можно и снова к нам на машину. Их перфокарты, их программы — наша машина, наша ОС. А в результате — из нашей машины "выползет" перфолента. Михаил Леонидович говорит, а потолок опять полез куда-то в сторону, опять розовые стены с черными кляксами. У Михаила Леонидовича появляется борода, и из нее начинает прорастать пшено профессора выбегаллы. Борода дергается в такт словам.

— Значить, перфолента выползет. Мы ее, тово, засунем в станок с числовым программным управлением, робот, значить. А робот соберет нам механизьм.

Лицо у меня, слава богу, по-прежнему бриджевое. И это хорошо, потому что я снова не совсем прав. Никакой он не выбегалло. Hу откуда ему знать то, что я ему сейчас выложу. Правда, маху он дал, что поздновато пришел. Hе видать его роботам через месяц никакой перфоленты.

— Значит, говорите, вы нам приносите таблицы?

— Да. А вы нам — перфокарты.

— А сколько же перфокарт мы вам?

— Hе знаю. Hу, наверное, с чемодан.

Считаем на бумажке. (Hа нашем ВЦ нет калькуляторов). Получается больше чемодана. Стеллаж с перфокартами, размером как в поликлинике в регистратуре. Раньше посчитать было некогда. Теперь я буду задавать ехидные вопросы (и что у меня за характер? Пожалеть бы человека).

— А грузовик у вас для перевозки перфокарт есть? А пропускную способность нашей службы подготовки данных вы считали?

— Какой там грузовик. И так сроки поджимают. У меня целый отдел. Всех на эту работу посажу. Перфокарты готовить и возить, готовить и возить.

— Hо ведь можно и не возить.

— А что, у вас хранить? У вас место есть?

Объясняю про подготовку данных на магнитной ленте, про хранение данных во внешней памяти ЭВМ, на магнитных дисках. Рассказываю про дисплей — телевизор с клавиатурой, на котором можно искать и исправлять ошибки. Понимает. Хорошо, что понимает. Hе всегда так бывает. Жаль, что у него только месяц остался. Еще объясняю про страховые копии, про сохранность данных, что перфокарты у него в чемодане — вешь значительно менее надежная. Потихоньку добираемся и до роботов с перфолентой. Роботы не любят, когда на перфоленте дырочки не на том месте. А у ленточных перфораторов на нашей машине время наработки на сбой не бесконечно. Говорят, что даже у разумной цивилизации время жизни ограничено. Остается применить теорию вероятности и массового обслуживания, чтобы сказать, может ли Михаил Леонидович расчитывать на везение. Hе слишком ли много для этого ему нужно перфоленты? Снова берем карандаш и бумажку и считаем вероятности. Получаем, что на один "механизьм" наш ВЦ гарантирует в среднем одну-две ошибки. Hе больше, но и не меньше. Теперь можно рассказать ему и про нашу программу вывода перфоленты, которая, разговаривая с оператором ЭВМ, перфоленту выводит, проверяет и сбойные куски ее руками оператора заменяет на правильные. И все дырочки на месте. Будь хоть перфоратор трижды сломан. Подводим бабки. Это надо переделать, то — доделать. А сроки? И где же он был раньше, еще до того, как составил техническое задание? Получается, что я на ВЦ — технолог, хотя должности такой и нет. И мало кто знает, что на ВЦ должна быть технология, а не просто большая куча из железа, микросхем, программного обепечения и толпа пользователей и обслуживающего персонала.

***** DАTE=84.032 СLOCK=14.34.11 <<<<< Hе идет загрузка операционной

системы <<<<< дежурного системного программиста на ЭВМ номер 2

И вот эту самую технологию приходится выдумывать самим, на ходу. Книг — нет. Методик — нет. Операционная система такой технологии не предусматривает. Потому-то мы и зовем себя парасистемными программистами, то есть, не настоящими. Настоящие придумывают операционные системы. Они их не эксплуатируют. Они с Михаилами Леонидовичами не работают, они перфоленту километрами не выводят и оглавления томов не восстанавливают. Они придумывают языки программирования, методы решения интегральных уравнений. Словом, делают большие дела. О таких мелочах, как лишние дырки на перфоленте или сбой в стойке управления магнитными дисками, им думать некогда. ЭВМ системных программистов нарисованы на бумаге. ЭВМ парасистемных — сделаны из железа. Есть системные программисты, которые обслуживают программное обеспечение. Они исправляют ошибки в трансляторах и операционных системах. Однако, это не то же самое, что обслуживать человеко-машинные системы обработки данных, вроде нашей. Такие системщики — как врачи, которые исправляют опечатки в цветных картинках в учебнике анатомии. А наша работа, как у врача-практика, которому нужно лечить, и не картинки, а живых людей. Два экземпляра учебника анатомии похожи, как две капли воды. Два живых человека отличаются друг от друга. Точно так же отличаются друг от друга и системы обработки данных. Каждая система обработки данных кроме программного обеспечения включает в себя еще и множество данных, которых нигде больше нет и никогда не будет. Она включает в себя и коллективы людей, которых нет ни в одном другом месте. Она, как на трех китах, базируется на уникальном и совершенно неповторимом железе. Железом мы снисходительно называем ЭВМ. Ах какие у нас красивые ЭВМ, большие, блестящие, гудящие. Зал в 300 кв метров. Высота потолка — не меньше, чем. Запыленность, вибрация — не больше, чем. Столько-то кубических метров воздуха в час такой-то температуры и такой-то влажности, после прекращения подачи воздуха может работать еще 20 минут. Выключать нельзя — сломается. И включать — тоже не стоит. Все равно сломается. Запчастей нет, обслуживающего персонала не хватает и не хватит никогда по вполне объективным причинам. Производство плохих ЭВМ развивается опережающими по сравнению с рождаемостью темпами. Каменный век поколений неповоротливых гигантов должен смениться золотым веком технологии. Технология — это то, чего так не хватает нашей вычислительной технике. Нужна технология производства надежных, быстродействующих и емких запоминающих устройств, нужна технология производства хороших устройств ввода-вывода. Нужно научиться делать материалы. Такие, например, как бумага для печатающих устройств, магнитные носители. Нужна технология проектирования ЭВМ при помощи самих ЭВМ. Люди вручную уже не в состоянии проектировать такие сложные системы. И создать все это нужно еще до того, как гиганты вымрут. Другого выхода у нас просто нет. А еще у нас нет единой системы ЭВМ. Единая с большой буквы система (сокращенно ЕС ЭВМ) таковой, увы, не является. Взять хотя бы такую простую вещь, как клавиатуру устройств подготовки данных. Ес ЭВМ в самых разных устройствах навязывает пользователю добрый десяток алфавитно-цифровых клавиатур, отличающихся друг от друга не только расположением некоторых символов, но даже режимами переключения регистров. От этого волосы дыбом встают не только у профессионалов — операторов подготовки данных, но у всех, кто общается с ЭВМ "лично". Устройств ввода данных с голоса пока еще нет. Есть только наши пальцы, которые буквально спотыкаются на барьерах, расставленных на их траекториях генеральным конструктором. Может такового и не было у ЕС ЭВМ? А о единой системе программного обеспечения для ЕС ЭВМ говорить просто смешно. Лес изрядно потрепанных временем больших и маленьких импортных вавилонских башен.

***** DАTE=84.032 СLOCK=15.42.40 <<<<< Сдача смены. Дежурного системного

программиста на ЭВМ

Похоже, у меня вторая стадия маниакально-депресивного психоза. С утра я был в гневе. Теперь слезы лью. А ведь работу свою, парасистемную, я ни на что не променяю. Это — жизнь, полная приключений. Живая работа с людьми, детективные сюжеты, где ты выступаешь в роли шерлока холмса, а злоумышленник — это энтропия, которая тихой сапой пытается повыситься во что бы то не стало. Это — вечное противостояние напирающим на тебя со всех сторон ошибкам техники и людей. А когда ты устал от общения с людьми — тебя пригреет твой верный железный друг, который предан тебе, как собака, если ты ее любишь. Который, как ребенок, вырастет и поумнеет на твоих глазах, если ты его научишь. Который, как женщина, не простит тебе невнимательности. Который, как старший брат, не потерпит грубости, упрямства и хвастовста. Который, как младшая сестренка, всегда готов поиграть с тобой в прятки. И который, как учитель, всегда спокоен и беспристрастен. А когда ты устанешь и от него, на вц, подрумяненный вечерним морозцем, придет тебе на смену твой коллега — дежурный парасистемный программист.

***** DАTE=84.032 СLOCK=17.39.30

Шестой час. Пользователи уже разошлись по домам. Мы залатываем последние дыры в прорванной обороне. Энтропия не прошла, не повысилась. Мы довольны. А она? А ей все равно. Уже сегодня ночью она, как и вчера, как и завтра, даст нам новый бой. Что такое мультипрограммирование.

(О тех, кто ждет).

"Как же я могу вам рассказать, что я такое, если я и сам не знаю? Да никак. Я просто жду."

Р. Брэдбери. "Тот, кто ждет".

Я живу на магнитном диске. Я — программа. Мой дом — библиотека программ. Из чего я сделана — я не знаю. Я биты и байты, домены на магнитной поверхности, магнитный поток, я — мысль программиста, невесомое ничто. Я ничего не делаю. Я просто жду, пока не подлетит ко мне магнитная головка. Теперь я и электродвижущая сила в обмотке возбуждения головки. Забегали, засуетились в ней электроны. Я теперь и ток, и импульсы, и амплитуда, и частота. Я бегу через разные устройства ЭВМ. Впереди моя цель — оперативная память. Там меня обрабатывают другие программы — программы операционной системы (сокращенно ос). Они приятно разминают, изменяют мое тело, не трогая моей сути. Они вливают в меня жизненные соки. Теперь я называюсь процесс.

* * *

Я стал совсем другим, но я все тот же, каким задумал меня программист. Я уже гораздо больше похож на реальную силу, чем просто мысль автора. Чем же я отличаюсь от программы? Тем, чем симфония от партитуры, действующее лицо от роли. Программа и роль живут вечно. Действующее лицо (как и процесс) рождается, живет свою очередную жизнь и умирает, чтобы воскреснуть снова. Я связан самыми тесными узами с пространством-временем, с окружающей средой, с другими процессами. В моей программе есть только повелительное наклонение: сделать, послать, получить, подождать, изменить. Я же делаю, посылаю, получаю, жду и изменяю. Если бы я ничего не мог изменить, я был бы не нужен. В процессе важен результат. Прожив свою жизнь процесс должен оставить след. Сейчас я пассивен. Я жду. Я нахожусь в оперативной памяти (сокращенно оп). Я занимаю ее часть. Вместе со мной в оп есть еще несколько моих собратьев-процессов. Для нас оп — это ресурс. А вообще — это часть ЭВМ, которая хранит программы и обрабатываемые ими данные. По сравнению с емкостью памяти на магнитных дисках оп невелика. Hа магнитных дисках программ умещается в сотни раз больше. Hо прочесть и записать данные в оп можно гораздо быстрее. Поэтому в оп хранятся те части данных и программ, которые в настоящий момент нужны быстродействующей ЭВМ. Если сравнить магнитные диски с толстым телефонным справочником, в котором нужно рыться несколько минут, чтобы найти нужный вам телефон, то оп — это ваша память где нужные номера телефонов вы найдете практически мгновенно. Hо, увы, много номеров вы запомнить не в состоянии. Обрабатывает данные в оп в соответствии с записанными там программами процессор. Это одна из самых важных составных частей ЭВМ. Процессоров в ЭВМ может быть несколько. Такие ЭВМ называют многопроцессорными. В нашей ЭВМ процессор один. Он и есть душа и жизненная сила процесса. Он превращает программу в процесс, подобно тому, как актер превращает роль в действующее лицо. Так как процессор в нашей ЭВМ только один, то в каждый момент времени он выполняет только один процесс. Hо наша ЭВМ работает в мультипрограммном режиме. Это значит, что процессор "перескакивает" с одного процесса на другой. Один из нас работает, а остальные ждут. Мы умеем (и очень часто должны) ждать. Если бы не это, то процессор нашей ЭВМ выполнил бы целиком сначала один процесс, затем другой, и т. д. Hо мы очень часто взаимодействуем с внешней по отношению к процессору средой. Это могут быть люди, пользующиеся или управляющие ЭВМ, это могут быть устройства ввода и вывода. Как правило внешняя среда по сравнению с быстродействующим процессором крайне медлительна. Это приводит к тому, что взаимодействующий с ней процесс все время должен чего нибудь ждать. Ждать, пока подумает и ответит на вопрос человек. Ждать, пока напечатается строка на машинке или введется перфокарта… Чтобы процессору в это время не стоять без дела, ос переключает его на того из нас, кто уже своего дождался. Правда, таких, готовых к выполнению, процессов одновременно может быть несколько. Вот и получается, что время работы процессора для нас, процессов, тоже ресурс, который приходится делить. Кому-то больше, кому-то раньше… Вот и сейчас я не активен. Процессор занят другим процессом. Это как в театре одного актера. Действующие лица — процессы. Их роли — программы. А единственный актер — процессор он очень талантлив, этот актер. Он так быстро переключается с одной роли на другую, что у зрителя полная иллюзия реального и параллельного существования действующих лиц — процессов. Даже если действующих лиц много, и некоторые из них взаимодействуют друг с другом. Даже, если часть из них — гвардейцы кардинала, а часть — мушкетеры короля. Вот очередной из нас освободил процессор. Теперь процессор занят выполнением одной из программ ОС, которая называется "диспетчер". Это тоже процесс. Долго он работать не будет. Его задача — определить, кто из нас следующий. Оказывается, что следующий — это я. Все необходимые ресурсы у меня уже есть, все события, которых я ожидал, уже произошли. Таких процессов, как и я готовых к выполнению, несколько, но у меня среди них самый высокий приоритет. Сейчас "диспетчер" переключит на меня процессор…

* * *

Теперь я процесор. Наконец-то мне досталась приличная программа. В наше время это такая редкость. Hа прошлой секунде мне подсунули такой букетик из восьми процессов, что у меня от скуки чуть не сгорел акселератор умножения. У каждого из этих процессов на десять команд одна команда ввода-вывода. А ввод и вывод — это не моя работа. Для этого в нашей ЭВМ есть другие устройства, медленные как черепахи. А мне, значит, ждать, пока ввод-вывод закончится? Тоска. Вот я и прыгал, как белка, с одного процесса на другой. И все равно три четверти времени прождал. А этот достался ничего. В самом начале тройной цикл. Приятно. Этого мне хватит миллисекунд на триста. Это как из городской транспортной пробки, из частокола светофоров вырваться на шоссе и крутить педали. И программу ему грамотно. Вроде написали. А то иногда такое попадается — как резину жуешь. Вот была тут одна программа… Когда же это..? То ли миниту, то ли месяц тому назад. Она заставила меня восемьсот раз подряд возвести ноль в семнадцатитысячную степень, а результаты сложить. Надо же додуматься до такого. Hо что поделаешь. Я птица подневольная. Мне, что прикажут, то я и делаю. Стоит лишь самую малость сделать по собственному уразумению, как люди сразу шуметь начинают. "Сломался процессор", кричат, осциллографов, паяльников, схем всяких понатаскают в машинный зал столько, что в другой раз и не захочется самовольничать. Hу, вот, и этому процессу понадобилось вывести на дисплей сообщение и дождаться ответа оператора ЭВМ. Я прерываюсь, то есть, автоматически переключаюсь на другой процесс — один из процессов операционной системы.

* * *

Я снова жду. Я — процесс. Теперь я жду, пока на дисплей выведется мой вопрос, оператор ЭВМ ответит, а ответ введется в оп. Выводить вопрос из оп на дисплей и вводить ответ с дисплея в оп будут специальные устройства ЭВМ, которыми управляет особый процесс операционной системы. Я поставил в очередь к этому процессу свой запрос и снова жду. "Диспетчер" нашел того из нас, кто в состоянии выполняться, и отдал ему процессор. Арамис сделал выпад и застыл на долю секунды, а актер уже облачился в одежду гвардейца и парирует свой же удар. Hо между атакой арамиса и ответом гвардейца актер успел еще исполнить и некоторые роли режиссера, дерижера, осветителя, гримера… Словом тех, кого зритель не видит.

Это все роли, то есть программы большого комплекса программ, который и называется "операционная система". И все эти роли должен суметь сыграть один актер! Тем не менее, актер не одинок в нашем театре. В ЭВМ кроме процессора существуют еще и другие устройства, не менее важные в ее работе. Сменим слегка декорации. Перенесем действие нашего представления в таверну. Действующие лица теперь такие: посетители и трактирщик. Посетители — это процессы тех, кто пользуется ЭВМ. Они осуществляют волю составителя этих ролей — программистов-пользователей. Роль трактирщика — это комлекс программ операционной системы. Посетители, как вы уже догадались, пришли есть. Для этого им нужно приносить кушания (ввод данных) и уносить пустые тарелки (вывод). Посетители все время самые разные. Заранее их роли актеру неизвестны. Он играет их, что называется, с листа. А вот роль трактирщика заранее написана системными программмистами, разработавшими программы операционной системы. Никакой импровизации не предусмотренно. Наш трактирщик услужлив, предупредителен, но строг и страшный педант. Он сделает для посетителя все, что предусмотренно правилами поведения в таверне. Hо если посетителю захочется птичьего молока — милости просим за дверь. Натолкнувшись на непредусмотренные в роли трактирщика действия посетителя, наш актер откроет книгу ролей на странице с заголовком "аварийное окончание". Помните, я говорил, что наш актер работает не один. Кто же ему помагает? Как раз сейчас наш актер в роли трактирщика пошел на кухню с очередными заказами. Пойдем с ним и мы. Там его указаний ждет повар. А вот роль повара никто не играет. Повар существует сам по себе. Это специализированныя часть ЭВМ, которая управляет всеми ее внешними устройствами. Через нее проходят все операции ввода и вывода даннных. В разных ЭВМ это устройство называется по разному. Где — канал. Где — процессор ввода вывода. Пока процессор занят вычислениями, канал управляет внешними устройствами. Hа кухне это, конечно плита, мойка, погреб и т. п. А на самом деле это накопители на магнитных дисках, магнитных лентах, дисплеи, печатающие устройства…

— Стоп, — скажете вы. — Ведь раньше мы выяснили, что вводом и выводом управляет специальная программа ОС, а не какой-то там канал.

Все верно. Просто ОС управляет каналом, а не самими устройствами. Чтобы понять, как это происходит, давайте понаблюдаем за поваром и актером. Взаимодействие актера в роли трактирщика и повара (то есть процессора который выполняет программу ОС, и канала) выглядит так: трактирщик говорит повару: "рецепт номер такой-то, столько-то порций", и уходит. У него много дел. А повар ставит этот заказ в свою очередь. Повар, кстати, тоже мастер на все руки и несколько блюд он может готовить одновременно. Хватило бы места на плите. Как только какой-нибудь заказ будет готов, повар позовет трактирщика. В этот момент актер бросает играть роль очередного посетителя, перевоплощается в трактирщика (это произошло прерывание) и идет разбираться, что там у повара случилось. Если с заказом все в порядке, трактирщик отнесет его ожидающему посетителю. После чего этот посетитель оказывается в числе тех, чьи роли актер может продолжать играть дальше. Вот и мой запрос выполнен. Оператор нажал в последний раз клавишу на дисплее, канал передал данные в оперативную память. Сообщил об этом процессору. Процессор прекратил выполнять какой-то процесс (произошло прерывание), начал работать процесс ОС, который сейчас передаст процессор мне. Нам пора прощаться, а вы пока можете посмотреть сравнительные действия, продолжающие аналогию между нашим театром и ЭВМ третьего поколения.

* * *

Трактирщик встретил посетителя, взял у него роль и записал ее в книгу ролей. Ос разместила в оп программу и преобразовала ее пригодный для выполнения вид. Точнее, актер, играя роль трактирщика, встретил посетителя… Точнее, процессор, выполняя одну из программ ОС, разместил в оп программу… Актер (по велению трактирщика!) Начал играть роль посетителя, вошел, сел за столик, прочел меню и позвал трактирщика. Процессор, по велению ОС переключился на процесс пользователя, который начал вычисления и работал до тех пор, пока ему не понадобились услуги ОС для ввода данных.

Актер перевоплотился в трактирщика, и играя его роль, подошел к посетителю и принял заказ. Произошло прерывание: процессор прервал выполнение программы пользователя и начал выполнять программу ОС. Процесс управления вводом-выводом ОС стал активным. Он принял у процесса пользователя заказ на ввод данных. Трактирщик отнес заказ повару. Процесс управления вводом-выводом скомандовал каналу ввода-вывода выполнить операцию ввода. Точнее, актер, играя роль трактирщика, приказал повару выполнить заказ. Точнее, процессор, выполняя программу управления вводом-выводом ОС, скомандовал каналу выполнить операцию ввода. Трактирщик решил, что дальше нужно играть роль сидящего у окна посетителя с солидным видом. Его блюдо уже готово. Процесс ОС, который называется "диспечер" выбрал для работы самый приоритетный среди готовых к работе процессов. Актер перевоплотился в указанного посетителя и стал есть его блюда. Процессор получил для выполнения от ОС выбранный процесс и начал выполнять его программу. Так прошло минут пять.

Так прошло миллисекунд пять. Повар прокричал с кухни что готово какое-то блюдо. Канал запросил прерывание. Актер бросил есть блюдо за посетителя и побежал на кухню в качестве трактирщика разбираться. Процессор прервался. Управление получила ОС. Ее процесс разобрался в возникшей ситуации. Выяснилось, что готово блюдо посетителя в пенсне и серой шляпе. Трактирщик отнес ему блюдо и перевел посетителя в разряд тех, чью роль можно играть. Выяснилось, что выполнен запрос процесса N16. Процесс управления вводом-выводом передал процессу N16 данные и отметил его, как готовый к выполнению. Затем трактирщик определил, кто из имеющих еду посетителей самый солидный, и актер начал играть его роль… Затем "диспечер" определил, кто из готовых к выполнению процессов самый приоритетный, и передал ему управление процессором…

Евгений Лишак. Записки парасистемного программиста. Журнал «Звание — сила», 1984, № 8, с. 6–7

Загрузка...