Мифы о безопасном ПО: уроки знаменитых катастроф - [6]

Шрифт
Интервал

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

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

После повторного шокового удара пациент вскочил и нимало шокировал уже операторшу, начав ломиться в стеклянные двери ее помещения. Поначалу его и лечили от электрошока (он умер через пять месяцев). Позднейшее моделирование ситуации показало, что пациент получил менее чем за 1 сек. на участок позвоночника в 1 кв. см. дозу в диапазоне от 16500 до 25000 рад (в то время, как ему было предписано принять в этом сеансе 180 рад, а всего 6000 рад за шесть с половиной недель).

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

Особенности ПО как предпосылки для инцидентов

В комплексе не использовалась какая-либо стандартная операционная система: была разработана специальная мультизадачная ОС реального времени, для компьютера PDP-11/23 с 32Kбайт и написанная на языке ассемблера. Специальный планировщик координировал деятельность всех одновременно исполняющихся процессов. Задачи, запускавшиеся каждые 0.1 сек., разделялись на «критические», исполнявшиеся первыми, и «некритические». К критическим отнесены три приоритетных задачи (рис. 1):

* «Servo», ответственная за все операции, связанные с эмиссией радиационных пучков и доставкой их к месту назначения;

* «Housekeeper», выполнявшая верификацию всех параметров и ответственная за блокировку работы в случае возникновения нештатной ситуации, а также за сообщения о таких ситуациях;

* «Treat», управлявшая самим процессом лечения, который был разделен на 8 операционных фаз. В зависимости от значения переменной Tphase вызывалась одна из восьми подпрограмм, по окончании работы которой Treat в зависимости от значений нескольких разделяемых с другими критическими и некритическими задачами переменных, вырабатывала план на новый цикл.


>Рис. 1. Взаимодействие задач и подпрограмм в ПО для Therac-25.

Одна из вызываемых Treat подпрограмм Datent (Data entry) через разделяемую «флаговую» переменную Data_entry_complete взаимодействует с «некритической» задачей Keyboard Handler, которая управляет вводом информации с клавиатуры, исполняясь параллельно с Treat. Keyboard Handler распознает момент окончания ввода и сигнализирует об этом, изменяя значение Data_entry_complete. В свою очередь, Datent проверяет значение этой переменной. Если оно не изменилось, то значение Tphase остается равным «1», и на следующем цикле Treat опять запустит Datent; если же значение Data_entry_complete изменилось, то Datent меняет значение Tphase с «1» на «3»; в результате после окончания работы Datent монитор Treat вызовет подпрограмму Set Up Test, выполняющую проверку считающихся уже установленными параметров.

Необходимо упомянуть еще одну переменную MEOS (Mode/Energy Offset), разделяемую между Datent, Keyboard Handler и еще одной некритической задачей Hand. Старшие байты MEOS используются подпрограммой Datent для установки одного из двух режимов облучения и величины энергии испускаемого потока, в то время как младшие используются параллельно работающей задачей Hand для установки коллиматора в положение, соответствующее выбранному режиму и энергии.

Оператор мог после ввода параметров режима и энергии редактировать эти величины по отдельности. Однако, здесь присутствовал тонкий момент разработчики установили: об окончании процесса ввода (и редактирования!) параметров свидетельствует то, что все параметры заданы и курсор находится в командной строке, на предмет чего каждые 8 сек. (величина выбрана, исходя из некоторых технических соображений, связанных с инерционностью приборов) производится опрос переменной Data_entry_complete. Если в пределах этих 8 сек. курсор покидает командную строку и после быстрого редактирования параметров успевает вернуться на нее, то Keyboard Handler этого события просто не заметит, и соответственно, никак переменную Data_entry_ complete не изменит.

Иными словами, потенциально существует возможность для следующей последовательности действий:

* Keyboard Handler отследил местонахождение курсора на командной строке и установил флаг Data_entry_complete;


Рекомендуем почитать
Новосибирск 1917-1975 (Справочный материал)

Информационные материалы, предназначенные для делегатов XXV городской партийной конференции г. Новосибирска, проходившей в декабре 1975 г. Содержат фотографии и статистические данные, показывающие результаты развития города с 1917 по 70-е гг. XX века.


Описание Московии

«Описание Московии» Александра Гваньини является законченным произведением, в котором удачно сочетаются географические и этнографические сведения, очерки военного дела, торговли и строительства, нравов и обычаев русских, их религии. Человек пера, автор, литературно одарённый, Гваньини создал впервые оригинальное произведение, в основу которого, как он сам написал в посвящении «благосклонному читателю», лежат «труды учёных мужей и космографов, а также различных путешественников»; многое же автор постиг «благодаря собственному опыту и присутствию»; его наблюдения достаточно верны и глубоки. В своей работе Гваньини исходил из двух основных источников: «Записок о Московитских делах» австрийского дипломата Сигизмунда Герберштейна (1486–1566 гг.), побывавшего в Москве в 1517 и 1526 гг., (первым изданием вышли в Вене в 1549 г.) и «Краткого сказания о нравах и жестоком правлении тирана Московии Васильевича» Альберта Шлихтинга, немецкого путешественника, дворянина из Померании, несколько лет проведшего в русском плену.


Печатные СМИ Германии в условиях социально расколотого общества

Монография историка-германиста О.Е. Ореховой предлагает читателю полный анализ рынка прессы ФРГ после объединения Германии, раскрывает динамику тиражных тенденций с 1990 по 2007 гг. и освещает специфику редакционных концепций ведущих органов печатных СМИ ФРГ в условиях рекламно-газетного кризиса начала XXI века. Книга рассчитана на студентов-международников, аспирантов, исследователей-германистов, всех интересующихся историей и современным состоянием печатных органов ФРГ.


Пишем курсовую работу

Книга для чтения содержит иллюстративные примеры к принципам подготовки курсовых работ, взятые из текстов курсовых работ по направлению «Международные отношения». Теоретическое объяснение сопровождается фрагментами, при анализе которых студенты учатся не только выявлять и употреблять клише научного стиля речи, но и продуцировать собственные тексты с опорой на имеющиеся образцы.


В долинах золотого песка

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


Лишение свободы как родовое понятие и виды уголовного наказания: опыт теоретико-правового конструирования. Монография

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