Журнал "Неформальная наука", 2007-02


Город, который всегда со мной (к 55-летию Ю. С. Черухина)

Черухина С. Е. ()

25/08/2007

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

Юрий Степанович Черухин родился в Керчи в доме недалеко от набережной, в самом центре, там, где сейчас расположен центральный магазин самообслуживания "Фуршет", а раньше, ещё в 2005 году, на том месте был универмаг "Чайка". Окончил сначала восьмилетку, здание школы (в р-не ул. Комарова) в настоящее время передано мечети, затем в старших классах перешёл в другую школу, в которой и закончил 10 класс. Были способности к футболу, по крайней мере, в дальнейшем, участвовал в городских соревнованиях по футболу в команде от предприятия (возможно, было участие и в других видах спорта). Ещё учась в восьмилетке, в каком-то классе победил в городской олимпиаде по математике и географии. В старших классах интерес к учёбе постепенно остыл. Некоторые из его одноклассников не бросили учёных занятий: например, Беляев впоследствии стал зав. каф. высшей математики в одном из вузов Донецка или Днепропетровска, во всяком случае, в одном из городов Восточной Украины.

После школы отец Степан Фёдорович направил его поступать в вуз в достаточно крупный город, возможно, Харьков. Но проучившись некоторое время, Юрий вернулся домой, мотивируя тем, что заскучал по маме. Хотя сразу по прибытию домой пришлось идти в армию. Армейская служба, правда, благодаря связям отца, прошла в Венгрии, где удалось приобрести специальность авиамеханика.

Степан Фёдорович был активным участником ветеранской организации (а м. б., и входил в Правление Совета ветеранов), работая слесарем на заводе. Имел неоконченное высшее образование (учился 4 года). Был женат несколько раз. Участвовал в знаменитом сражении под Эльтигеном. Его воспоминания о годах учения, по видимому, в военном институте - о двух типах лекторов: "фуражка вверх" - значило, что лектору можно задавать вопросы, и "фуражка вниз" - нельзя. Ещё: студенты на лекции по философии интересовались, почему в природе всё так устроено, например, Луна не падает; ответ лектора был таков, что из него следовало положительное решение по поводу существования Бога. Несмотря на запомнившуюся дискуссию, на письменном столе Степана Фёдоровича стоял портрет Сталина. (Хотя почему несмотря? Напомним, что Сталин учился в духовной семинарии.)

После армии отец Юрия Степановича устроил его в аэропорт, где он работал сначала авиамехаником или авиатехником, затем инженером ОТК, начальником смены (в обязанности входило давать разрешение на вылет самолёта), ездил в командировки, связанные с авариями. Например, был такой случай. Раньше в устройстве самолёта были два похожих рычага: один убирает шасси, а другой что-то делает с закрылками. Отчего-то лётчик убрал шасси, когда самолёт стоял, и в результате, аппарат был повреждён, сев на "пузо". В основном, приходилось разбираться с самолётами рыбразведки, ищущими косяки рыб, серии ИЛ-14; тогда ещё, в 80 гг., не было электронного управления (защиты от случайности, или от "дурака"), поэтому и при таких простых случаях комиссии приходилось вылетать для составления соответствующего акта.

В 90-е гг. некие коммерсанты решили установить на лужайке около дома самолёт типа ИЛ-14 в качестве аттракциона и пригласили для обслуживания, как бывшего инженера-механика (к тому времени он получил высшее заочное образование в местном вузе), Юрия Степановича. Выдали полную документацию летательного аппарата, но, по каким-то причинам, он отказался. Возможно, с течением времени что-то подзабылось, не хотелось вспоминать или ещё что-то. Во всяком случае, по словам его сына Дмитрия, что такое теорема Ферма было напрочь забыто, хотя в детстве именно Юрий Степанович рассказал о ней сыну.

В аэропорту сложился круг друзей, выпивающих во время (м. б., в обеденное время) и после работы. Имелись и приключения, связанные с вытрезвителем, по крайней мере, четырехлетнему сыну они запомнились. Но остались в памяти и другие моменты: принесённые плакаты с самолётами, на которые любил смотреть Дима, организованная для 1 класса экскурсия в аэропорт (первоклашкам было даже разрешено зайти в кабину). Благодаря своим организаторским способностям был назначен (правда, недолго проработал) на должности начальника смены аэропорта. В это время появилось особенно много приятелей, так как появилась возможность пробивать какие-то вопросы, связанные с работой: снабжение необходимыми материалами, ремонт и т. д.

Году скорее в 86-м знакомые Беренсон и Могилевич организовали поездки на так называемые "севера": в пос. Нягань Тюменской области строился нефтяной объект (вышка) и, соответственно, инфраструктура к нему. Бригада, в которой работал Юрий Степанович, строила ангары в форме полуцилиндра.

