Информационные технологии в медицине

План лекций.

  1. Введение

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


Мы не станем рассматривать самый низший уровень этой схемы – аппаратное обеспечение, а начнем на ступеньку выше – с посредника, находящегося между аппаратным обеспечением и медицинской программой, называемого операционной системой. Большинство из вас уже знакомо с двумя из операционных систем – Windows и MS DOS. Как вы увидите далее, это не единственные, хотя и наиболее распространенные ОС.

  • Операционные системы.
  • (Лит-ра: Б.Большаков - Д.В.Иртегов Операционные системы”)

    1. Понятие операционной системы. Основные функции операционных систем.

    В первой половине 70-х, когда операционные системы отличались большим разнообразием структуры и выполняемых функций, Barron D.W. в своей книге “Computer Operating Systems” определил её следующим образом: “Я не знаю, что это такое, но всегда узнаю, если увижу”. С тех пор положение существенно изменилось. Современные ОС - по крайней мере, широко распространенные системы - во многом похожи друг на друга. Прежде всего это определяется требованием переносимости программного обеспечения. Именно для обеспечения этой переносимости был принят стандарт POSIX (Portable OS Interface based on uniX), определяющий минимальные функции по управлению файлами, межпроцессному взаимодействию и т.д., которые должна уметь выполнять система. Кроме того, за четыре с лишним десятилетия развития ОС было обнаружено, что:

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

    Какие же функции должна выполнять ОС ? По современным представлениям, ОС должна уметь делать следующее:

    • Обеспечивать загрузку пользовательских программ в оперативную память и их исполнение.
    • Обеспечивать работу с устройствами долговременной памяти, такими как магнитные диски, ленты, оптические диски и т.д.
    • Предоставлять более или менее стандартный доступ к различным устройствам ввода/вывода, таким как терминалы, модемы, печатающие устройства.
    • Предоставлять некоторый пользовательский интерфейс. Слово некоторый здесь сказано не случайно - часть систем ограничивается командной строкой, в то время как другие на 90% состоят из средств интерфейса пользователя.

    Существуют ОС, функции которых этим и исчерпываются, например, известная всем MS DOS. Более развитые ОС предоставляют также следующие возможности:

    • Параллельное (точнее, псевдопараллельное, если машина имеет только один процессор) исполнение нескольких задач.
    • Распределение ресурсов компьютера между задачами.
    • Организация взаимодействия задач друг с другом.
    • Взаимодействие пользовательских программ с нестандартными внешними устройствами.
    • Организация межмашинного взаимодействия и разделения ресурсов.
    • Защита системных ресурсов, данных и программ пользователя, исполняющихся процессов и самой себя от ошибочных и зловредных действий пользователей и программ.
      1. Классификация ОС
      2. По тому, какие из вышеперечисленных функций реализованы и каким было уделено больше внимания, а каким меньше, системы можно разделить на несколько классов, представленных на схеме:


        1. ДОС (Дисковые Операционные Системы)
        2. Это системы, берущие на себя выполнение только первых четырех функций.

          Как правило, это просто некий набор резидентных подпрограмм, который загружает пользовательскую программу в память и передает ей управление, после чего программа делает с системой все, что ей заблагорассудится. Считается желательным, чтобы после завершения программы машина вернулась в такое состояние, чтобы ДОС могла продолжить работу. Если же программа приводит машину в какое-то другое состояние… что ж, ДОС ничем ей в этом не может помешать (примером является процесс загрузки Windows 95).

          Как правило, такие системы работают одновременно только с одной программой.

          Система MS DOS позволяет загружать в память несколько программ одновременно, но не предоставляет средств для исполнения этих программ. Более того, с точки зрения документированных функций, этим программам нельзя работать. Конечно, есть еще недокументированные задние двери (backdoors)...

          Существование систем такого класса обусловлено их простотой, дешевизной и низкими требованиями к ресурсам.

          Для машин класса Spectrum и первых моделей IBM PC это более чем критичные параметры. Именно этим объясняется широкое распространение MS DOS, в ущерб более мощным и совершенным системам. Еще одна причина, по которой такие системы могут использоваться даже на довольно мощных машинах – зачастую их возможностей вполне достаточно для создания весьма сложных медицинских приложений. Разумеется, реализация всех недостающих функций ОС в этом случае ложится на программиста. Типичным примером такого приложения является система регистрации и анализа биологических сигналов (Bioset 8000).
        3. ОС
        4. К этому классу относятся системы, берущие на себя выполнение всех вышеперечисленных функций. Это так называемые системы “общего назначения”, рассчитанные на интерактивную работу одного или нескольких пользователей в режиме разделения времени, при не очень жестких требованиях на время реакции системы на внешние события.

          Как правило, в таких системах большое внимание уделяется защите самой системы, программного обеспечения и пользовательских данных от ошибочных и злонамеренных действий других программ и пользователей. К этому классу относятся такие широко распространенные системы, как VAX/VMS, системы семейства Unix и OS/2, хотя последняя не обеспечивает одновременной работы нескольких пользователей и защиты пользователей друг от друга.
        5. Системы виртуальных машин
        6. Такие системы стоят несколько особняком. Это система, допускающая одновременную работу нескольких программ, но создающая при этом для каждой программы иллюзию, что машина находится в полном ее распоряжении, как при работе под ДОС. Примерами таких систем являются IBM VM, известная у нас в стране под названием СВМ (Система Виртуальных Машин), DesqView и другие многозадачники для MS DOS. Часто система виртуальных машин является частью более мощной ОС: MS DOS и MS Windows-эмуляторы под UNIX и OS/2, окно DOS в MS Windows, эмулятор RT-11 в VAX/VMS.

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

        7. Системы реального времени
        8. Это системы, предназначенные для разработки так называемых приложений реального времени, т.е. программ, управляющих некомпьютерным по природе оборудованием, с очень жесткими ограничениями по времени. Примером такого приложения может быть программа бортового компьютера крылатой ракеты, системы управления ядерным реактором или промышленным оборудованием. Отличительными чертами этих систем являются многопроцессность, гарантированное время реакции на внешнее событие, простой доступ к таймеру и внешним устройствам. Такие системы могут по другим признакам относиться как к классу ДОС (RT-11), так и к ОС (OS-9, QNX). Часто такие системы (например, VxWorks) рассчитаны на работу совместно с управляющей машиной, исполняющей “нормальную” операционную систему.

          * Требование гарантированного времени реакции налагает специфические требования на архитектуру ОС; большинство современных ОС общего назначения непригодно для задач РВ. *

        9. Кросс-загрузчики
        10. Это системы - полностью ориентированные на работу с управляющей машиной. Чаще всего они используются для написания и отладки кода, позднее прошиваемого в ПЗУ и предназначенного для исполнения на машине с принципиально другой архитектурой.

          Зачем это нужно? В настоящее время многие медицинские приборы (в том числе разрабатываемые на нашей кафедре) имеют в своем составе микроконтроллер (проще говоря, однокристальную ЭВМ), который выполняет некоторую программу, которую можно записать в микроконтроллер ограниченное (1-1000) число раз. При обнаружении ошибок в программе контроллер приходится перепрограммировать, к тому же локализовать ошибку трудно, т.к. контроллеры лишены средств отладки. Система команд микроконтроллера принципиально отличается от процессоров Intel, поэтому запустить программу микроконтроллера на IBM PC невозможно. Тут и приходит на помощь кросс-загрузчик, который эмулирует архитектуру МК, при этом программа выполняется, но никогда не получает управления.

        11. Системы промежуточных типов
        12. Существуют системы, которые с первого взгляда нельзя отнести к одному из вышеперечисленных классов. Такова, например, система

          RT-11, которая, по сути своей, является ДОС, но позволяет одновременное исполнение нескольких программ с довольно богатыми средствами взаимодействия и синхронизации. Другим примером промежуточной системы являются MS Windows 3.x и Windows 95 которые выполняют почти все функции ОС (используют аппаратные средства процессора для защиты и виртуализации памяти и даже могут обеспечивать некоторое подобие многозадачной работы), однако не защищают себя и программы от ошибок других программ.
        13. Сетевые ОС.

        Этот термин несколько неудачен. К этому классу следует относить системы, предназначенные главным образом для предоставления сетевых услуг, такие как

        Novell Netware, K9Q или программное обеспечение маршрутизаторов Cisco.

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

      3. Выбор операционной системы

    Выбор типа операционной системы напрямую связан с решаемой задачей. Например, задачи управления медицинским или исследовательским оборудованием в режиме жесткого реального времени вынуждают нас делать выбор между специализированными ОС реального времени и некоторыми ОС общего назначения, предоставляющими аналогичный сервис (Unix System V Release 4). Другие приложения, например серверы баз данных, требуют высокой надежности и производительности, что отсекает системы класса ДОС и MS Windows.

    Наконец, некоторые задачи, такие как автоматизация конторской работы, не предъявляют больших требований к надежности, производительности и времени реакции системы, что предоставляет широкий выбор между различными операционными системами. При этом технические параметры системы перестают играть роль, и в игру вступают другие факторы. На заре персональной техники таким фактором была стоимость аппаратного обеспечения, вынуждавшая делать выбор в пользу ДОС и, позднее, MS Windows.

    Сейчас же стоимость аппаратуры резко упала, а требования вышеупомянутых ОС резко возросли. Например, Windows 95 требует для комфортной работы не менее 16 мегабайт оперативной памяти и процессор не хуже 486. Машины такого типа вполне достаточно для работы большинства ОС общего назначения.

    Тем не менее, во многих ситуациях выбор по-прежнему делается в пользу MS Windows. При этом выдвигаются следующие аргументы:

    • отсутствие программного обеспечения для “альтернативных” систем

    Например, OS/2 способна исполнять практически все прикладное ПО, разработанное для DOS и MS Windows; для этой системы существует также ряд собственных офисных приложений.

    Для Linux приложений конторской направленности меньше, однако они существуют - например, бесплатно распространяемый пакет StarOffice фирмы Sun, во многих отношениях напоминающий MS Office.

    • MS Windows проще в эксплуатации, чем другие системы

    Это не так, особенно при работе в сети. Например, FreeBSD на 386DX более 2х лет работала на кафедре в качестве сервера рабочей группы, WWW сервера и Internet-шлюза совершенно не требуя обслуживания.

    • переход под другую ОС потребует переучивания пользователей и поиска специалистов для поддержкой системы

    Это действительно серьезный аргумент, т.к. большинство современных специалистов знакомы лишь с MS DOS/MS Windows.

    Нужно отметить, впрочем, что MS Windows, несмотря на низкую надежность и ряд функциональных недостатков, вполне адекватна большинству задач конторской направленности. Проблемы возникают, когда решаемые задачи выходят за рамки набора писем в MS Word.

    Основная проблема MS Windows помимо низкой надежности состоит том, что она не обеспечивает путей плавного и безболезненного перехода под другие ОС, даже если возникает необходимость. Строго говоря, этот недостаток свойствен всем так называемым “закрытым” системам.

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

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

    Эти задачи решаются при помощи открытых стандартов - стандартных сетевых протоколов, стандартных форматов данных, стандартизации программных интерфейсов - API (Application Program Interface - интерфейс прикладных программ) и, наконец, стандартизации пользовательского интерфейса. К сожалению, далеко не все из перечисленного сейчас имеет утвержденные стандарты.

    В качестве стандартного сетевого протокола сейчас de facto является протокол TCP/IP, реализованный в большинстве ОС.

    Среди форматов данных в настоящее время существует много общепризнанных стандартов представления изображений (особенно растровых) и звуковых данных, но некоторые типы данных так и не имеют признанной стандартной формы.

    Для того чтобы как-то обеспечить переносимость программ между системами различных типов, принимались различные стандарты интерфейса между пользовательской программой и ОС. Одним из первых таких стандартов был стандарт библиотек ANSI C. Он основан на системных вызовах ОС Unix, но функции MS DOS для работы с файлами тоже достаточно близки к этому стандарту.

    Со стандартизацией интерфейса пользователя ситуация несколько сложнее. Существуют 2 подхода к его реализации: CLI – интерфейс командной строки и GUI – графический интерфейс. Каждый из подходов имеет свои достоинства и недостатки. Если GUI хорош для рядового (слабо подготовленного) пользователя, то CLI подходит для персонала, обслуживающего компьютерную систему. Хотя CLI интерфейс кажется устаревшим и невзрачным, в его пользу говорит тот факт, что фирма Apple, изобретатель GUI, под давлением пользователей была вынуждена добавить интерфейс командной строки.

      1. Вывод

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

  • MS DOS
  • Финогенов К.Г.

    MS-DOS 5.0: В 2-х частях.– М.: МП “Малип”, 1992.– 64 с.– (Настольная книга пользователя ПК).

    Нортон П. Программно-аппаратная организация

    IBM PC: Пер. с англ. – М.: Радио и связь, 1992.– 336 с.

    Фролов А.В., Фролов Г.В. Тонкая настройка и оптимизация

    MS-DOS.– М.: “Диалог-МИФИ”, 1993.– 96 с.– (Библиотека системного программиста; Т. 5)
  • История создания
  • История персональных компьютеров началась в 1971, когда Intel выпустила свои первые микропроцессоры 4004 и 8008. Процессор 4004 был 4х разрядным и использовался в микрокалькуляторах (именно отсюда пошла BCD арифметика). В 1974 году был разработан процессор 8080, завоевавший огромную популярность. У него было 16 адресных линий и он мог адресовать 64К памяти. В те времена память стоила дорого и такого объема было вполне достаточно. Это роковое число 64К наложило отпечаток на архитектуру всех последующих микропроцессоров серии 80ХХХ.

    В 1978 году был разработан новый 16-разрядный Intel 8086, имевший уже 20-разрядную шину адреса с возможностью адресации 1М памяти. Для обеспечения совместимости с предыдущей моделью была реализована сегментная структура памяти: адрес состоял из адреса сегмента и адреса смещения. Полный 20-разрядный адрес получался сложением адреса сегмента, умноженного на 16, с адресом смещения. Используя такой механизм, процессор мог обращаться к любому участку памяти размером 64К используя 2 16-разрядных регистра. На основе этого процессора IBM разработала свои первые персональные компьютеры IBM PC и ХТ.

    В 1983 году появился микропроцессор 80286, основной особенностью которого была возможность работы в 2х режимах: реальном и защищенном. В реальном режиме он был полностью совместим с 8086, а в защищенном мог непосредственно адресовать 16М памяти и поддерживал многозадачность.

    Для этих компьютеров IBM потребовалась операционная система. Существует несколько версий, почему заказ на разработку новой ОС достался именно Microsoft, а не признанному лидеру в этой области – фирме Digital Research, однако факт остается фактом. Благодаря этому контракту фирма Microsoft резко пошла в гору, поскольку в контракте специально оговаривалось, что IBM обязуется выпускать компьютеры только с этой ОС, отчисляя Microsoft процент с продаж.

    В MS DOS была реализована довольно простая концепция персональных вычислений, т.е. предполагалось что компьютер используется одним пользователем, который в каждый момент выполняет только одну задачу. При этом все аппаратные средствами компьютера находятся в безраздельном распоряжении пользовательской программы. Такая концепция позволила существенно снизить требования к аппаратным средствам, ценой снижения уровня предоставляемого сервиса. MS DOS обеспечивает лишь 4 из 10 функций операционной системы: загрузку и исполнение пользовательских программ, работа с устройствами долговременной памяти (диски), работа с различными устройствами ввода/вывода (терминал, модем, принтер), некоторый пользовательский интерфейс.

  • Дисковая подсистема

  • Главным назначением DOS, от которого она получила свое название, является работа с дисками. Информация на диске физически организована следующим образом. Диск имеет одну или более сторон (магнитных головок), информация на каждой стороне организована в дорожки (треки) и сектора. Размер сектора фиксирован для большинства дисков и равен 512 байтам. Количество сторон, треков и секторов различно для разных дисков. При считывании информации с диска магнитная головка позиционируется на определенную дорожку, дожидается пока под ней окажется нужный сектор и считывает его. За один раз можно считать или записать не менее одного сектора. Это общий принцип организации дисковой памяти. Дальнейшая структура хранения зависит от операционной системы.

    MS DOS делит диск на 2 части: системную область и область данных. Системная область в свою очередь подразделяется на блок начальной загрузки, таблицу размещения файлов и корневой каталог:


    Блок начальной загрузки содержит данные о параметрах диска: количество сторон, треков и секторов, а также маленькую программу, осуществляющую начальную загрузку DOS в память (запускается только при старте DOS).

    В MS DOS сектора нумеруются насквозь (по сторонам и дорожкам) от 0 до некоторого максимального числа и называются кластерами. Элементом дисковых операций (чтения и записи) в DOS является кластер. (Кластер – это один или более секторов, с которыми DOS обращается как с единым целым.) Каждый файл записывается в свой кластер. Если размер файла больше кластера, то он записывается в несколько кластеров. DOS выполняет все операции по разбиению файла на кластеры при записи на диск и по сборке файла при чтении его с диска, освобождая пользователя от этой обязанности. Данные одного файла могут быть разбросаны по всему диску. Чтобы знать, какому файлу принадлежит данный кластер имеется специальная таблица размещения файлов, называемая FAT. Организована она следующим образом: элементы таблицы содержат номер следующего кластера, принадлежащего данному файлу. Если данный кластер – последний, то вместо номера следующего кластера таблица содержит специальный признак конца файла (см. рис)

    В зависимости от того, какой максимальный номер кластера может храниться в FAT (какого размера элемент FAT), зависит максимальный размер диска, с которым ОС может работать. В настоящее время MS DOS использует 3 стандартных типа FAT: FAT12— для мальньких дисков (дискет), где количество кластеров не превышает 4096 (размер элемента FAT – 12 бит), FAT16— для дисков среднего размера (размер элемента FAT – 16 бит, количество кластеров – до 65535), FAT32— для очень больших дисков (размер элемента FAT – 32 бит).

    Вообще говоря, один и тот же диск можно отформатировать под любой тип FAT. Разница между ними будет в размере кластера. Если FAT32 позволяет иметь очень маленький кластер (напр., размером в 1 сектор), то для FAT16 и FAT12, кластер будет включать несколько секторов. Эти 2 варианта имеют свои плюсы и минусы. В первом случае (FAT32) сильно увеличиваются служебные области диска, во втором – неэкономно расходуется дисковое пространство, поскольку любой, даже самый маленький файл должен записываться в отдельный кластер. Оптимум, как обычно, лежит где-то посередине. К сожалению, не все программы могут воспринимать 32-битный номер кластера, поэтому FAT32 иногда создает проблемы для пользователя.

    Корневой каталог – содержит имена файлов (8 символов), расширение (3 символа), размер файла, дату и время создания файла, номер начального кластера и атрибуты файла. Существует всего 6 атрибутов:

    • архивный - обозначает файл, для которого необходимо сделать резервную копию
    • только для чтения - запрещает модификацию/удаление файла
    • системный
    • скрытый - понятно из названия
    • каталог
    • метка тома

    Заметьте, что отсутствуют атрибута принадлежности файла тому или иному пользователю, т.к. MS DOS является однопользовательской средой. Поэтому, если файл помечен как “только для чтения”, то это для всех пользователей. Каждый элемент каталога имеет фиксированный размер, зависящий от версии DOS, а общий объем, отведенный под каталог, определяет максимальное число файлов, которое можно записать в данный каталог (не путать с объемом диска).

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

    Вышеописанным образом организована дискета. Жесткий диск имеет еще одну служебную область, называемую главной загрузочной записью (Master Boot Record). Эта запись определяет на сколько и каких разделов разбит жесткий диск, и где находится загрузочная программа.

  • Организация памяти
  • MS DOS работает в так называемом “реальном” режиме микропроцессоров Intel 80x86. В этом режиме адрес имеет только 20 разрядов. Обращение к ячейке памяти осуществляется при помощи 2х 16-разрядных регистров: регистра сегмента и регистра смещения. Полный адрес получается сложением значения регистра сегмента, умноженного на 16 с регистром смещения.

    Схема памяти MS DOS.

    Адрес

    Описание

    0000:0000

    Таблица векторов прерываний: 256 4-байтовых адресов

    0040:0000

    Область данных ROM-BIOS

    0050:0000

    Область данных DOS

    xxxx:0000

    Код BIOS (считанный из IO.

    SYS на диске загрузки)

    xxxx:0000

    Обработчики прерываний DOS, включая INT 21H (

    MSDOS.SYS)

    xxxx:0000

    DOS: буфера, области данных и устанавливаемые драйверы устройств

    xxxx:0000

    резидентная порция COMMAND.COM,
    включает обработчики INT 22H INT 23H и INT 24H

    xxxx:0000

    Резидентные программы и данные

    xxxx:0000

    Текущая выполняемая прикладная программа (.COM или .EXE). Программе изначально предоставляется вся память до 640K (a000:0000) или до максимально имеющегося адреса на данном PC

    xxxx:0000

    Транзитная порция COMMAND.COM. Интерпретатор команд, внутренние команды и т.п. Перезагружается, если кто-нибудь перекроет ее.

    a000:0000

    EGA память для некоторых видео режимов

    b000:0000

    Видео память монохромного адаптера (и совместимых с Hercules)

    b800:0000

    Видео память CGA (также страница 2 для Hercules)

    c800:0000
    до
    e000:0000

    Внешний код ROM. ROM-BIOS ищет здесь (в 2K-блоках) код, выполняемый во время загрузки. Такие блоки ROM-памяти обычно устанавливает обработчик устройства (твердый диск или EGA BI

    OS).

    e000:0000
    до
    e000:ffff

    AT модули ROM материнской платы в блоках по 64K

    f600:0000

    ROM-резидентный интерпретатор BASIC

    fe00:0000

    ROM-BIOS: POST и код загрузки, обработчики прерываний и все прочее.

    f000:fff0

    инструкция JMP на программу, выполняемую при включении или сбросе

    f000:fff5

    дата разработки BIOS. Дата хранится в виде строки “mm/dd/yy”.

    f000:fffe

    идентификационный код IBM PC

    СВЕРХ

    Память сверх 1 мегабайта доступна на компьютерах класса AT через функцию BIOS INT 15H, и в настоящее время используется DOS для операций с RAM-дисками.

    Таблица векторов прерываний

    . Все функции DOS организованы в виде программных прерываний, которые являются ни чем иным, как подпрограммами общего пользования. Чтобы знать, по какому адресу какая подпрограмма находится, в начале памяти размещается таблица из 256 адресов. Каждый адрес указывает на точку входа в определенное прерывание.

    Дальше располагаются области памяти DOS и BIOS, в которых хранятся различные параметры системы: количество и адреса портов устройств ввода-вывода, количество и типы дисков, системные часы, и т.д.

    Следом идет собственно код BIOS и DOS, различные служебные области DOS, загружаемые драйвера, и т.д. Вслед за системными областями располагается пользовательская программа, которой предоставляется вся доступная на момент её запуска память вплоть до границы в 640К.

    Что же располагается дальше? Область памяти видеоплаты, ПЗУ различных внешних устройств (видео, сетевая карта, …), отведено место под интерпретатор BASIC (хотя сейчас его никто не ставит), ПЗУ материнской платы.

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

    Вообще говоря, существует 2 стандарта на расширенную память:

    expanded (EMS) и extended (XMS) память. Expanded (расширенная) память появилась первой и представляла собой отдельную плату, содержащую несколько Мб памяти, поделенной на страницы по 16К. В адресном пространстве DOS отводился определенный участок (frame), размером 64К, в который можно было отобразить любые 4 страницы из расширенной памяти. Таким образом создавалось нечто вроде электронного диска, на котором можно было хранить данные и код.

    Extended (буквально: “растянутая”) память является как бы продолжением обычной памяти DOS за границей 1024К. Хотя сам микропроцессор способен обращаться к этой памяти напрямую, DOS способна работать лишь с первым мегабайтом. Тем не менее, начиная с версии 5.0 в MS DOS были введены средства (Int 15h) для перемещения данных в extended память и обратно. Фактически, при этой операции микропроцессор переходит из “реального” режима в “защищенный”, пересылает данные, а затем возвращается в “реальный” режим. Такое переключение, очевидно, занимает некоторое время. Существуют драйвера (например, EMM386.EXE), эмулирующие EMS память внутри extended, некоторые программы пользуются такой возможностью.


    Есть еще одна область памяти, о которой стоит упомянуть, это так называемая верхняя память. Это память за границей 1024К, к которой

    DOS, тем не менее, может обращаться напрямую. Как известно, полный 20-разрядный адрес получается в результате сложения 16-разрядного сегментного регистра, умноженного на 16 с 16-разрядным регистром смещения. При этом максимальный адрес может быть 0FFFFFh, что соответствует паре сегмент:смещение 0F000h:0FFFFh, или 0FFFFh:0000Fh. А что получится, если сегмент равен 0FFFFh, а смещение 00010h ? В результате сложения мы получим адрес 0100000h. Если бы процессор имел лишь 20 адресных линий. то старшая единица бы потерялась, а мы обратились бы к нулевой ячейке памяти. Однако современные процессоры имеют большее число адресных линий, поэтому мы обратимся к ячейке за пределами 1024К! Таким образом. мы имеем дополнительно почти 64К (без 16 байт), к которым мы можем обращаться, не переходя в защищенный режим. Этим приемом современная DOS активно пользуется, размещая здесь свой код, драйвера и данные, освобождая основную память для пользовательской программы.
  • Программная организация
  • MS DOS

    Программная организация MS DOS должна быть рассмотрена с двух позиций: пользователя и работающей программы. Попытаемся охватить оба эти подхода.

  • Основные файлы MS DOS
  • В минимальной конфигурации для работы MS DOS достаточно всего 3х файлов: IO.SYS, MSDOS.SYS и COMMAND.COM. Именно эти файлы записываются на диск командой FORMAT с ключом /S или командой SYS.

    IO.SYS – обеспечивает функции работы с периферийным оборудованием (терминалом, дисками, принтером, …);

    MSDOS.SYS – содержит функции управления файлами, памятью, запуска программ и т.д. Иногда его называют модулем управления прерываниями, поскольку обращение к перечисленным средствам из программ пользователя осуществляется с помощью программных прерываний;

    COMMAND.COM – командный процессор, обеспечивающий пользовательский интерфейс и загрузку программ. В его функции входит прием и проверка команд, вводимых пользователем, выполнение некоторых из этих команд (называемых внутренними), запуск остальных (внешних) команд MS DOS, вывод на экран диагностических и аварийных сообщений и другие действия. Файл COMMAND.COM является частично резидентным, а частично – загружаемым (для экономии памяти).

    Начиная с версии MS DOS 5 добавился еще один обязательный файл DRVSPACE.BIN, содержащий функции динамического сжатия данных при записи / чтения с диска.

    Помимо перечисленных, MS DOS включает набор внешних команд (программ), реализованных в виде отдельных .COM или .EXE файлов. (FORMAT, XCOPY, …). Хотя полезно иметь на диске полный набор команд DOS, в случае нехватки дисковой памяти, их можно безболезненно удалить. Удобно, что для включения команды в состав MS DOS достаточно просто переписать файл на диск, никакой дополнительной настройки DOS при этом не требуется.

    Еще один компонент MS DOS – это загружаемые драйвера устройств, имеющие расширение .SYS, которые обеспечивают управление дополнительными устройствами или расширение функций стандартных. (HIMEM.SYS, RAMDRIVE.SYS, …).

    Настройка MS DOS под конкретное аппаратное обеспечение и нужды пользователя производится при помощи файлов AUTOEXEC.BAT и CONFIG.SYS, которые считываются при старте системы. Мы их рассмотрим чуть позднее.

  • Внутренние и внешние команды MS DOS
  • Все команды, которые может выполнять для нас командный процессор COMMAND.COM делятся на 4 категории: внутренние и 3 вида внешних команд: программы в файлах типа COM, EXE и BAT. Внутренние команды являются наиболее важными, потому они реализованы непосредственно внутри командного процессора. Их состав зависит от версии DOS. Чаще всего употребляются команды: CLS, VER, DATE, TIME, CD/CHDIR, DIR, MD/MKDIR, RD/RMDIR, COPY, REN/RENAME, DEL/ERASE, TYPE, EXIT, SET, PATH.

    Если полученная системой команда не является внутренней, то делается попытка найти на диске файл с соответствующим именем и расширением COM, EXE или BAT. Список каталогов, которые будут просмотрены при поиске определяется переменной окружения PATH. Файлы типов COM и EXE – это обычные программные файлы, которые различаются лишь внутренней структурой хранения. Файл типа COM является практически “снимком” программы в оперативной памяти и при загрузке не требует предварительной обработки. За это приходится платить тем, что COM–программа не может иметь более 64К кода.

    EXE файл лишен этого недостатка, однако перед запуском операционная система должна провести подготовку: откорректировать адреса переходов и вызовов процедур в соответствии с их реальным расположением в памяти.

    BAT файлы не являются выполняемыми в прямом смысле слова, это скорее сценарии выполнения последовательности обычных команд. Простейший BAT файл – это просто список команд, собранных в единый файл для удобства их выполнения, однако возможности языка BAT файлов гораздо шире. Этот язык включает операторы перехода (GOTO), цикла (FOR…IN…DO), выдачи сообщений (ECHO), работы со списком параметров (SHIFT), проверки условия (IF), обработки ошибок (ERRORLEVEL). В результате имеется возможность создания довольно сложных, разветвленных схем обработки. Дополнительные возможности дают операторы перенаправления ввода/вывода, конвейерные операции и шаблоны групповых операций с файлами. Язык BAT файлов в MS DOS является рудиментарным, однако он широко используется в других операционных системах. Например, в UNIX более половины программного обеспечения существует именно в виде скриптов, разумеется язык таких файлов в UNIX гораздо богаче.

  • Настройка MS DOS
  • Настройка операционной системы MS DOS под конкретное аппаратное обеспечение и нужды пользователя производится при помощи файлов AUTOEXEC.BAT и CONFIG.SYS, которые считываются при старте системы. Прежде чем мы перейдем к их рассмотрению, стоит упомянуть еще один компонент MS DOS, называемый системным окружением. Это выделенная область памяти, в которой хранятся строковые переменные, доступные для всех программ и называемые переменными окружения. Каждая строка имеет формат: переменная = значение. Часть имен переменных зарезервирована и используется системой (наиболее употребительные – это PATH, TMP, TEMP, PROMPT, COMSPEC), однако пользователь может добавлять и свои переменные. Список этих переменных может быть получен или изменен командой SET. Каждой запускаемой программе передается своя копия системного окружения, которую программа может менять как ей заблагорассудится, однако основная копия может быть изменена лишь тем командным процессором, который был загружен при старте системы, поэтому основные настройки системного окружения выносят в файл AUTOEXEC.BAT

    1. Файл CONFIG.SYS
    2. Наиболее употребительные директивы:

      BUFFERS = n, m /X – определяет количество буферов DOS, используемых при дисковых операциях ввода-вывода. Наличие буферов существенно ускоряет операции с файлами, если программа многократно обращается к одним и тем же участкам файла. m– количество буферов предввода, т.е. секторов диска, считываемых вслед за запрошенным, ускоряет операции последовательного чтения. При увеличении количества буферов быстродействие системы сначала увеличивается, а затем начинает снижаться, т.к. при любом обращении к данным DOS сначала просматривает все буферы в поисках необходимых данных, к тому же каждый буфер занимает около 500 байт памяти, снижая её общий объем. Ключ “/Х” позволяет переместить буфера из обычной памяти в расширенную.

      COUNTRY=007,866,путь\country.sys – определяет выбор кодовой страницы, национальных форматов даты, времени, десятичных разделителей. Наличие этой команды необходимо при установке Windows, чтобы установщик мог правильно выбрать устанавливаемые шрифты

      SWITCHES=… – появилась в 5.0, позволяет модифицировать поведение DOS в некоторых ситуациях: ключ /F устраняет 2х-секундную задержку после сообщения “Starting MS-DOS…”, ключ /N – запрещает пользователю вмешиваться в процесс загрузки нажатием <F5> и <F8>.

      FILES = n – определяет максимальное количество открываемых файлов (файловых дескрипторов), по умолчанию равно 8, Windows требует значения не меньше 50, однако при этом дополнительно расходуется 64 байта на каждый дескриптор.

      DOS=HIGH, UMB – позволяет загрузить DOS в верхнюю память (HMA) и включить возможность загрузки программ в верхние блоки памяти (UMB). Верхняя память – это почти 64К, находящиеся выше 1Мб (сегмент FFFF) и области памяти между модулями ПЗУ (сегменты C800-FE00). Загрузка DOS в HMA возможна только при загруженном драйвере HIMEM.SYS, а использование UMB – только при помощи EMM386.EXE. Данный прием позволяет предоставить дополнительно освободить около 64К оперативной памяти для прикладной программы (и довести его до 630К против обычных 570К).

      LASTDRIVE=Z – определяет максимальное число доступных имен дисков, необходима при наличии CD-ROM и при работе в сети. Дополнительный расход памяти – около 90 байт на диск.

      DEVICE=…, DEVICEHIGH=… – загрузка дополнительных драйверов, Последняя команда пытается загрузить драйвер в верхние блоки памяти.

      Важнейшие драйвера DOS:

      HIMEM.SYS – поддержка расширенной (XMS) памяти, много параметров, однако обычно они не используются.

      EMM386.EXE – обеспечивает поддержку верхних блоков памяти и эмуляцию expanded памяти на компьютерах с процессором не хуже 386. У драйвера много параметров, наиболее важные: размер эмулируемой EMS, RAM–поддержка UMB, NOEMS – отключение поддержки EMS

      DISPLAY.SYS con=(ega,,1) – расширение возможностей стандартного драйвера дисплея, обеспечивает возможность переключения кодовых страниц. Должен быть установлен _до_ начала установки Windows.

      SETVER – позволяет обмануть программы, требующие другую версию DOS. Для этого создается специальный список программ и версий DOS, которые они требуют.

      Драйвер CDROM обычно поставляется вместе с дисководом и инструкцией по установке.

    3. Файл autoexec.bat

    Является обычным BAT-файлом, единственным отличием которого является то, что он считывается при загрузке системы. Наиболее часто здесь используются команды:

    SET PATH=… – устанавливает список каталогов, в которых DOS будет производить поиск программ

    SET TEMP=… – устанавливает каталог для временных файлов

    MODE – устанавливает режимы работы периферийных устройств, наиболее часто используется для выбора кодовой страницы дисплея :

    mode con codepage prepare=((866) путь\ega3.cpi)

    mode con codepage select=866

    или настройки последовательного (COM) порта.

    KEYB ru,,путь\keybrd3.sys – устанавливает тип интернациональной клавиатуры и клавишу переключения

    PROMPT=$p$g – устанавливает вид приглашения DOS, в данном случае – путь>

  • Назначение и функции
  • DOS

    Функции MS DOS, доступные пользовательским программам, реализованы в виде программных прерываний. Программное прерывание – это ни что иное, как обычная подпрограмма, имеющая несколько особые правила вызова. Этих подпрограмм может быть не более 256, а адреса входа в каждую подпрограмму хранятся в первом килобайте оперативной памяти. Все параметры в прерывание передаются через регистры микропроцессора.

    Вообще говоря, все прерывания, доступные программе, делятся на 2 класса по своему происхождению: прерывания BIOS и прерывания собственно DOS. Начнем с первой группы. BIOS – это базовая система ввода-вывода, записанная в ПЗУ материнской платы Вашего компьютера. Она реализует наиболее низкоуровневые процедуры для работы с оборудованием. Поскольку BIOS обязана обеспечить принципиальную возможность работы с различными моделями оборудования, то в ней используются лишь наиболее общие свойства и команды и не учитываются особенности конкретной модели.

    Функционально BIOS разделена на 2 части: программы начального запуска, тестирования и инициализации, и систему обслуживания прерываний.

    Все функции BIOS разделены по группам в соответствии с тем оборудованием. которое она обслуживает:

    Прерывание

    Группа функций

    5

    Печать графической копии экрана

    $10

    Видеофункции

    $11

    Список присоединенного оборудования

    $12

    Запрос объема физической памяти

    $13

    Функции управления диском

    $14

    Функции управления последовательным портом

    RS-232

    $16

    Функции управления клавиатурой

    $17

    Функции управления принтером

    $18

    Обращение к встроенной системе

    ROM-BASIC

    $19

    Перезапуск системы

    $20 - $2F

    Функции

    MS DOS

    Функции DOS содержатся в прерывании с номером $21. Одна часть этих функций нацелена на реализацию основного предназначения DOS – работы с дисками и файлами, другая – фактически дублирует функции BIOS для работы с оборудованием. Это дублирование было сделано с целью унификации обращения к различному оборудованию, однако результат был не всегда удачен, т.к. разное оборудование обладает разными возможностями. Самый горький пример – вывод на экран. В DOS фактически отсутствуют средства работы с цветом символов и вывода в определенную точку экрана.

    Более подробно о функциях DOS Вы сможете прочитать в специальной литературе.

  • Работа программы под MS DOS
  • Операционная система MS DOS предоставляет пользователю некоторый интерфейс для работы с оборудованием (см. рис.), однако большинство программ, написанных для MS DOS, не пользуются системными функциями за исключением файловой системы. Такой на первый взгляд неразумный подход обусловлен рядом причин. Наиболее существенная из них – то, что реализация функций работы с оборудованием в MS DOS достаточно куцая, и не использует всех возможностей аппаратуры. Например, при выводе текста на экран отсутствует возможность работы с цветом, а скорость последовательного порта RS-232 ограничена 9600 бод. По существу, в MS DOS не реализовано ничего, кроме файловой системы. Вторая причина – это низкая скорость работы системных функций. Так вывод точки на графический экран с помощью функции BIOS происходит на 2 порядка медленнее (!) чем при прямой записи в видеопамять. Поэтому программирование “в обход” MS DOS очень распространено. Немаловажным фактором здесь является “открытость” MS DOS, при которой весь компьютер находится в полном распоряжении пользовательской программы.


    Такая схема общения программы и компьютера имеет те преимущества, что с одной стороны программист из оборудования может выжать практически все его возможности как по функциям, так и по скорости, с другой стороны, надежность функционирования программы также полностью зависит от программиста. Чтобы понять недостатки этого подхода, давайте рассмотрим этапы разработки программ для MS DOS.

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

    1. Постановка задачи (техническое задание) – чрезвычайно важный, но часто пропускаемый этап.
    Именно на этом этапе в программный продукт закладываются те недостатки, которые приходится исправлять в следующих версиях.
  • Разработка интерфейса, т.е. создание компонентов и правил, позволяющих пользователю, во-первых, быстро (по возможности – интуитивно) освоить работу в системе, во-вторых, обеспечивающих быстрый (максимум 3…4 шага) доступ к любой команде системы. Кроме того, интерфейс должен быть удобен для разработчика, т.е. иметь возможность легкой модификации и тиражирования на другие разработки. Поскольку каждый программист имеет свои представления об идеальном интерфейсе, то каждая программа имеет свой собственный набор команд, затрудняющий быстрое освоение нового продукта пользователем.
  • Решение проблем с графикой, т.е. поиск или написание собственной графической библиотеки. К сожалению, здесь возникает проблема компромисса между использованием максимума возможностей видеоадаптера и совместимостью с различным оборудованием. При этом всегда остается опасность что именно на этом компьютере Ваша программа работать не будет.
  • Программирование внешних устройств – клавиатуры, мыши, портов ввода/вывода, таймера. Здесь та же проблема совместимости с оборудованием, что и с графикой. Например, если Вы хотите получить красивую распечатку, то необходимо добиться поддержки как минимум 3х типов принтеров: матричных, струйных и лазерных, каждый из которых имеет свою систему команд, плюс проблемы с русификацией конкретного принтера.
  • Если программа достаточно велика, то следует позаботиться о поддержке оверлейной структуры и вообще об управлении памятью – втиснуть в 640К сложную программу непросто.
  • Приступить к реализации конкретного проекта, попутно решая проблемы совместимости с уже написанными библиотеками процедур.
  • Как видите, разработка программы под MS DOS на 85% состоит из решения различных проблем с оборудованием, т.е. разработчик становится своего рода системным программистом, который должен иметь четкое и глубокое знание как операционной системы, так и аппаратного обеспечения. В результате решению конкретной задачи предшествует примерно годовая (!) подготовительная работа.

    Многих этих недостатков лишена операционная система Windows, которая будет рассмотрена в следующих разделах.

  • Windows
  • Три уровня архитектуры Wundows: центральный (ядро, менеджер событий, интерфейс графического устройства, управление системными ресурсами), аппаратно-независимый уровень, уровень приложений.

  • Unix
  • С развитием сети Internet и таких направлений как телемедицина, медицинские базы данных удаленного доступа, различные информационные сервера, врачебные Internet-консультации и т.д., особую актуальность приобретает знание и умение работать в операционной системе, позволяющей, с одной стороны, обращаться к различным сервисам Internet, с другой - самому создавать Internet приложения. Большинство современных операционных систем обладают такими возможностями, однако мы остановимся на UNIX. Почему? Прежде всего потому, что это одна из наиболее удачных (в смысле построения) операционных систем. Дело в том что изначально её развитие держалось на энтузиазме программистов слабо связанных временными и финансовыми рамками. В результате чего было найдено и реализовано множество интересных и оптимальных с точки зрения функциональности идей. Даже существует поговорка: “Если вы не понимаете UNIX, вы должны будете заново изобрести его''. Опыт развития систем OS/2 и Windows NT отчасти подтверждает ее.

    UNIX широко распространена на серверах Internet. Известен случай, когда Microsoft перекупила кампанию HotMail и попыталась заменить на её серверах UNIX системой Windows NT. Оказалось, что NT неспособна управиться с тем потоком данных, который спокойно обрабатывался UNIX.

    Еще 2 немаловажные причины: в настоящее время наблюдается волна повышения интереса к этой ОС, и многие известные фирмы, например

    Sun или Corel, разрабатывают свои версии UNIX с набором программных пакетов для них. И наконец, в отличие от других ОС, существуют свободно распространяемые версии UNIX и программ под них, что немаловажно для российского пользователя.

    Следует оговориться, что под названием UNIX на самом деле скрывается целый класс операционных систем, ведущих свою родословную от общего корня. Наиболее известны две ветви: System V (версия AT&T) и BSD (версия Калифорнийского университета в Беркли). Однако большинство современных версий включают в себя черты обеих ветвей.

  • Причины популярности UNIX
    1. Код системы написан на языке высокого уровня С, что сделало ее простой для понимания, изменений и переноса на другие платформы. По оценкам одного из создателей UNIX, Дэнниса Ритчи, система на языке С имела на 20-40% больший размер, а производительность ее была на 20% ниже аналогичной системы, написанной на ассемблере. Однако ясность и переносимость, а в результате - и открытость системы сыграли решающую роль в ее популярности. Можно смело сказать что UNIX является одной из наиболее открытых систем
    2. UNIX — многозадачная многопользовательская система с широким спектром услуг. Один мощный сервер может обслуживать запросы большого количества пользователей. При этом необходимо администрирование только одной системы. Ваша система может выполнять различные функции — работать как вычислительный сервер, как сервер базы данных, как сетевой сервер, поддерживающий важнейшие сервисы сети (telnet, ftp, электронную почту, службу имен DNS и т. д.), или даже как сетевой маршрутизатор.
    3. Наличие стандартов. Несмотря на многообразие версий UNIX, основой всего семейства являются принципиально одинаковая архитектура и ряд стандартных интерфейсов. Опытный администратор без большого труда сможет обслужить другую версию системы, для пользователей переход на другую версию и вовсе может оказаться незаметным.
    4. Простой, но мощный модульный пользовательский интерфейс. Имея в своем распоряжении набор утилит, каждая из которых решает узкую специализированную задачу, вы можете конструировать из них сложные комплексы.
    5. Использование единой, легко обслуживаемой иерархической файловой системы. Файловая система — это не только доступ к данным, хранящимся на диске. Через унифицированный интерфейс файловой системы осуществляется доступ к терминалам, принтерам, магнитным лентам, сети и даже к памяти.
    6. Очень большое количество приложений, в том числе свободно распространяемых, начиная от простейших текстовых редакторов и заканчивая мощными системами управления базами данных.
  • Где найти информацию
  • Общий взгляд на архитектуру UNIX
  • В центре находится ядро системы (kernel). Ядро непосредственно взаимодействует с аппаратной частью компьютера, изолируя прикладные программы от особенностей ее архитектуры. Ядро имеет набор услуг, предоставляемых прикладным программам. К услугам ядра относятся операции ввода/вывода (открытия, чтения, записи и управления файлами), создания и управления процессами, их синхронизации и межпроцессного взаимодействия. Все приложения запрашивают услуги ядра посредством системных вызовов.

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

  • Ядро системы
  • Ядро обеспечивает базовую функциональность операционной системы: создает процессы и управляет ими, распределяет память и обеспечивает доступ к файлам и периферийным устройствам.

    Взаимодействие прикладных задач с ядром происходит посредством стандартного интерфейса системных вызовов. Интерфейс системных вызовов представляет собой набор услуг ядра и определяет формат запросов на услуги. Процесс запрашивает услугу посредством системного вызова определенной процедуры ядра, внешне похожего на обычный вызов библиотечной функции (например, open, read, close). Ядро от имени процесса выполняет запрос и возвращает процессу необходимые данные.


    Ядро состоит из трех основных подсистем:

    1. Файловая подсистема
    2. Подсистема управления процессами и памятью
    3. Подсистема ввода/вывода

  • Файловая подсистема
  • Файловая подсистема обеспечивает унифицированный интерфейс доступа к данным, расположенным на дисковых накопителях, и к периферийным устройствам. Одни и те же функции ореп(2), read(2), write(2) могут использоваться как при чтении или записи данных на диск, так и при выводе текста на принтер или терминал.

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

    Файловая подсистема обеспечивает перенаправление запросов, адресованных периферийным устройствам, соответствующим модулям подсистемы ввода/вывода.

  • Подсистема управления процессами
  • Запущенная на выполнение программа порождает в системе один или более процессов (или задач). Подсистема управления процессами контролирует:

    1. Создание и удаление процессов
    2. Распределение системных ресурсов (памяти, вычислительных ресурсов) между процессами
    3. Синхронизацию процессов
    4. Межпроцессное взаимодействие

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

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

    Модуль управления памятью

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

    Модуль межпроцессного взаимодействия

    отвечает за уведомление процессов о событиях с помощью сигналов и обеспечивает возможность передачи данных между различными процессами.

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

  • Файлы и файловая система
  • Файлы в UNIX играют ключевую роль, что не всегда справедливо для других операционных систем. Дело в том, что возможности пользователей в системе в большинстве случаев определяются правами доступа к тем или иным файлам. Файлы обеспечивают доступ к периферийным устройствам компьютера, включая диски, принтеры, терминалы, сетевые адаптеры и даже память. Для приложений UNIX доступ в дисковому файлу "неотличим" от доступа, скажем, к принтеру. Наконец, все программы, которые выполняются в системе, являются исполняемыми файлами.

    Как и во многих современных операционных системах, в UNIX файлы организованы в виде древовидной структуры (дерева), называемой файловой системой. Каждый файл имеет имя, определяющее его расположение в дереве файловой системы. Корнем этого дерева является корневой каталог (root directory), имеющий имя "/". Имена всех остальных файлов содержат путь — список каталогов (ветвей), которые необходимо пройти, чтобы достичь файла. В UNIX все доступное пользователям файловое пространство объединено в единое дерево каталогов. Таким образом, полное имя любого файла начинается с "/" и не содержит идентификатора устройства (дискового накопителя, CD-ROM или удаленного компьютера в сети), на котором он фактически хранится.


    / – корневой каталог, все остальные файлы и каталоги располагаются в рамках структуры, порожденной корневым каталогом, назависимо от физического местоположения.

    /bin – программы общего пользования

    /dev – специальные файлы устройств

    /etc – системные конфигурационные файлы, наиболее важные из них – скрипты инициализации системы

    /lib – библиотечные модули компилятора С и других языков

    /mnt – обычное место монтирования внешних файловых систем

    /home – домашние каталоги пользователей

    /usr – каталоги сервисных подсистем (печати, почты, …)

    /var – временные файлы, протоколы, …

    Однако это не означает, что в системе присутствует только одна файловая система. В большинстве случаев единое дерево, такое каким его видит пользователь системы, составлено из нескольких отдельных файловых систем, которые могут располагаться на различных устройствах и даже иметь различную внутреннюю структуру (например, FFS, MSDOS, NTFS).

    Заметим, что имя файла является атрибутом файловой системы, а не набора некоторых данных на диске, который не имеет имени как такового. Каждый файл имеет связанные с ним метаданные (хранящиеся в индексных дескрипторах — inode), содержащие все характеристики файла и позволяющие операционной системе выполнять операции, заказанные прикладной задачей: открыть файл, прочитать или записать данные, создать или удалить файл. В частности, метаданные содержат указатели на дисковые блоки хранения данных файла. Имя файла в файловой системе является указателем на его метаданные, в то время как метаданные не содержат указателя на имя файла.

    Жесткая связь

    Символическая связь

    Такая организация позволяет файлу иметь более одного имени, что также называется жесткой связью (hard link). Все жесткие связи равноправны и при удалении жесткой связи удаляется имя, а не файл, и лишь когда количество имен у файла станет равным нулю, только тогда удаляются и сами данные.

    Помимо жесткой, существует еще символическая связь (symbolic link), которая в отличие от жесткой связи адресует файл, который, в свою очередь, ссылается на конечный файл. По сути, в данных файла символической ссылки записано имя целевого файла. Необходимость существования символической связи объясняется тем, что жесткие связи допустимы лишь в пределах одного устройства. Символические связи допустимы в любых случаях.

    Необходимо отметить, что права доступа к файлу хранятся в inode, поэтому не имеет значения, через какое имя пользователь пытается обратиться к файлу, он получит одинаковый уровень доступа.

  • Типы файлов
  • В UNIX существуют 6 типов файлов, различающихся по функциональному назначению и действиям операционной системы при выполнении тех или иных операций над файлами:

      • Обычный файл (regular file)
      • Каталог (directory) 
      • Специальный файл устройства (special device file)
      • Связь (link)
      • FIFO или именованный канал (named pipe)

    Обычный файл

    представляет собой наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. Вся интерпретация содержимого файла производится прикладной программой, обрабатывающей файл.

    Каталог

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

    Специальный файл устройства

    обеспечивает доступ к физическому устройству. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства.

    FIFO или именованный канал

    это файл, используемый для связи между процессами. FIFO впервые появились в System V UNIX, но большинство современных систем поддерживают этот механизм.

    Связь.

    О связях мы говорили чуть выше. В данном случае имеется в виду символическая связь.

    Сокет

    предназначен для организации связи между процессами. Интерфейс сокетов часто используется для доступа к сети
    TCP/IP.
      1. Права доступа к файлам
      2. Файлы в UNIX имеют двух владельцев: пользователя (user owner) и группу (group owner). Интересно, что владелец-пользователь может не являться членом группы-владельца, что дает дополнительную гибкость в организации доступа.

        Каждый файл в UNIX имеет 9 атрибутов доступа: по три (read, write, execute - читать, писать, выполнять) для владельца–пользователя, для владельца–группы и для всех остальных. Атрибуты доступа могут быть изменены владельцем файла, администратором системы либо пользователем, имеющим право на запись в файл.

        Значение прав доступа различно для разных типов файлов. Для обычных файлов операции, которые можно производить, следуют из самих названий прав доступа. Например, чтобы просмотреть содержимое файла, пользователь должен иметь право на чтение (r). Редактирование файла, т. е. его изменение, предусматривает наличие права на запись (w). Наконец, для того чтобы запустить некоторую программу на выполнение, вы должны иметь соответствующее право (х). Исполняемый файл может быть как скомпилированной программой, так и скриптом командного интерпретатора. В последнем случае вам также понадобится право на чтение, поскольку при выполнении скрипта командный интерпретатор должен иметь возможность считывать команды из файла. Все сказанное, за исключением, пожалуй, права на выполнение, имеющего смысл лишь для обычных файлов и каталогов, справедливо и для других типов файлов: специальных файлов устройств, именованных каналов, и сокетов. Например, чтобы иметь возможность распечатать документ, вы должны иметь право на запись в специальный файл устройства, связанный с принтером. Для каталогов эти права имеют другой смысл, а для символических связей они вообще не используются, поскольку контролируются целевым файлом.

        Права доступа для каталогов не столь очевидны. Это в первую очередь связано с тем, что система трактует операции чтения и записи для каталогов отлично от остальных файлов. Право чтения каталога позволяет вам получить имена (и только имена) файлов, находящихся в данном каталоге. Чтобы получить дополнительную информацию о файлах каталога (например, подробный листинг команды ls -/), системе придется "заглянуть" в метаданные файлов, что требует права на выполнение для каталога. Право на выполнение также потребуется для каталога, в который вы захотите перейти (т.е. сделать его текущим) с помощью команды cd. Это же право нужно иметь для доступа ко всем каталогам на пути к указанному.

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

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

      3. Дополнительные атрибуты файла

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

      Дополнительные атрибуты для обычных файлов

      Код

      Название

      Значение

      t

      Sticky bit

      Сохранить образ выполняемого файла в памяти после завершения выполнения

      s

      Set UID, SUID

      Установить

      UID процесса при выполнении

      s

      Set GID, SGID

      Установить

      GID процесса при выполнении

      1

      Блокирование

      Установить обязательное блокирование файла

      Установка атрибута

      Sticky bit (действительное название — save text mode) редко используется в современных версиях UNIX для файлов. В ранних версиях этот атрибут применялся с целью уменьшить время загрузки наиболее часто запускаемых программ (например, редактора или командного интерпретатора). После завершения выполнения задачи ее образ (т.е. код и данные) оставались в памяти, поэтому последующие запуски этой программы занимали значительно меньше времени.

      Атрибуты (или флаги) SUID и SGID позволяют изменить права пользователя при запуске на выполнение файла, имеющего эти атрибуты. При этом привилегии будут изменены (обычно расширены) лишь на время выполнения и только в отношении этой программы.

      Обычно запускаемая программа получает права доступа к системным ресурсам на основе прав доступа пользователя, запустившего программу. Установка флагов SUID и SGID изменяет это правило, назначая права доступа исходя из прав доступа владельца файла. Таким образом, запущенный исполняемый файл, которым владеет суперпользователь, получает неограниченные права доступа к системным ресурсам, независимо от того, кто его запустил. При этом установка SUID приведет к наследованию прав владельца-пользователя, а установка SGID — владельца-группы.

      В качестве примера использования этого свойства рассмотрим утилиту passwd(l), позволяющую пользователю изменить свой пароль. Очевидно, что изменение пароля должно привести к изменению содержимого определенных системных файлов (файла пароля /etc/passwd, или базы данных пользователей). Понятно, что предоставление права на запись в эти файлы всем пользователям системы является потенциально опасным. Установка SUID для программы смены пароля passwd(l) позволяет изящно разрешить это противоречие. Поскольку владельцем файла /usr/bin/passwd является системный администратор, то кто бы ни запустил утилиту passwd(l), во время работы данной программы он временно получает права администратора, т. е. может производить запись в системные файлы. Понятно, что требования по безопасности для такой программы должны быть повышены. Утилита passwd(l) должна производить изменение пароля только пользователя, запустившего ее, и не позволять никакие другие операции (например, вызов других программ).

      Блокирование файлов позволяет устранить возможность конфликта, когда две или более задачи одновременно работают с одним и тем же файлом.

      Дополнительные атрибуты для каталогов

      Код

      Название

      Значение

      t

      Sticky bit

      Позволяет пользователю удалять только файлы, которыми он владеет или имеет права на запись

      s

      Set GID, SGID

      Позволяет изменить правило установки владельца-группы создаваемых файлов, аналогично реализованному в

      BSD UNIX

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

      Sticky bit для каталога позволяет установить дополнительную защиту файлов, находящихся в каталоге. Теперь пользователь может удалить только файлы, которыми он владеет, или на которые он имеет явное право на запись, даже при наличии права на запись в каталог. Примером может служить каталог /tmp, который является открытым на запись для всех пользователей, но в котором может оказаться нежелательной возможность удаления пользователем чужих временных файлов.

      Атрибут SGID также имеет иное значение для каталогов. При установке этого атрибута для каталога вновь созданные файлы этого каталога будут наследовать владельца-группу по владельцу-группе каталога.

    1. Процессы

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

    Следует различать понятия программа и процесс. Обычно программой называют совокупность файлов, будь то набор исходных текстов, объектных файлов или собственно выполняемый файл. Для того чтобы программа могла быть запущена на выполнение, операционная система сначала создает окружение или среду выполнения задачи, куда относятся ресурсы памяти, возможность доступа к устройствам ввода/вывода и различным системным ресурсам, включая услуги ядра.

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

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

    Все процессы подразделяются на 3 категории:

    • системные процессы
    • – являются частью ядра и запускаются особым образом при старте системы
    (например, диспетчеры свопинга, памяти, …)
  • демоны
  • – процессы, выполняемые в фоновом режиме и обеспечивающие работу различных подсистем
    UNIX (например, ftpd, httpd), большую часть времени демоны находятся в состоянии ожидания, когда тот или иной процесс запросит необходимую услугу.
  • прикладные
  • процессы – это все остальные процессы, выполняющиеся в системе. Они могут выполняться как в интерактивном, так и в фоновом режиме, но в любом случае время их жизни ограниченно сеансом работы конкретного пользователя.

    Процесс также имеет целый набор атрибутов:

    PID – уникальный идентификатор процесса (по имени обращаться нельзя – т.к. одна программа может породить несколько процессов)

    PPID – идентификатор процесса, породившего данный процесс

    NICE – относительный приоритет процесса, учитываемый планировщиком при определении очередности запуска. Нумерация идет в обратном порядке, т.е. чем больше номер, тем ниже приоритет.

    TTY – терминальная линия, ассоциированная с процессом (если существует). Демоны не имеют своей терминальной линии.

    Реальный (RUID) и эффективный (EUID) идентификаторы пользователя. Реальный – идентификатор пользователя, запустившего процесс, эффективный определяет права доступа процесса.

    Реальный (RGID) и эффективный (EGID) идентификаторы группы.

      1. Жизненный цикл процесса

    Процесс в UNIX создается системным вызовом fork. Процесс, сделавший вызов fork называется родительским, а вновь созданный процесс — дочерним. Новый процесс является точной копией породившего его процесса. Как это ни удивительно, но новый процесс имеет те же инструкции и данные, что и его родитель. Более того, выполнение родительского и дочернего процесса начнется с одной и той же инструкции, следующей за вызовом fork. Единственно, чем они различаются — это идентификатором процесса PID и идентификатором родительского процесса PPID. Существует специальная системная функция, позволяющая по PPID определить, какой из процессов является родительским, а какой – дочерним. Каждый процесс имеет одного родителя, но может иметь несколько дочерних процессов.

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

    В UNIX запуск на выполнение новой программы часто связан с порождением нового процесса, таким образом сначала процесс выполняет вызов fork(2), порождая дочерний процесс, который затем выполняет ехес(2), полностью замещаясь новой программой. Такой способ загрузки называется fork-and-exec.

    1. Многозвенные медицинские приложения
    2. При разработке сложных программ их часто разбивают на функционально законченные модули, каждый из которых выполняет определенную функцию и загружается по мере необходимости. Такой подход позволяет, с одной стороны, сэкономить ресурсы системы, с другой – является технологичным для разработчика. (Примером является система РеоКардиоМонитор.)

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

      Что касается технологичности, то разбиение задачи на отдельные модули позволяет подключить к работе сразу нескольких специалистов. При этом оговариваются методы обмена данными между модулями, форматы входных и выходных данных и диапазоны допустимых значений. Такой подход позволяет ускорить работу над проектом и многократно использовать наиболее удачные модули. (например, модуль “Карта пациента” используется уже в 5й программе почти без изменений).

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

      DOS.

      В этой ОС может работать лишь одна программа, однако имеется специальная функция DOS ($4B или EXEC), позволяющая текущей программе загрузить в память другую программу и передать ей управление (понятно, что программа-родитель во-первых обязана предоставить потомку необходимый объем оперативной памяти, и, во-вторых, родитель останавливается на время выполнения потомка). Для загрузки потомка часто используется вторичная копия загрузчика COMMAND.COM, которая производит необходимые настройки адресов, в результате чего в памяти образуется следующая структура:

      COMMAND.COM – программа-родитель – COMMAND.COM – программа-потомок

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

      В Windows имеется специальный механизм для создания модулей, подключаемых на этапе выполнения. DLL, DDE, OLE, COM

      В UNIX загрузка и запуск программ-потомков происходит несколько необычным образом, называемым fork & exec. При вызове функции “exec” образ текущего процесса полностью замещается кодом загружаемой программы. При этом вызванная программа наследует все права родителя в момент вызова функции exec. Таким образом обеспечивается безопасность системы. Например, в момент идентификации нового пользователя программа login выполняется с правами системного администратора, поскольку ей нужен доступ к файлу паролей. После проверки, программа login устанавливает себе права идентифицированного пользователя и через функцию exec замещает себя кодом командного интерпретатора, определенного в файле настройки. После выполнения команды exec пользователь не может получить доступ к коду команды login, т.к. её уже нет в памяти.

      Если программу-родителя необходимо сохранить в памяти, то используется другая системная функция “fork” – создающая в памяти точную копию текущего процесса. Эти две копии имеют одинаковый код, одинаковые данные и их выполнение после fork начинается с одной и той же команды. Единственный способ различить эти 2 процесса – спросить у операционной системы ID родителя данного процесса. Для родителя эта функция возвратит 0, для потомка – PID родителя.

      Обмен данными между процессами может происходить через специальные средства межпроцессного взаимодействия, такие как сигналы (signals), каналы (pipes), разделяемая память (shared memory), семафоры (semaphores), сообщения (messages) и файлы.

    3. Распределенные системы
    4. Если с предыдущим пунктом затруднений не возникло, то вам будет понятен следующий шаг в этом направлении – распределенные системы, когда разные процессы или группы процессов выполняются на разных компьютерах, объединенных каналом передачи данных (сетью). Моделью распределенной системы может служить информационная сеть поликлиники или госпиталя.

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

      Наиболее известные технологии:

      COM – технология Microsoft, работает только на базе Windows NT, поддерживает около 50 клиентов, поставляется в комплекте с Windows, наиболее завершенная на сегодняшний момент;

      RMI – технология. основанная на языке Java;

      Corba – мультиплатформенная технология, практически отсутствуют ограничения по масштабируемости и количеству клиентов, в настоящее время завершается разработка стандартов для Corba.

       

    5. Основы построения баз данных.

    Распределенные базы данных

    Сетевые решения

    (не завершено)


    Предупреждение: данная статья является черновиком лекций, читавшихся в МГТУ им.Н.Э.Баумана на кафедре БМТ-2.
    Файл был сконвертирован из Word-версии, поэтому прошу извинить за ошибки в форматировании.
    Comments