Какая же зарплата была в то время в аэропорту? 120 р. Плюс 40 р. выписывалось супруге Юрия Степановича, Нине Прокопьевне, числившейся инструктором по физкультуре, в чьи обязанности входило проводить производственную гимнастику, которая фактически не проводилась, но зато регулярно проводились спортивные мероприятия (ежегодные заведомо): городские соревнования по различным видам спорта, сдача норм ГТО, ещё что-то. Но поскольку должность инструктора была всё-таки синекурой, в какой-то момент появились товарищи из ОБХСС; Нине Прокопьевне пришлось даже съездить на допрос, так как сумма зарплат, полученная ею, за "формально" не проводившуюся гимнастику, накопившаяся за несколько лет, составляла около 3 тыс. р., но всё, разумеется, было улажено, поскольку деньги у обвиняемой стороны имелись, о чем, конечно, было известно органам ОБХСС, логичным образом решившим воспользоваться имевшимися в их руках фактами правонарушения. Показательна и ещё одна история. В эти лихие "кооперативные" 86-89 гг. заработки были весьма приличными: в месяц выходило по 500 р., один мес. приходился на работу, а другой - на отдых. Как-то раз к жене Ю.С. заявился некий человек, потребовавший несколько тысяч. Оказывается, деньги проигрывались в карты; суммы набегали значительные, так как, пользуясь невнимательностью Ю.С. по причине принятия им алкогольных напитков, приятель Могилевич, по всей видимости, применял шулерские приёмы. Чрезмерное пьянство, нелояльное отношение к начальству (что-то не то сказал), стремление Могилевича устроить на такое хлебное место двоюродного брата - все это привело к потере работы в МНУ (монтажно-наладочное управление).

В семье Ю. С. в это время жизнь идёт своим чередом. Сын Дмитрий учится в музыкальной школе; оркестр, в котором он "солирует", находясь впереди всех из-за недостатка силы удара, на ударной установке (7 барабанов и 2 тарелки), занимает 1-е место по Крыму (весна 1986 г.) в Симферополе, хотя, по его словам, учился средне: сольф., в силу абсолютного слуха, - 5, ф-но - 4, муз. лит. - 4, хор - 5 (позже занятия в хоре были заменены по причине хорошего чувства ритма игрой на барабане в школьном оркестре). Но начинающего музыканта привлекала труба и в 1987 г. начались занятия на альте, затем на трубе с молодым, 27 лет, преподавателем Сергеем Александровичем Вальгузовым - зав. медными и ударными инструментами, которые через некоторое время пришлось прекратить из-за недостатка дыхания.

Тем временем окончательно возвращается в Керчь Юрий Степанович. В 1988 г. в семье рождается второй ребёнок Владислав. Видимо, его рождению способствовали появившиеся свободные деньги, время, т. е. некоторый избыток; организм женщины был готов к рождению нового ребёнка. На жизнь Ю. С. изменения в семье никак не повлияли. Он продолжал пить, в 90-х гг. началась инфляция, ему приходится работать разнорабочим, строителем в бригаде.

В нач. 90-ч гг. Устименко, начальник МНУ на севере, перебрался обратно в Крым, попытавшись организовать производство газированной воды (точнее, цех по производству бутылок) в Щёлкино на оставшихся недостроенными производственных мощностях АЭС. В то время там ещё отдыхали прибалты (1992 г.), видимо, имевшие свой курорт поблизости. Для сотрудников Устименко имелась возможность пользоваться этим отдыхом, о чём, в особенности, о хорошем качестве кухни, с удовольствием вспоминает Дмитрий. Со временем владение собственностью перешло в другие руки, возможно, частично Устименко. В Джубге, около Туапсе, была построена 4-этажная дача для зам. Устименко (организовавший, по всей видимости, новый бизнес поблизости), в строительстве которой довелось участвовать Юрию Степановичу. Позднее в 2000-е гг. в новостях по интернету имя Устименко опять всплыло: пытаясь что-то "провернуть", он устроил какие-то "бизнес-разборки" в Совете Министров Крыма.

Осенью 2001 г. Юрий Степанович устроился начальником ночной смены на склад на московском мясо-молочном комбинате в Рублёво. (Ранее, в 1997-98 гг., он работал в Москве на строительстве МКАД в р-не Медведково. Строительная организация размещалась в д. Манихино, недалеко от Н. Иерусалима. В деревне имел свой дом прораб. Как происходило строительство дороги? По известной схеме, 50 КаМаЗов с песком регулярно каждый день продавались налево. Естественно, про это узнала "мафия", потребовавшая 3 млрд. руб. Это происходило незадолго до денежной реформы. Даже, м. б., и не слишком серьёзно, пыталась поставить на "счётчик". Во всяком случае, какие-то деньги ей удалось получить с прораба.) По его рассказам, мясные изделия: колбасы, карбонад, шейка и т. д. изготавливались из т. н. "стратегических" запасов, привозимых из Южной Америки (Аргентина, Бразилия). Действительно, продукция была совершенно безвкусной. Сам он посылал с нами домой в Крым микояновскую брауншвейгскую колбасу.

Дима вспоминает, что в детстве отец занимался им: велись записи в тетрадь, сколько каких упражнений сделано. Ещё до школы обучил его математике, а в 1 год он уже различал буквы - этому научил дед. Первое впечатление детства - идёт снег, Дима пытается стряхнуть его с лица, неприятно. Ещё более ранние впечатления: 2 года, операция, болезненная.

В 1980-х гг. (до работы на севере) родственники из Евпатории организовали бизнес по производству и сбыту шапок из синтетической шерсти, вырабатываемой в Новополоцке. В задачу семьи Черухиных входило вязать подкладки из синтетического волокна. Одно время вошли в моду брошки-бабочки. Их делали из проволоки, обёртывали тканью, украшали блёстками. (Замечу, в Москве в то время продавались металлические, раскрашенные бабочки, во всяком случае, сделанные по более совершенной технологии, но всё же именно бабочки). Также с 1994 г. возникла, опять по инициативе евпаторийцев, возможность заниматься продажей советских монет в Польшу и привозить взамен этого продаваемый на рынке "ширпотреб". Но экономическое положение в стране становилось все хуже. В дальнейшем денег совсем не стало: Нина Прокопьевна даже предприняла попытку поехать в Турцию с целью заработать, но это не оказалось прибыльным.

Вспомним, что в 80-е гг. Нина Прокопьевна вместе с Юрием Степановичем занимались организацией различных спортивных мероприятий. К сер. 80-х гг. пришла волна увлечения аэробикой. И в 1985 г. в Тбилиси даже прошёл Всесоюзный конкурс городов-героев по аэробике (видимо, идеологически это было связано с 40-летием со дня Победы. Удивительно, но до сих пор к победе в ВОВ или других войнах правительство у нас любит апеллировать во всех случаях, требующих некоей консолидации. Кстати, в этом году грядёт 90-е со дня ВОСР, но этот праздник у нас отменили!) Когда о будущем проведении конкурса Н. П. узнала от Ю. С. (которому, видимо, позвонили из горспорткомитета, зная, что его жена давно занимается танцами), то ей пришла в голову идея послать заявку о выставлении на конкурс своего танцевального коллектива, где она занималась танцами в Д/к з-да им. Войкова у хорошего профессионального педагога. Руководительница кружка быстро придумала соответствующую программу по аэробике. В городе были и другие секции, по ритмической гимнастике, например, при з-де "Залив", которой руководила Мельгунова. Но эту информацию от всех других потенциальных участников утаили. Капитаном команды от Керчи была, естественно, Н. П. Уже в поезде ей удалось настоять на дополнительном номере на известную грузинскую мелодию "Сулико", благодаря которой команда получила приз зрительских симпатий. На следующий год Н. П. организовала такой конкурс в Керчи среди местных команд, где назначила себя на должность главного судьи, но, по сути, кроме забот по организации изготовления призов и т. д., на самом конкурсе взяла на себя роль ведущей и в самом голосовании просто не участвовала, тем самым, поскольку жюри присудило приз команде Мельгуновой, по уровню, очевидно, ниже команды Войкова, вызвавши законное негодование её худ. руководительницы.

Благодаря инициативе мамы Димы, его приняли в престижную, даже лучшую, спецшколу города. Хотя с двумя заданиями при поступлении он справился прекрасно, с одним вышла заминка. Интересны его воспоминания об этом. На картинке изображены дети, играющие в мяч. Вопрос: что делают дети? Реакция ребёнка - молчание. Оказывается, для него это чужеродная ситуация. Дети не возьмут играть с собой. Почему? Не сложилось. Не хочу, не умею общаться с другими, как все! Клубок взаимосвязанных вещей. Полный ступор. (Очень хорошо помню свою похожую ситуацию в начале первого класса. Задано домашнее задание: составить рассказ о том, что изображено на картинке. Смотрю и вижу клубок взаимосвязанных вещей, настолько плотно увязанный, что для меня он просто сливается в одно целое, рассказать о котором просто немыслимо. Всё связано со всем. Не за что уцепиться. Неясно, с чего начать. Полное ощущение, что ты внутри динамичной картинки, которая всё время меняется. И кажется, что ничего не видишь и не понимаешь. Реакция - слёзы. Удивительная вещь - детское воображение. Неразличение реального и нарисованного, вымышленного.)

Хотя описанный случай весьма формально связан со зрительными способностями, скорее с особенностями восприятия (замечу, что и у меня к 7 годам зрение стало ухудшаться, правда, в сторону близорукости. Говорят, что это м. б. связано с тем, что каких-то вещей человек просто не хочет видеть. Про себя могу сказать, что, действительно, очень многих вещей в своём детстве я видеть совершенно не желала и, наверное, не видела), но дальнозоркость действительно была, и для улучшения зрения летали на Як-40, а затем уже поездом, в Одессу в Институт глазных болезней. Лечение длилось с 4-х до 10-ти лет и заключалось в тренировке глазных мышц или ещё чего-то: для этого показывались фигуры, которые засвечивались, мелькали или мигали. В результате, от этого или другого, зрение улучшилось с +6 до +4 диоптрий. Заметим, что в 90-е гг. для освобождения от армии требовалось иметь не менее +7, для этого пришлось немного увеличить истинное значение. Сейчас же норму увеличили ещё на +1.

В молодые годы родители достаточно много путешествовали, ездили в Ереван, Норильск, просто по Крыму. Сын в это время оставался с бабушкой, у которой вообще любил ночевать. У неё можно было уединиться, заниматься "своим": рисовать, сочинять, решать задачи, мечтать. С бабушкой Верой играли в лото, карты, ездили в Ейск за рыбой для торговли на рынке, в Тамань за черешней, которую помогала продавать знакомой, тёте Варе, бабушка. Рассказ наш подходит к концу. Можно добавить, что Ю. С. и сам был очень привязан к матери, да и, вообще, несмотря на его образ жизни и тягу к друзьям, семья и семейные отношения играли и продолжают играть для него значительную роль. А также и сам город Керчь, в котором он родился и вырос, и который он в чём-то считает своей собственностью. "Город, в котором я живу" - так, по крайней мере, вспоминая известный к/ф, он мог бы сказать о Керчи и всей своей жизни, связанной именно с ней.

[Записано 28.07.07 со слов Д. Черухина, набрано, отредактировано и окончательно дополнено 02.09.07 С. Черухиной.]

P. S.

Собственно, можно было бы, как и заявлено в аннотации, ограничиться перечислением жизненных фактов. Но, возможно, кому-то это жизнеописание покажется сейчас достаточно случайным и очень нехарактерным. Могу заверить, что по большому счёту, эти хаотические и в то же время обыденные случаи очень характерны для жизни людей, а какие-то вещи весьма связаны с тогдашней жизнью. Напомню, что жизнь Ю. С. по-существу началась в эпоху застоя. Это была очень простая, понятная жизнь, даже в чем-то лёгкая и весёлая. (Не все знают, но цены на нефть в сер. 70-х были примерно в 2 р. выше, чем сейчас.) Многие и сейчас скучают по ней. Можно было особенно не напрягаться - на еду более-менее хватало. А вот какие-то серьёзные формы деятельности не поощрялись - да, самодеятельность, спорт, космос, наука, соревнования с капиталистическим способом жизни - это всё замечательно. Такой творческий, игровой подход. Думать о хлебе насущном было как-то странно, не принято. Да и вообще о будущем? Стоило ли? Ясно же, что "думай-не думай, а 100 р. не деньги", ничего не изменится. По поводу работы - запомнилось воспоминание одной знакомой о первом дне работы - вопрос отцу: "Что же? Я так ничего на работе и не буду делать?" Ответ: "Привыкай". Не все могли привыкнуть.

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

(C) Черухина С. Е., 2007

На начало статьи : К аннотациям номера : На основную страницу

Операционная система DuS

Черухин Д. Ю. ()

26/08/2007

В статье рассказано о новой операционной системе для персональных компьютеров - DuS, написанной автором "с нуля". Отражены предпосылки для её создания, история создания и основные черты. Также рассмотрены вопросы принципиальной возможности написания нестандартных операционных систем и высказаны некоторые соображения относительно будущего персональных компьютеров.

Начну с шуточного вступления. Позвольте выразить благодарность двум людям, без которых написание операционной системы (ОС) DuS было бы практически невозможным. Первый из них - Билл Гейтс, основатель фирмы Microsoft, выпускающей ОС Windows, благодаря усилиям которого архитектура PC (Personal Computer, IMB-совместимые ЭВМ на базе процессоров Intel) де-факто стала единственной архитектурой персонального компьютера. Это позволило при создании ОС ориентироваться на конкретный тип ЭВМ, что значительно сэкономило усилия. Второй человек - это Линус Торвальдс, создатель ОС Linux, благодаря усилиям которого Windows не стала единственной ОС персонального компьютера, что открыло двери для создания множества альтернативных систем, одной из которых является DuS.

По-видимому, следует прояснить некоторые высказанные тезисы. Ещё в мои студенческие годы существовало несколько равноправных архитектур персональных компьютеров. Помимо PC, это были семейство Apple (наиболее известный представитель - компьютер Macintosh, обладавший, по слухам, мощной для того времени графической оболочкой), а также семейство PDP/Vax (в СССР на этой базе выпускались компьютеры ДВК), на которых, как правило, устанавливались серьёзные операционные системы, вроде Unix, обладающие многозадачностью и многопользовательской защитой.

В то время на компьютерах семейства PC господствовала ОС DOS, которая не позволяла компьютерам PC равноправно конкурировать ни с Macintosh из-за отсутствия в DOS графической оболочки, ни с PDP/Vax, так как DOS была примитивной (однозадачной, однопользовательской) системой. И только с появлением Windows (а, может быть, с последовавшим за этим распространением Интернета), объединившей в себе и графические возможности и многозадачность, а кроме того, успешно коммерчески построенной (ориентированной "на домохозяек"), архитектура PC стала преобладать над всеми остальными и в настоящее время стала практически единственной (мы говорим только о персональных компьютерах).

Отмечу, что в последнее время Windows всё больше и больше теряет статус системы "для рядовых пользователей". Так, автору удалось в полной мере освоить Windows-98, а во всех последующих версиях Windows возникали те или иные проблемы, или на уровне установки системы (как случилось с Windows-2000 или Windows-Me), или на уровне настройки таких рядовых вещей, как работа с принтером, или доступ к Интернету (как случилось в Windows-XP). По поводу последней версии Windows - Vista - высказываются мнения, что она ещё более далека от понимания пользователями. Более того, переход на Vista вовсе не выгоден пользователям, а их буквально вынуждают использовать новую систему, например, тем, что на новые компьютеры устанавливается только Vista, или же новое оборудование поддерживается только в этой ОС, или же новые программы (особенно игры) пишутся исключительно для Vista.

Налицо имеется сговор большей части IT-индустрии, направленный на получение прибыли в ущерб потребителям. Более того, тенденция, по-видимому, состоит в том, что, захватив монополию за счёт ориентации системы на пользователя, в дальнейшем, эту ориентацию постепенно менять на противоположную, т. е. создавать всё более и более сложные системы с тем, чтобы пользователь не мог самостоятельно их обслуживать. Обслуживание систем (например, установка программ или оборудования) должно при этом превратиться в самостоятельную сферу бизнеса, возможно, подконтрольную той же фирме Microsoft.

Таким образом, персональный компьютер, бывший роскошью в XX-м веке и ставший обычным явлением в начале XXI-го, в дальнейшем, может снова переместиться в разряд "роскоши", оставив взамен себя приборы с ограниченными возможностями, например, многофункциональные мобильные телефоны, интернет-приставки, офисные и бытовые центры и т. д. Рядовому пользователю, впрочем, больше и не нужно, а вот, например, учёному для того, чтобы выполнить расчёт, придётся, возможно, тратить большие деньги на приобретение универсального компьютера.

Изображённой нами антиутопической картине компьютерного мира мешает (в настоящее время) осуществиться одно обстоятельство: фирма Microsoft не обладает в полной мере монополией на производство операционных систем. Существует альтернативная ОС, занимающая небольшие, но достаточно прочные позиции на рынке - Linux, а значит, производители оборудования и программ хоть в некоторой мере будут ориентироваться и на неё, что исключает неограниченную коммерциализацию всей компьютерной индустрии.

Для некоторых пользователей существование операционных систем, альтернативных Windows, является неожиданностью, и они удивляются, почему при нажатии кнопки "Windows" на клавиатуре не появляется знакомое меню. Поэтому напомним некоторые базовые вещи. В начале работы компьютера запускается BIOS - набор программ, записанных в постоянную память данного компьютера (а потому, неизменный: BIOS не надо устанавливать, он установлен на компьютере при его изготовлении). BIOS проверяет работоспособность компьютера, а затем передаёт управление загрузчику, записанному на жёстком диске (информация на жёстком диске может меняться). Загрузчик передаёт управление одной из операционных систем: определённой по умолчанию или же указанной пользователем.

"Заветной мечтой" фирмы Microsoft было (и, возможно, остаётся) сделать так, чтобы Windows стала единственной ОС. Этого можно добиться, например, договорившись с производителями BIOS'а о том, чтобы какие-то части Windows записывались в постоянную память компьютера и загрузка других операционных систем была бы невозможной. Осуществлению этой мечты помешало, по-видимому, лишь своевременное появление Linux, получившей достаточное распространение, настолько, что производители BIOS'а в настоящее время уже не могут её игнорировать (например, фирма IBM, основоположница IBM-совместимых компьютеров, в настоящее время ориентируется на Linux). А поскольку существует хотя бы две несовместимые операционные системы, то BIOS не может знать заранее, какая из них будет загружена. Поэтому поддерживается некоторый общедоступный протокол загрузки системы, следуя которому, можно создать собственную ОС, отличную как от Windows, так и от Linux. Именно такова система DuS, к описанию которой мы сейчас переходим.

Работа над DuS началась в конце апреля 2004 года и продолжается, с перерывами, по сей день, поэтому приведённое ниже описание системы нельзя считать окончательным. Предпосылками к написанию собственной ОС явились как и абстрактное желание написать свою систему, выражавшееся ранее в написании интерпретаторов различных вычислительных сред, так и невозможность разобраться в тонкостях существующих ОС с тем, чтобы приспособить их к своим потребностям. Конкретным поводом к написанию DuS явилось желание работать на ноутбуке (Fujitsu, 1996 г.) в текстовом режиме, но не с таким маленьким экраном, как это позволяли системы DOS/Windows. Дело в том, что при переходе к полноэкранному режиму в сеансе DOS (в ОС Windows) рабочее окно занимало не весь экран, а только центральную его часть, и чрезмерно мелкий шрифт создавал неудобства в работе (так как ЖК-монитор состоит из отдельных точек, то изображение на нём нельзя пропорционально увеличить; в современных мониторах это возможно, но если точки не соответствуют точкам, то шрифт получается нечётким).

Поэтому вначале я решил написать небольшое ядро, запускаемое из DOS (у Windows-98 есть возможность работать как DOS в реальном режиме процессора), самостоятельно переводящее процессор в защищённый режим и позволяющее запускать другие программы c минимальным набором функций. В качестве других программ предполагалось в первую очередь написать драйвер VESA-видеорежимов и текстовый редактор с тем, чтобы набирать тексты, работая со всем экраном и со шрифтом приемлемого размера. Эта программа-минимум была успешно выполнена в течение нескольких месяцев, и с той поры система поступательно развивается, расширяя свои возможности. Следует отметить, что в данный момент я набираю этот текст за тем же самым ноутбуком, практически на том же самом текстовом редакторе; первоначальное ядро и VESA-драйвер изменились также не очень сильно. Однако здесь уже нет ни DOS, ни Windows. Более того, нет жёсткого диска (сломался год или два назад, видимо, в процессе отладки его драйвера). Система держится постоянно в памяти за счёт умения ноутбука "засыпать", и с момента последней перезагрузки прошло уже 4 месяца.

Название для системы - DuS - предложила Светлана Черухина, когда я её попросил придумать название системы и сосчитал до трёх. В названии DuS отражены, с одной стороны, инициалы Д. (Дмитрий) и C. (Светлана), а с другой стороны - сходство (или противоположность) с DOS. Действительно, у DuS и DOS есть общие черты: при создании формата программы для DuS я ориентировался на самый простой из известных мне образцов - com-файл для DOS. Кроме того, в DuS имеется эмулятор DOS (использующий режим виртуального процессора 8086), поэтому можно запускать программы для DOS. Например, на этом ноутбуке установлена издательская система emTeX для DOS (TeX создан самим Дональдом Кнутом), с помощью которой создаётся журнал "Неформальная Наука". Следует отметить, что в отличие от DOS, DuS является 32-х разрядной многозадачной многопользовательской системой (не будь многопользовательской защиты, я бы за 4 месяца, наверно, стёр что-нибудь важное из системных файлов; однако у меня нет такой возможности, так как я постоянно работаю как рядовой пользователь dima, а изменять системные файлы может только администратор root, пароль которого гораздо сложнее).

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

Система DuS изначально создавалась с точки зрения программ, т. е. принципы, которые были в неё заложены, в первую очередь касались того, что из себя представляет отдельный процесс (т. е. выполняемая программа) и как он взаимодействует с другими процессами. Лишь в последствии, в основном стихийно, т. е. без теоретической проработки, возникли некоторые черты DuS как системы с точки зрения пользователя. Можно сказать, что система постепенно подстраивалась под своего единственного пользователя, т. е. меня. Следует отметить, что движение в направлении осовременивания пользовательского интерфейса DuS будет, видимо, продолжаться, поэтому говорить об этой стороне системы пока преждевременно. В данной статье мы сконцентрируемся на описании DuS на низком уровне, т. е. на уровне процессов.

В основу DuS положена идея относительности среды процесса. Систему Unix (и её "правопреемницу" - Linux) можно представить следующим образом: имеется центральный процесс - ядро - которое держит власть в своих руках, и есть множество других процессов, равных друг другу по положению и отличающихся только правами пользователей, их запустивших. В системе DuS картина иная: процессы выстроены в иерархию. Каждый процесс может как угодно ограничивать права на доступ к ресурсам (в частности, закрыть совсем) для тех процессов, которые он порождает. Другими словами, процесс занимает по отношению к своим потомкам то же положение, которое в Unix ядро занимает по отношению ко всем процессам.

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

Следствием относительности среды процесса является отсутствие системных функций. Обычно в ОС часть функций берёт на себя система (под системой понимается ядро и близкие к нему процессы, обладающие привилегированным положением). Например, чтобы вывести символ на экран, или прочитать файл, или узнать время - процесс вызывает ту или иную системную функцию. В DuS понятие системной функции принципиально отсутствует, т. е. ни одному процессу не гарантируется, что он может вывести символ на экран, или прочитать файл, или узнать время. Другими словами, процесс не обладает (как данностью) связью с системой, а через неё - с внешним миром.

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

Слово "аргумент" имеет следующее объяснение: процесс можно рассматривать как функцию, на вход которой поступают сервисы (аргументы этой функции) и которая на их основе создаёт новый сервис. Всю систему DuS можно представить в этой связи, как схему из функциональных элементов. А именно, процессы соответствуют вершинам графа (элементам), аргументы данного процесса соответствуют рёбрам, входящим в вершину. Каждое ребро исходит из некоторой вершины - элемента, соответствующего другому процессу, или входа схемы, соответствующего ядру системы DuS. На выходах схемы реализуется ряд итоговых сервисов, которые непосредственно доступны пользователям.

Приведём пример. Допустим, нам нужно написать программу, которая выводит на экран восклицательный знак '!' (мы упростили задачу; обычно требуется вывести строку "Hello, world!"). Для вывода на экран нужно обратиться к тому аргументу, который назначен нашему процессу под номером 1 (аргумент номер 0 служит для ввода данных с клавиатуры). Для того, чтобы вызвать аргумент, нужно в регистр eax поместить номер функции, в регистры ebx, ecx, edx, esi и edi - другие параметры (аргументу также передаётся сегмент ds) и выполнить дальний вызов:

        call    (N*32+68):0
где N - номер аргумента. В данном случае N = 1, поэтому N * 32 + 68 = 100.

Чтобы вывести символ на экран, нужно вызвать функцию номер 5 данного аргумента, поместив при этом символ в регистр ebx. Итак, в простейшем случае наша программа на Ассемблере (в нотации fasm) будет выглядеть так:

        use32
        mov     eax, 5
        mov     ebx, '!'
        call    100:0
        iretd
Здесь use32 означает, что программа 32-х разрядная, заключительная инструкция iretd завершает программу; завершение программы в DuS не является вызовом внешней функции, а доступно любому процессу. Отметим, что мы не знаем, что в действительности произойдёт при вышеупомянутом вызове аргумента: будет ли символ выведен на экран, или ещё куда-нибудь, или нет. Можно привести несколько вариантов.

Например: аргумент 1 ведёт в ядро, а ядро, получив такой вызов, передаст его BIOS'у и BIOS выведет символ на экран. Или же: аргумент ведёт к VESA-видеодрайверу; этот драйвер возьмёт восклицательный знак из шрифта и выведет его по точкам в текущую позицию на экране (этот драйвер всегда работает с графическим режимом, хотя программы могут рассматривать его как текстовый). Ещё вариант: аргумент ведёт к драйверу многооконной оболочки, который запомнит символ, а через некоторое время выведет его в окно данной программы (обратившись для этого к VESA-драйверу). Наконец, символ может записаться в файл, если аргумент 1 ведёт к драйверу файловой системы и в нём предварительно открыт данный файл (другими словами, если стандартный выход данной программы переназначен в файл).

Мы видим, что аргументы системы DuS чем-то напоминают стандартные потоки системы Unix (которые позаимствованы оттуда почти во все другие ОС). А именно, аргумент 0 соответствует стандартному входу (stdin), аргумент 1 - стандартному выходу (stdout). Аргументы 2 и 3 похожи на 0 и 1, но подразумевается, что они реализуют непосредственный ввод-вывод на терминал, а не переназначены в файл; аргументы 2 и 3 называются, соответственно, termin и termout (синоним termout - stderr). Аргументы 4-7 предназначены для работы с файлами; в каждом из них можно открыть файл, работать с ним, закрыть файл и т. д. Если четырёх файлов недостаточно, можно создать новые файловые аргументы. Но в отличие от потоков Unix, функции аргументов не ограничиваются операциями файлового типа. Например, для управления памятью и процессами нужно вызывать функции аргумента 12, называемого system (это не значит, что он гарантированно ведёт в ядро; просто, функции у него соответствующие).

Следует отметить, что приведённая выше программа обладает одним недостатком: она не учитывает, что вызов аргумента может завершиться с ошибкой. Вообще, при возврате из вызова аргумента в исходный процесс передаются регистр eax и флаг CF (остальные регистры не изменяются). Если CF=0, то вызов считается успешным и eax содержит возвращаемое значение; если CF=1, то вызов считается ошибочным и eax содержит номер ошибки. Среди всех ошибок выделяется ошибка 0: она сигнализирует о том, что вызов в данный момент невозможен (например, в силу того, что сервер занят обслуживанием других вызовов, или же в настоящее время не хватает ресурсов для данного действия, но они могут появиться в будущем, или же нет данных для передачи). Рекомендуется повторять вызовы до тех пор, пока ошибка 0 не исчезнет, при этом между вызовами не нужно делать перерыва: он будет сделан самой системой; если сервер возвращает процессу ошибку 0, то ядро задерживает передачу этой ошибки, дав поработать по кругу всем остальным процессам.

Ядро системы DuS небольшое (не больше 12 килобайт); оно занимается, в основном, управлением заданиями, портами ввода-вывода и сигналами (обобщением прерываний). Все остальные операции по доступу к ресурсам выполняются драйверами. Драйверы принципиально не отличаются от остальных процессов. Для управления тем или иным устройством драйвер запрашивает у ядра доступ к определённым портам ввода-вывода, устанавливает (посредством ядра) перехватчик для сигнала, посылаемого этим устройством (IRQ). Далее, при возникновении сигнала вызывается перехватчик и он, обращаясь к портам, производит обмен данными с устройствами. Как правило, драйвер содержит в себе другой процесс, являющийся сервером и передаваемый в виде аргумента процессам следующего уровня. При вызове этого аргумента можно получать или передавать данные устройству.

Отметим, что в ОС Unix ядро имеет более широкий смысл и включает в себя драйверы, файловую систему, а последняя тесно связана с правами пользователей. В DuS ядро выполнено в минималистском духе: оно включает в себя только те функции, которые нужны для разграничения прав процессов, или же функции, необходимые для загрузки и запуска первого процесса. Ядро DuS "не знает" кто такие пользователи, что такое диски, почти "не слышало" о файлах и терминалах: все эти понятия возникают на более высоких уровнях иерархии процессов. Однако ядро ни одному процессу не даёт работать на наивысшем уровне привилегий процессора (0): все операции, требующие наивысшего уровня привилегий, оно выполняет самостоятельно. Таким образом, концептуально ядро ориентировано на безопасность системы.

Опишем деятельность ядра по управлению процессами. Вначале напомним, что в Unix процессы порождаются методом дублирования (как живые клетки или недетерминированные машины Тьюринга); это вписывается в общую концепцию равенства всех процессов перед ядром. В системе DuS, с её иерархичностью, создание нового процесса представляет собой более длительную и отчасти искусственную процедуру, однако оно даёт большую гибкость в формировании среды (ограничении прав) процесса-потомка.

Чтобы породить новый процесс, нужно, во-первых выделить ему ресурсы. Для этого нужно отдать ему часть своей памяти и часть своих аргументов (процессу, как правило, даётся массив свободных аргументов, не ведущих никуда, в котором он может формировать аргументы для своих потомков). В выделенной новому процессу памяти создаются сегменты кода, данных, стека и среды (переменных окружения) нового процесса; для создания сегментов нужно, с конечном счёте, обращаться к ядру (точнее, процесс, их создающий, обращается к своему аргументу system, который может быть другим процессом, но в конце концов, вызов должен дойти до ядра; только оно может создавать сегменты).

После выделения памяти, процесс-предок должен её заполнить, т. е. загрузить код программы процесса-потомка и сформировать его окружение. Хотя сегменты кода, данных и стека могут быть различными, в настоящее время все процессы-предки объединяют их в один сегмент: в его начало загружается код программы нового процесса (точка входа - 0), в средней части сегмента этот процесс формирует свои данные; наконец, в конце сегмента организуется его стек (в начале работы указатель стека устанавливается на конец сегмента). Таким образом, реализуется простейший формат исполняемого файла, аналогичный com-файлу системы DOS. Следует отметить, что длина сегмента не фиксирована: она зависит от объёма памяти, выделенного процессом-предком.

Далее, нужно создать массив аргументов нового процесса; обычно делается копия своего массива аргументов, но не исключены никакие вариации вплоть до того, что новому процессу не предоставляется ни одного аргумента, даже аргумента system. Для копирования своего аргумента в аргумент процесса-предка, опять же, нужно обращаться к ядру. Следующий вызов ядра - создание процесса с присвоением ему номера и выделением памяти для системных данных этого процесса (в частности, ядро выделяет ему стек для уровня привилегий 0). Наконец, последний вызов - запуск процесса на исполнение. Можно запустить процесс с приостановкой текущего до завершения нового или же параллельно текущему.

Помимо управления процессами, ядро запускает первый процесс, который (в настоящее время) загружает драйверы и затем - многооконную пользовательскую оболочку, последняя уже ждёт указаний от пользователя. Поэтому ядро включает в себя минимальный терминал, опирающийся на BIOS и минимальную файловую систему, которая раньше, в период становления DuS, вызывала DOS (до сих пор ядро называется dus.com), а сейчас вызывает собственный загрузчик DuS (размером 2 килобайта), реализующий 3 основные функции DOS (открыть файл, читать файл, закрыть файл). (А как же "писать файл" - спросите Вы? Ответ: фирма Microsoft уже всё написала. Шутка.) Отметим, что в отличие от DOS, загрузчик работает при этом с другой файловой системой - DFS, специально созданной для DuS.

Файловая система DFS поддерживает ссылочную концепцию прав доступа к файлам. Напомним, что в Unix права пользователя по доступу с файлу записаны вместе с файлом; а именно, указано, кто собственник файла, что он разрешает себе и что - всем остальным. Таким образом, информация о пользователях данной системы хранится на диске, что, на мой взгляд, неприемлемо при переносе этого диска в другую систему, в которой могут быть другие пользователи. Поэтому в DuS реализован другой принцип защиты: пользователю доступны те файлы, к которым он может перейти по ссылкам из своего домашнего каталога. Каждая ссылка (переход от вышестоящего каталога к нижестоящему) может запрещать чтение, запись или и то и другое; эти запреты накладываются друг на друга и получаются суммарные права доступа. Отметим, что на один и тот же каталог может быть много жёстких ссылок, т. е. этот каталог может фигурировать в разных местах файловой системы под разными именами и с разными правами доступа.

В заключение отметим, что файловая система DFS (помимо того, что является основной файловой системой в DuS, и DuS может быть загружена только из раздела с файловой системой DFS) имеет и другое важное применение. А именно, пакеты DuS поставляются в виде файлов *.dfs.bz2, т. е. представляют собой сжатые архиватором bzip2 образы дисков с файловой системой DFS. Система DuS поставляется в виде набора отдельных пакетов; каждый содержит определённую группу программ. Ссылки на пакеты имеются в Интернете, на основной странице DuS; там же имеются ссылки на многочисленные файлы документации, содержащие более подробное описание системы.

(C) Черухин Д. Ю., 2007

На начало статьи : К аннотациям номера : На основную страницу

Из Эмили Дикинсон

Черухина С. Е. ()

31/08/2007

Вольный перевод стихотворения известной американской поэтессы 19 века.

                        ***

Достаточно пожив на этом свете,
Несложно симулировать дыханье жизни.
Так искусно я научилась делать это,
Что Всевышний вынужден с небес спуститься

И коснуться пантомима сам.
О, как же холодны его объятья!
Как леденит дыханье!

                        ***

I breathed enough to take the Trick -
And now, removed from Air -
I simulate the Breath, so well -
That One, to be quite sure -

The Lungs are stirless - must descend
Among the Cunning Cells -
And touch the Pantomime - Himself,
How numb, the Bedfellows feels!

Есть ещё перевод Изабеллы Мизрахи [1]:

                        ***

Так долго дышала, что без труда -
Когда Кислорода не стало -
Смогла Притвориться - смотрите, Дышу -
Как все я - ни много, ни мало.

А кто пожелает увериться в том,
По скрученной лестнице Вен
Пусть спустится к Легким -
Коснется... Окоченели совсем.

ЛИТЕРАТУРА

[1] Это письмо моё миру. Стихи и письма Эмили Дикинсон. Перевод и составление И. Мизрахи. -  CПб.: Библиотека альманаха "Петрополь", 1998.

(C) Черухина С. Е., 2007

На начало статьи : К аннотациям номера : На основную страницу