Вы находитесь на странице: 1из 69

БИЛЕТ№1.

1. Определение системного программного обеспечения.

1.1 Системное программное обеспечение представляет собой набор программ,


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

1.2 это набор программ, которые управляют компонентами вычислительной системы,


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

1.3 Системное программное обеспечение - комплекс управляющих и обрабатывающих


программ, описаний и инструкций, обеспечивающих функционирование вычислительной
системы, а также разработку и исполнение программ пользователей.
СПО может быть разделено на следующие пять групп:
1. Операционные системы.
2. Системы управления файлами.
3. Интерфейсные оболочки для взаимодействия пользователя с ОС и операционные
среды.
4. Системы программирования.
5. Утилиты.
1.1 Операционные системы
Операционная система – совокупность программ, управляющих ходом работы
вычислительной
машиной идентифицирующих программы и данные и осуществляющих
связь между машиной и оператором. Операционная система повышает
производительность
вычислительного комплекса за счёт гибкой организации прохождения потока задач
через машину, равномерной загрузки оборудования, оптимального использования всех
ресурсов
ЭВМ, стандартной организации хранения в машине больших массивов данных при
наличии разнообразных способов доступа к ним.
Любой из компонентов программного обеспечения вычислительной системы обязательно
работает под управлением ОС.
1.2. Системы управления файлами
Назначение системы управления файлами – организация более удобного доступа к
данным, организованным как файлы. Благодаря системе управления файлами вместо
низкоуровневого
доступа к данным с указанием конкретных физических адресов нужной нам
записи используется логический доступ с указанием имени файла и записи в нем. Как
правило,
все современные ОС имеют соответствующие системы управления файлами.
Однако выделение этого вида СПО в отдельную категорию представляется
целесообразным,
поскольку ряд ОС позволяет работать с несколькими файловыми системами
(либо с одной из нескольких, либо сразу с несколькими одновременно). Более того,
некоторые
простейшие ОС могут работать и без файловых систем, а значит, им необходимо
иметь системы управления файлами.
В то же время любая система управления файлами не существует сама по себе – она
разработана для работы в конкретной ОС и с конкретной файловой системой.
1.3. Интерфейсные оболочки
Назначение интерфейсных оболочек – либо расширение возможностей по управлению
ОС, либо изменение встроенных в систему возможностей: от изменения внешнего
вида графического интерфейса, до организации выполнения программ, созданных для
других ОС.
К этому же классу СПО следует отнести и эмуляторы, позволяющие смоделировать
в одной операционной системе какую-либо другую машину или операционную систему.
3
1.4. Системы программирования
Система программирования включает в себя прежде всего следующие компоненты:
транслятор
с соответствующего языка программирования, библиотеки подпрограмм, текстовый
редактор, компоновщик и отладчик. Не бывает самостоятельных (оторванных от ОС)
систем
программирования. Любая система программирования может работать только в
соответствующей
ОС, под которую она и создана, однако при этом она может позволять разрабатывать
программное обеспечение и под другие ОС.
Трансляторы – это специальные программы переводчики, которые переводят программы
пользователей написанные на различных языках программирования, в машинный
язык. Существует три вида трансляторов: ассемблеры, компиляторы, и интерпретаторы.
Ассемблер – транслятор, преобразующий программу, написанную на языке ассемблера,
в машинный код. При написании программ на языке ассемблера программист использует
мнемонические обозначения машинных команд и адресов (имена и метки). В
процессе трансляции ассемблер заменяет все мнемонические обозначения их двоичными
кодами.
Компилятор – это системная программа, которая воспринимает на входе текст программы
на языке высокого уровня (исходный модуль), а на выходе генерирует программу
на языке ассемблера или машинном языке (объектный модуль). Объектный модуль
состоит
из двух основных частей: тела модуля, представляющего собой программу в кодах команд
конкретной ЭВМ, и заголовка, содержащего внешние имена (имена переменных,
используемых
в данном модуле, но определённых в других модулях). Эта информация необходима
для построения из набора объектных модулей программы или программной системы,
готовой к выполнению. Объектные модулиобрабатываются компоновщиком (редактором
связей), который строит исполняемую программу (исполняемый файл, exe-модуль,
загрузочный модуль) содержащую только команды ЭВМ.
Интерпретатор – системная программа, которая транслирует каждый оператор исходной
программы в промежуточный код, интерпретирует его посредством одной или
нескольких команд и выполняет эти команды. В отличие от компилятора интерпретатор
не генерирует объектный код, а выдаёт результаты работы выполняемых операторов
исходной
программы.
1.5. Утилиты
Под утилитами понимают специальные системные программы, с помощью которых
можно как обслуживать саму ОС, так и подготавливать для работы носители данных,
выполнять перекодирование данных, осуществлять оптимизацию разрешения данных на
носителе и производить некоторые другие работы, связанные с обслуживанием
вычислительной
системы.

2. Основные правила и сложности программирования для Windows.


Программирование для Windows фактически один из видов объектно-
ориентированного программирования. Объект – окно, которое получает информацию от
клавиатуры или мыши пользователя.
Окно приложения: заголовок,
меню, рамка, полосы прокрутки. Окна
диалога – дополнительные окна. В окне
диалога всегда имеется несколько окон,
называемых дочерними. Эти дочерние
окна имеют вид кнопок,
переключателей, флажков, полей
текстового ввода и др. Пользователь рассматривает окна на экране в качестве объектов и
непосредственно взаимодействует с этими объектами, нажимая кнопки и переключатели,
передвигая бегунок на полосах прокрутки.
Когда Windows посылает программное сообщение, имеется в виду, что Windows
вызывает функцию внутри программы. Параметры этой функции описывают параметры
сообщения. Эта функция называется оконной процедурой, находящейся в программе
пользователя для Windows. У каждого окна, создаваемого программой имеются
соответствующие оконные процедуры. Эти процедуры реализуются функцией, которая
может быть записана либо в самой программе, либо в динамически подключаемой
библиотеке.
Windows посылает сообщение окну путем вызова оконной процедуры, на основе
этого сообщения окно совершает различные действия, а затем возвращает управление
Windows.
Более точно, окно создается на основе класса «окно». Класс окна определяет
оконную процедуру, обрабатывающую поступающие окну сообщения. Использование
класса «окно» позволяет создавать множество окон и применять к ним одну и ту же
оконную процедуру.
Оконная процедура обрабатывает сообщения, поступающие окну. Очень часто эти
сообщения передают окну информацию о том, что пользователь осуществил ввод с
помощью клавиатуры или мыши. Таким образом, кнопки «узнают», например, что они
нажаты. Другие сообщения «говорят», что необходимо изменить размер окна, или о том,
что на поверхности окна необходимо нарисовать.
Когда программа для Windows начинает выполняться, Windows строит для неё
очередь сообщений. В этой очереди хранится сообщение для любых типов окон, которые
могли бы быть созданы программой.
БИЛЕТ№2.
1. Ретроспектива развития СПО.
Первым этапом развития системного программного обеспечения можно считать
использование
библиотечных программ, стандартных и служебных подпрограмм и макрокоманд.
Концепция библиотек подпрограмм является наиболее ранней и восходит к 1949 г. С
появлением библиотек получили развитие автоматические средства их сопровождения –
программы-загрузчики и редакторы связей. Эти средства использовались в ЭВМ первого
поколения, когда операционных систем, как таковых, ещё не существовало.
Стремление устранить несоответствие между производительностью процесоров и
скоростью работы электромеханических устройств ввода-вывода, с одной стороны, и
использование достаточно быстродействующих магнитных накопитилей, с другой
стороны, привело к необходимости решения задач буферизации и блокирования-
деблокирования данных. Возникли специальные программы методов доступа, которые
вносились в объектные модули редакторами связей (впоследствии стали использовать
принципы полибуферизации). Таким образом, было создано базовое системное ПО.
Большие затраты времени оператора и сложность его действий по управлнию
оборудованием и организации процесса вычислений (стандартная операционная
процедура включала в себя ввод исходного модуля, чтение компилятора, компиляцию,
чтение редактора связей, его работу, чтение згрузочного модуля, его исполнение) выявили
неэффективность базового ПО. Развитие последнего и желание упростить разработку и
отладку целевыхпрограмм привели к появлени операционных систем ранней пакетной
обработки – простейших мониторов. Они автоматизировали стандартную
последовательность «загрузка – трансляция – загрузка – выполнение» с помощью
управляющей программы, загружающей требуемые системные программы и
управляющей переходом от одного задания к другому, которые группировались в пакеты.
В системах ранней пакетной обработки во время выполнения любой работы в пакете
(сборка, выполнение готовой программы и т.п.) никакая часть системного ПО не
находилась в оперативной памяти, т.е. вся память предоставлялась в
распоряжениетекущей работы. Затем появились мониторные системы, в которых
оперативная память делилась на три области: фиксированная область мониторной
системы, область пользователя и область общей памяти (для хранения данных, которыми
могут обмениваться объектные модули). Началось интенсивное развитие методов
управления данными, предназначенных для создания и сопровождения файлов данных,
обеспечения функций библиотек и т.п. Возникла и такая важнейшая функция ОС как
реализация ввода-вывода без участия центрального процессора (так называемый
«спулинг» – от англ. сокр. SPOOL – Simultaneous Peripheral
Output On Line – одновременный вывод информации).
Появление новых аппаратных разработок (в период с 1959 до 1963 гг.) – систем
прерываний,
таймеров, каналов – стимулировало дальнейшее развитие ОС. Возникли исполнительные
системы, которые представляли собой набор программ для распределения ресурсов
ЭВМ, связи с оператором и управления вычислительным процессом, управления вводом-
выводом, трансляторы и другие обрабатывающие программы. Такие исполнительные
системы позволяли реализовывать довольно эффективную (по тому времени) форму
эксплуатации
ВС – однопрограммную пакетную обработку – и давали пользователям такие
средства, как контрольные точки, логические таймеры, возможность построения программ
оверлейной структуры, обнаружение возможных нарушений программами пользователей
ограничений, принятых в системе, управление файлами, сбор учётной информации и т. п.
Возможность совмещения вычислений с вводом-выводом и рост сложности системного
программного обеспечения привели к необходимости постоянного присутствия в опера5
тивной памяти ядра исполнительной системы. Для остальных программ, вызываемых по
мере необходимости, выделялась специальная транзитная область.
Использование логической системы управления вводом-выводом и возможности
приписывать
устройствам символические имена обеспечили пользователям удобство связи с
физической
системой ввода-вывода, автоматизацию блокирования-деблокирования записей
и буферизации. Существенно расширились библиотеки за счёт включения программ-
утилит
и языковых процессоров; для их хранения и размещения ОС стали использоваться
магнитные диски. С расширением и усложнением задач ОС был введён специальный язык
управления заданиями.
Однако однопрограммная пакетная обработка, обеспечивающая спулинг, блокирование-
деблокирование и полибуферизацию с ростом производительности ВС не могла
обеспечить
экономически приемлемый уровень эксплуатации машин. Поэтому с 1962 г. начал
использоваться метод мультипрограммирования, позволяющий нескольким заданиям
одновременно
совместно использовать ресурсы ВС.
В мультипрограммной среде проблемы распределения ресурсов и защиты стали более
острыми и трудноразрешимыми. Теория построения операционных систем в этот период
обогатилась рядом плодотворных идей. Появились различные формы
мультипрограммных
режимов работы, была создана и развита концепция виртуальной памяти, а затем и
виртуальных машин, интенсивно развивались методы планирования и управления
вычислительным
процессом, методы динамического распределения ресурсов. Получили дальнейшее
развитие методы управления данными. Появились ОС для многомашинных и
многопроцессорных ВС, обеспечивающие распараллеливание (с разной степенью
автоматизации)
вычислительного процесса.
Дальнейший рост производительности ВС и потребности практики привели к развитию
распределённых ВС – вычислительных систем с дистанционным доступом и
вычислительных
сетей. Следствием этого явилось создание сетевых ОС, имеющих распределённую
иерархическую структуру. Взаимодействие компонент таких ОС обеспечивается сложной
иерархической системой протоколов.
На базе распределённых ВС создаются развитые информационные системы, банки
данных, информационно-расчётные системы различного хозяйственного, управленческо-
экономического и оборонного назначения, управляемые специализированными
операционными
системами.
2. Windows-графический интерфейс пользователя.
Интерфейс - некоторый способ (стандарт) взаимодействия (обмена информацией и
данными) между программой и человеком, между программой и другой программой и т.д.
Под графическим пользовательским интерфейсом GUI (Graphical User Interface)
понимается некоторая система (среда), служащая для организации взаимодействия
прикладных программ с пользователем на основе графического многооконного
представления данных. Если посмотреть на любую современную прикладную программу,
то видно, что значительная часть кода служит именно для организации интерфейса-
ввода/вывода информации, работы с мышью, реакции на ошибки и т.д. В среде GUI
организацию всего взаимодействия с пользователем берёт на себя сама среда, оставляя
своей программе возможность выполнять свою программу. Первая версия этой среды как
Microsoft Windows появилась ещё в 1985 году. Есть и другие графические среды
Presentation manager (OS/2),OpenLook,Motif (для Unix станции) и др.
Для указанных выше сред использовано несколько общих принципов: графический
режим работы; многооконность; использование указывающего устройства – манипулятора
типа мыши наглядность; стандартизация основных действий и элементов; наличие
большого числа стандартных элементов (кнопки, переключатели, поля редактирования и
др.); использование некоторого общего места-хранилища для обмена данными между
программами; универсальность работы со всеми основными устройствами.
В основе любой системы GUI лежит достаточно развитый графический пакет:
QuickDraw в Macintosh,GDI в Microsoft Windows.Этот пакет поддерживает работу с
областями сложной формы и отсечениями изображений по таким областям. У программ,
написанных для Windows,нет прямого доступа к аппаратной части устройств отображения
информации, таких как экран и принтер. Вместо этого Windows включает в себя язык
графического программирования, названный графическим интерфейсом устройства
(Graphics Device Interface или GDI),который облегчает создание графики и
форматированного текста, то есть это- подсистема Windows,которая отвечает за
отображение графики (включая текст) на видеотерминалах и принтерах. Эту подсистему
использует и сама Windows для отображения элементов пользовательского интерфейса,
таких как меню, полосы прокрутки, значки, курсоры мыши.
Графика в 32-битной Windows,в основном реализуется функциями, экспортируемыми
из динамически подключаемой библиотеки GDI32.DLL,которая может использовать и 16-
битовую динамически подключаемую библиотеку GDI.EXE. Происходит обращение к
различным функциям драйверов отображения -.DRV файлу для видеомониторов и,
возможно, к одному или нескольким .DRV файлам драйверов принтеров или плоттеров.
Видеодрайвер осуществляет доступ к аппаратуре видеомонитора или преобразует
команды GDI в коды или команды, воспринимаемые различными принтерами. Разные
видеоадаптеры и принтеры требуют разных файлов драйверов. Поскольку к IBM PC
совместимым компьютерам может быть подключено множество различных устройств
отображения, одной из основных задач GDI является поддержка аппаратно-независимой
графики.
Все графические устройства отображения делятся на две большие группы: растровые
устройства и векторные устройства. Большинство устройств, подключаемых к
персональным компьютерам - растровые устройства, то есть они представляют
графические образы как шаблон точек. Эта группа включает видеоадаптеры, матричные,
лазерные и струйные принтеры. Группа векторных устройств, отображающих
графические образы с использованием линий, в основном, состоит из плоттеров.
Большинство традиционных графических программ работает с векторами. И
программа, использующая один из таких графических языков, абстрагируется от
особенностей оборудования. Устройство отображения оперирует образом точки для
создания графических образов, тогда как программа при связи с интерфейсом не
использует понятия точки. В связи с этим Windows GDI-это высокоуровневая векторная
система рисования. Она так же может использоваться для низкоуровневых манипуляций с
точками. Таким образом,GDI- графический язык и высокоуровневый интерфейс для
аппаратных средств графики.
По умолчанию Windows использует систему координат, основанную на точках.
Большинство традиционных графических языков использует виртуальные системы
координат с границами 0 и 32767 для горизонтальной и вертикальной осей.Windows GDI
позволяет применять обе системы. К недостатку Windows GDI относится то, что это, в
основном, статическая система отображения с ограниченной поддержкой анимации.
БИЛЕТ№3. - … .
1. Функции современных МП, реализованные аппаратурой и
программами.
На последующих этапах были реализованы некоторые новые функции
компьютеров, которые явились результатом фундаментальных исследований в области
компьютерной науки: работа с графическими данными, мультимедийные задачи,
реализация телекоммуникационных возможностей, анализ и синтез речи, распознавание
образов, задачи искусственного интеллекта.
Процессор предназначен для выполнения арифметической и логической обработки
информации. Арифметические и логические операции можно выполнять как на
дискретных элементах и на основе микросхем малой и средней степени интеграции, что
приводит к росту размеров процессора, так и на БИС. В последнем случае говорят о
микропроцессоре (МП).
К функциям микропроцессора можно отнести:
> выбор из программной памяти ЭВМ команд, дешифрация и выполнение их;
> организация обращения к памяти и устройствам ввода-вывода;
> выполнение запросов на прерывание;
> подача сигналов ожидания для синхронизации работы с медленно действующими
устройствами памяти и ввода-вывода информации;
> подача сигналов прямого доступа к памяти и другие сигналы;
> формирование сигналов управления для обращения к периферийным
устройствам.
Работа МП организуется по командам, записанным в памяти и
поступающим в МП в порядке возрастания номеров ячеек, в которые они
записаны.

2. Вызовы функций в Windows.


Windows поддерживает свыше 1000 вызовов функций, которые разработаны
программистами и которые можно использовать в приложениях. Каждая функция имеет
развёрнутое имя написанное буквами как верхнего так и нижнего регистра. Все основные
функции windows объявляются в заголовочных файлах и главный из них – windows.h. В
этом заголовочном файле содержится множество ссылок на другие заголовочные файлы.
Эти заголовочные файлы имеются в любой среде программирования поддерживающей
windows и основанны на использовании языка «С». В программе для Windows
используются вызовы функции windows примерно так же, как использование библиотеки
функции транслятора языка «С».
Основное отличие в том, что код библиотечных функций языка «С» связан с кодом
соответствующей программы, тогда как код функции windows остаётся вне этой
программы, т.е. в DLL.
Когда программа для Windows загружается в оперативную память, вызовы в
программе настраиваются на точки входы функции в динамически подключаемых
библиотеках, которые (если это ещё не произошло) тоже загружаются в оперативную
память.

Благодаря данному интерфейсу доступ к системным ресурсам осуществляется через


целый рад системных функций. Совокупность таких функций называется прикладным
программным интерфейсом, или API (Application Programming Interfase). Для
взаимодействия с Windows приложение запрашивает функции API, с помощью которых
реализуются все необходимые системные действия, такие как выделение памяти, вывод на
экран, создание окон и т.п.
Библиотека MFC инкапсулирует многие функции API. Хотя программам и разрешено
обращаться к ним напрямую, все же чаще это будет выполняться через соответствующие
функции-члены. Как правило, функции-члены либо аналогичны функциям API, либо
непосредственно обращаются к нужной части интерфейса.

БИЛЕТ№4.
1. Задачи, решаемые СПО при распределении ресурсов вычислительной
системы.
СПО воздействует на основные ресурсы вычислительной системы: ресурсы
аппаратной части, вычислительные и информационные ресурсы.
Ресурсы аппаратной части включают: центральные обрабатывающие устройства,
основную память, устройства ввода/вывода, время каналов устройств ввода/вывода,
емкость запоминающих устройств прямого доступа (CD-ROM, HDD).
Каждому типу устройств присущ показатель «стоимость/производительность»,
который определяет его экономическое влияние на эффективность всей системы. Поэтому
управляющие программы должны позаботиться о полной загрузке компонентов, имеющих
высокий показатель. Именно поэтому в составе СПО в качестве обязательных имеются
программы планирования работы центрального обрабатывающего устройства и
распределение памяти.
Информационные ресурсы включают программы и данные.
Основным требованием к управлению вычислительным процессом является простота
в управлении всеми ресурсами, устранение конфликтования ресурсов, простота
предотвращения ошибок пользователя.
Простота подразумевает использование стандартных программных библиотек, а так же
более просто программирование прикладного программного обеспечения.
Второе требование – обеспечение эффективного использования оборудования CPU.
Задачу управления вычислительным процессом распадается на ряд подзадач:
управление памятью, управление устройствами ввода/вывода, управление рядом
процессов при разделении между ними общего АЛУ, задача коммуникаций, задача
определения многозадачности и мультипрограммирования (Мультипрограммирование
— способ организации выполнения нескольких программ на одном компьютере.)
Постоянно на компьютере выполняется ядро Kernel – основная системная программа.
В задачу ядра входят функции:
• Обеспечение полной координации и защиты в процессе управления
интерактивным взаимодействием между пользователями
• Управление одновременным выполнением множества программ
• Мультиплексирование и защита ресурсов технического обеспечения
Проблема заключается в том, что нужно выполнять множество приложений так, чтобы
они были защищены друг от друга.
Целями управления являются:
 Выполнение программы пользователя таким образом, чтобы не разрушать ОС
 Выполнение программы так, чтобы приложения не разрушали друг друга при
совместном использовании ресурсов.
 Выполнение частей ОС так, чтобы они не разрушали друг друга.
Используемые для достижения механизмы включают механизмы трансляции адресов и
дуальность режимов при выполнении операции.
Говоря о трансляции адресов, имеется в виду адресное пространство, т.е. та или
иная область памяти адресуется соответствующим образом. Каждая программа (процесс)
и ядро имеют потенциально разделенные адресные пространства. Трансляция адресов
подразумевает:
• Трансляцию из виртуальных адресов, вырабатываемых CPU в физические адреса
(адреса памяти)
• Картирование (использование карты памяти по средствам устройства управления
памятью MMU – Memory Management Unit)
Virtual Physical
Addresses Addresses
CPU MMU

Схему трансляции можно изобразить следующим образом:

Code – код, Data – данные, Heap – накапливаемые результаты, Stack – стек.


Prog ½ - программа в виртуальном адресном пространстве.
Translation map – трансляционная карта.
Physical Address Space – физическое адресное пространство
Говоря о примере детализации трансляции данных на схемном уровне, рассмотрим
трансляцию с применением «таблицы страниц».
В большинстве современных операционных систем виртуальная память
организуется с помощью страничной адресации. Оперативная память делится на
страницы: области памяти фиксированной длины (например, 4096 байт), которые
являются минимальной единицей выделяемой памяти (то есть даже запрос на 1 байт от
приложения приведёт к выделению ему страницы памяти). Процесс обращается к
памяти с помощью адреса виртуальной памяти, который содержит в себе номер
страницы и смещение внутри страницы. Операционная система преобразует
виртуальный адрес в физический, при необходимости подгружая страницу с жёсткого
диска в оперативную память. При запросе на выделение памяти операционная система
может «сбросить» на жёсткий диск страницы, к которым давно не было обращений.

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


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

Структура взаимодействий в двух режимах при применении ОС может быть изображена в


виде трех слоев.
Свопинг — «процесс подкачки данных» между внешними запоминающими устройствами
вычислительной системы и её оперативной памятью.
Задачи управления вычислительной системой связаны с обеспечением иллюзии
пользователя обладанием теми или иными ресурсами, когда контакт человека с
техническим обеспечением минимален. При этом иллюзия ещё связана с тем, что
пользователь работает как бы с открытой системой, т.е. системой с неопределенным
объемом памяти и неопределенными функциями процессов. В этих условиях должна быть
обеспечена защита пользователей друг от друга: справедливое распределение ресурсов и
обеспечение их эффективного использования.
Управление – само по себе сложная система, поэтому при его функционировании
должна соблюдаться тенденция к компромиссу между простой, функциональностью, с
одной стороны, и эффективностью с другой. Кроме того, управление должно
обеспечивать возможность выполнения накопленного программного задела и
адаптивность программы к изменению технического обеспечения.

2. Windows-динамически вызываемые библиотеки.


Программы, запущенные в среде Windows могут использовать функции из других
файлов, которые называются динамически подключаемыми библиотеками .DLL. Windows
содержит механизмы для связи программ во время их работы с функциями из
динамически подключаемых библиотек.
Вообще говоря, DLL - это просто наборы функций, собранные в библиотеки.
Однако, в отличие от своих статических родственников (файлов . lib), библиотеки DLL не
присоединены непосредственно к выполняемым файлам с помощью редактора связей.
В выполняемый файл занесена только информация об их местонахождении. В
момент выполнения программы загружается вся библиотека целиком. Благодаря этому
разные процессы могут пользоваться совместно одними и теми же библиотеками,
находящимися в памяти. Такой подход позволяет сократить объем памяти, необходимый
для нескольких приложений, использующих много общих библиотек, а также
контролировать размеры ЕХЕ-файлов.
Однако, если библиотека используется только одним приложением, лучше сделать
ее обычной, статической. Конечно, если входящие в ее состав функции будут
использоваться только в одной программе, можно просто вставить в нее соответствующий
файл с исходным текстом.
Чаще всего проект подключается к DLL статически, или неявно, на этапе
компоновки. Загрузкой DLL при выполнении программы управляет операционная
система. Однако, DLL можно загрузить и явно, или динамически, в ходе работы
приложения.
Сама по себе ОС Windows по существу является набором динамически
подключаемых библиотек. У программ, написанных для Windows нет прямого доступа к
аппаратной части устройств отображения информации, таких как экран и принтер. Вместо
этого Windows включает в себя язык графического программирования, названный
графическим интерфейсом устройства GDI – Graphics device interface, который облегчает
создание графики и форматирование текста.
Windows абстрагируется от конкретного устройства отображения информации.
Программы, написанные для Windows, будут работать с любым типом дисплея/принтера
для которых имеется в наличии драйвера.
Динамически компонуемые библиотеки (DLL) позволяют нескольким прикладным
программа Windows или DOS защищенного режима совместно использовать код и
ресурсы. В Borland Pascal вы можете как использовать существующие DLL, так и
написать свои собственные DLL, которые можно применять в других программах.
Что такое DLL?
DLL - это выполняемый модуль, содержащий программный код или
ресурсы, используемые другими прикладными программами или DLL.
Концептуально динамически компонуемая библиотека аналогичная мо-
дулю - они обеспечивают для программ процедуры и функции. Однако
между DLL и модулями имеются существенные различия. В частности,
модули компонуются статически, а DLL - динамически.
Когда программа использует процедуру или функцию из модуля,
копия кода этой процедуры или функции статически компонуется с
выполняемым файлом программы. Если две программы выполняются од-
новременно и используют одну и ту же процедуру и функцию модуля,
то в системе будет присутствовать две копии этой подпрограммы.
Эффективнее было бы использовать одну копию. Такую возможность
предоставляет DLL.
В отличие от модуля DLL не компонуется с использующей DLL
программой. Вместо этого код и ресурсы DLL находятся в отдельном
выполняемом файле с расширением .DLL. Этот файл должен присутс-
твовать при выполнении программы-клиента. Вызываемые программой
процедуры и функции динамически компонуются со своими точками
входа в используемой программе DLL.
Другое отличие модулей от DLL состоит в том, что модули мо-
гут экспортировать типы, константы, данные и объекты, а DLL -
только процедуры и функции.
Чтобы ее можно было использовать в программе Borland Pascal,
DLL не обязательно должна быть написана на Borland Pascal. Кроме
того, программы, написанные на других языках, могут использовать
DLL, написанные на Borland Pascal. DLL, таким образом, идеально
подходит при программных проектах, реализуемых на нескольких язы-
ках.
Использование DLL

Чтобы модуль мог использовать процедуру или функцию в DLL,


он должен импортировать процедуру или функцию с помощью описания
external. Например, в следующем описании из DLL и именем KERNEL
(ядро Windows) импортируется функция с именем GlobalAlloc:

function GlobalAlloc(Glags: Word; Bytes: Longint): THandle;


far; external 'KERNEL' index 15;

В импортируемой процедуре или функции директива external за-


нимает место описательной и операторной части, которые нужно было
бы включить в противном случае. В импортируемых процедурах и
функциях должна использоваться дальняя модель вызова, выбранная
ключевым словом far или директивой компилятора {$F+}; во всем ос-
тальном их поведение не отличается от обычных процедур и функций.

Borland Pascal импортирует процедуры и функции тремя спосо-


бами:

- по имени;
- по новому имени;
- по порядковому номеру.

Формат директив external для каждого из трех методов показан


в приведенном ниже примере.

Когда оператор index или name не указан, процедура или функ-


ция экспортируются по имени. Это имя совпадает с идентификатором
процедуры или функции. В данном примере процедура ImportByName
импортируется из библиотеки 'TESTLIB' по имени 'IMPORTBYNAME':

procedure ImportByName; external 'TESTLIB';

Когда задан оператор name, процедура или функция импортиру-


ется под именем, отличным от имени идентификатора. В следующем
примере процедура ImportByName импортируется из библиотеки
'TESTLIB' по имени 'REALNAME':

procedure ImportByName; external 'TESTLIB'name 'REALNAME'

Наконец, при наличии оператор index процедура или функция


импортируется по порядковому значению. Такой вид импорта уменьша-
ет время загрузки модуля, так как отпадает необходимость поиска
имени в таблице имен DLL. В следующем примере процедура
ImportByOrd импортируется из библиотеки 'TESTLIB':

procedure ImportByOrd; external 'TESTLIB' index 5;

Имя DLL задается после ключевого слова external, а новое


имя, заданное в операторе name, не обязано представлять собой
строковые литералы. Допускается любое строковое выражение-конс-
танта. Аналогично, порядковый номер, задаваемый в операторе
index, может быть любым целочисленным выражением-константой.

const
TestLib = TestLib;
Ordinal = 5;

procedure ImportByName; external TestLib;


procedure ImportByName; external TestLibname 'REALNAME'
procedure ImportByOrd; external TestLib index Ordinal;
Хотя DLL может содержать переменные, импортировать их в дру-
гие модули невозможно. Любой доступ к переменным DLL должен осу-
ществляться через процедурный интерфейс.

БИЛЕТ№5.
1. Задачи системных программистов и системных операторов.
Системный программист — программист, работающий (т. е. создающий,
отлаживающий, диагностирующий и т. п.) над системным программным обеспечением.
В современном представлении системный программист - это программист самого
высокого класса, готовый эффективно решить прикладную задачу из любой предметной
области, умеющий обоснованно выбрать из множества существующих инструментальных
средств самые подходящие, а в случае необходимости, создать собственные.
Системные программисты решают широкий спектр задач, связанный с разработкой
современных информационных систем, созданием компьютерных телекоммуникаций,
использованием локальных, корпоративных и глобальных сетей, созданием языков
программирования различных классов: от языков ассемблера до объектно-
ориентированных, визуальных и логических. Разработка операционных систем (в том
числе распределенных), драйверов, утилит - это также их работа, ведь по
первоначальному определению классиков программирования, системными называются
программисты, знающие до тонкости все нюансы системного программного обеспечения,
архитектуры компьютера и вычислительных комплексов.
Системный программист - это специалист, который даст наиболее
квалифицированную консультацию по поводу аппаратных и программных средств.
Системный оператор - специалист занятый решением текущих задач, связанных с
работоспособностью конкретного компьютера.
. Большинство вычислительных систем требуют 3-х группу специалистов, имеющих дело
с СПО:
1) Системные программисты – занимаются общей эффективностью вычислительной
системы, обеспечивающих предоставление функциональных возможностей необходимых
пользователю, а так же следят за производительностью системы.
Эффективные СПО позволяют выбрать такую конфигурацию аппаратной части и ПО,
которая с наибольшей полнотой удовлетворяет требованиям предъявляемым к
вычислительной системе, а так же помогает записывать статистические данные об
использовании различных компонентов системы.
2)Прикладные программисты – имеют дело с разработкой и использованием программ,
удовлетворяющих тем самым потребностям организации вычислений на компьютере.
Поэтому СПО позволяет выполнять работу по программированию, предоставляя средства
для кодирования процедур, а так же предоставления программы ввода-вывода и
некоторых сервисных программ.
3)Обслуживающий персонал в лице оператора. (системный оператор – специалист,
занятый решением текущих задач, связанных с работоспособностью конкретного ком-ра)

2. Особенности программирования в Windows.


• Графический интерфейс. Windows, по сути дела, - графический интерфейс
пользователя. Основу составляет GUI – Graphics user interface. Иногда GUI
называют визуальным интерфейсом или графической оконной средой.
Графический интерфейс реализован с использованием всех возможностей
аппаратного и графического обеспечения и полностью реализует стандарт GKS.
Графический интерфейс дает возможность использования графики на растровом
экране дисплея, которая, в свою очередь, дает лучшее восприятие действительного
состояния вычислительного процесса на экране.
• Программирование, основанное на ресурсах С точки зрения программиста
содержимое интерфейса пользователя, необходимое для создания меню и окон
диалога, является результатом использования программ, уже встроенных в
Windows. У всех меню для приложений один и тот же интерфейс клавиатуры и
мыши, т.к. именно Windows, а не программа-приложение управляет их работой.
• Выделяется каждой программе виртуальное адресное пространство
Программирование под windows – это фактически один из видов ООП, когда объект –
окно. Окно получает от клавиатуры пользователя или мышки команды и выводит
графическую информацию на свою поверхность. Окно приложения обычно содержит
заголовок (Title Bar), меню, рамку, а иногда и полоски прокрутки. Окна диалоги –
дополнительные окна. В окне диалога всегда имеется ещё несколько окон, называемые
дочерними окнами. Эти дочерние окна имеют вид кнопок, переключателей, флажков,
полей текстового ввода или редактирования, а так же списков и полос прокрутки.
Окно получает от пользователя информацию в виде оконных сообщений, кроме того окно
обменивается сообщениями с другими окнами. Когда windows посылает программное
сообщение, имеется ввиду, что windows вызывает функцию внутри программы.
Параметры этой функции описываются параметрами сообщения.
Эта функция находящаяся в программе пользователя для windows называется оконной
процедурой. Обычно в практике программирования в среде ОС учитывается то, что
вызовы в ОС делает разработанная программа. Но в случае с работой в windows, она тоже
может вызывать программу. У каждого окна создаваемого программой имеется
соответствующая оконная процедура. Эта процедура реализуется функцией, которая
может быть записана либо в самой программе, либо в DLL. Windows посылает сообщение
окну путём вызова оконной процедуры, на основе этого сообщения окно совершает какие
то действия, и затем возвращает управление windows. Окно создаётся на основе класса
окна. Класс определяет оконную процедуру, обработку посылаемых окну сообщений.
Использование класса окна позволяет создать множество окон на основе одного и того же
класса и, следовательно, использовать одну и ту же оконную процедуру.
В ООП любой объект несёт в себе сочетание кода и данных. Окно – объект, код – оконная
процедура, данные – информация, хранимая оконной процедурой и системой windows для
каждого класса окна, который имеется в системе.
Оконная процедура обрабатывает сообщения поступающие к окну. Часто эти сообщения
передают окну информацию о том, что пользователь совершил ввод с клавиатуры или
мышки. Когда программа начинает выполнение, windows строит для неё очередь
сообщений. В ней хранятся сообщения для любых типов окон, которые могли быть
созданы программой. Небольшая часть программы, которая называется циклом обработки
сообщений, выбирает их из очереди и переправляет их в соответствующую оконную
процедуру.

БИЛЕТ№6.
1. Определение и виды метапрограмм.
О программах, которые работают с целью обработки других программ,
являющихся для них выходными данными, обычно говорят как о метапрограммах
(операционные системы, ассемблеры, компиляторы).

Метапрограммирование — вид программирования, связанный с созданием программ,


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

Генерация кода

При этом подходе код программы не пишется вручную, а создается автоматически


программой-генератором на основе другой, более простой программы.

Такой подход приобретает смысл, если при программировании вырабатываются


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

Реализуется двумя основными методами:

• Шаблоны (наиболее известные случаи применения — препроцессор Си и


шаблоны в C++)

Решают задачу, если соблюдение «правил» сводится к вставке в программу


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

• Внешнеязыковые средства (пример: генераторы синтаксических и лексических


анализаторов lex, yacc, bison)

Применяются в случаях, если простых средств вроде шаблонов недостаточно. Язык


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

• В Perl существует понятие «source filters» («фильтров исходного


кода») — метода переработки файлов с исходным кодом перед
выполнением, позволяющего полностью менять синтаксис и семантику
языка. Одним из известных примеров является модуль
Lingua::Romana::Perligata, позволяющий писать код Perl на латыни.[1]
• В Forth программисту предоставляют встроенные в язык
возможности по изменению своего синтаксиса и семантики. Это достигается
определением архитектуры виртуальной машины и полного доступа к
возможностям изменения её составляющих.
Самомодифицирующийся код

Возможность изменять или дополнять себя во время выполнения превращает программу в


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

Основные методы реализации:

• Интроспекция — представление внутренних структур языка в виде переменных


встроенных типов с возможностью доступа к ним из программы.

Позволяет во время выполнения просматривать, создавать и изменять определения


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

• Пространство имён System.Reflection и тип System.Type в .NET;


классы Class, Method, Field в Java; представление пространств имен и
определений типов через встроенные типы данных в Python; стандартные
встроенные возможности в Forth по доступу к ресурсам виртуальной
машины; получение значения и изменение свойств почти любого объектов в
ECMAScript (с оговорками).

• Интерпретация произвольного кода, представленного в виде строки


o Существует естественным образом во множестве интерпретируемых
языков, например eval() в PHP.
o Компилятор Tiny C позволяет «на лету» компилировать и исполнять код на
языке C, представленный в виде строки символов.
o Для Forth использования процедуры интерпретации из строки EVALUATE.

Хороший задел компиляции программы при загрузке, сравнимый с С, демонстрируют


удачные реализации Forth языка. Например российский spf4 в тестах сравнения с Си.[2]

2. Характеристика системы прерывания


Основной характеристикой СП являются временные параметры:
Временная реакция и промежуток времени с момента появления сигнала на РП до
момента его обнаружения центральным процессором Tpi (время реакции на i-ый запрос
прерывания)
Избыточное время сигнала прерывания Tизбi – разность между временем, прощедшим с
момента появления сигнала прерывания на РП до окончания его обработки и интервалом
времени, необходимым для выполнения реакции на этот сигнал. Оно характеризует
абсолютную потерю времени при обработке запросов прерываний. Tизбi = Tpi +
Tзапi+Tопi (обработка прерывания + запоминание состояния компьютера + опознание
причины).
Общее количество запросов прерывания
Глубина прерывания – максимальное количество программ, которые могут прерывать
друг друга.
Число классов прерывания (временные, ввода/вывода и т.д.)
Управление устройствами ввода/вывода.
Одной из главных функций ОС является управление всеми устройствами ввода-вывода
компьютера. ОС должна передавать устройствам команды, перехватывать прерывания и
обрабатывать ошибки; она также должна обеспечивать интерфейс между устройствами и
остальной частью системы. В целях развития интерфейс должен быть одинаковым для
всех типов устройств (независимость от устройств).
Устройства ввода-вывода делятся на два типа: блок-ориентированные устройства и байт-
ориентированные устройства. Блок-ориентированные устройства хранят информацию в
блоках фиксированного размера, каждый из которых имеет свой собственный адрес.
Самое распространенное блок-ориентированное устройство - диск. Байт-ориентированные
устройства не адресуемы и не позволяют производить операцию поиска, они генерируют
или потребляют последовательность байтов. Примерами являются терминалы, строчные
принтеры, сетевые адаптеры.
Программное обеспечение ввода/вывода делится на четыре слоя: Обработка прерываний,
Драйверы устройств, Независимый от устройств слой операционной системы,
Пользовательский слой программного обеспечения.
Прерывания и способы их обработки
Прерывание – сигнал, по кот комп прекращает выполнение текущей программы и
начинает выполнять служебную прогу. Различают следующие типы прерываний: внешние
(аппаратные), внутренние (исключения -exception), программные.
Внешние прерывания происходят асинхронно, т.е. происходят в случайный момент
времени в процессе выполнения программы (например, от внешних устройств),
внутренние – синхронно, т.е. возникают по конкретной причине и можно предугадать
возникновение такого прерывания (например, при делении на ноль). Программные
прерывания возникают при выполнении определенной команды процессора и
применяются в том случае, когда необходимо выполнить некоторые привилегированные
действия (например обратится к порту компьютера). Для определения очередности
прерывания устанавливаются приоритеты прерываний.
Различают векторный и опрашиваемый типы прерываний. В обоих способах процессору
передается информация об уровне приоритета.
При векторном типе прерывания в процессор передается также адрес обработчика
прерывания. Для векторного типа схема обработки такова: электрический сигнал - запрос
на подтверждение - вектор - обработчик (например, для шины VMEbus). Вектор - это
число 0-255
Для опрашиваемого схема обработки такова: сигнал - запрос на подтверждение - уровень
приоритета (например, шина ISA). Каждый уровень связан с несколькими устройствами.
Вызываются все обработчики данного уровня. Один опознает свое устройство. (Примеры
шин: ISA, EISA, MCA, PCi, SBus)
Приоритеты обслуживания могут быть: относительные (обработка прерывания не
прекращается при появлении более приоритетного прерывания) и абсолютные. Для
упорядочивания работы обработчиков введен механизм приоритетных очередей, которые
обслуживает модуль ОС диспетчер прерываний.
Драйверы устройств
Драйвер - это совокупность программ (секций), предназначенная для управления
передачей данных между внешним устройством и оперативной памятью. Весь зависимый
от устройства код помещается в драйвер устройства. Каждый драйвер управляет
устройствами одного типа или, может быть, одного класса.
В ОС только драйвер устройства знает о конкретных особенностях какого-либо
устройства. Драйвер устройства принимает запрос от устройств программного слоя и
решает, как его выполнить. Типичным запросом является чтение n блоков данных. Если
драйвер был свободен во время поступления запроса, то он начинает выполнять запрос
немедленно. Если же он был занят обслуживанием другого запроса, то вновь
поступивший запрос присоединяется к очереди уже имеющихся запросов, и он будет
выполнен, когда наступит его очередь.
Первый шаг в реализации запроса ввода-вывода, например, для диска, состоит в
преобразовании его из абстрактной формы в конкретную. Для дискового драйвера это
означает преобразование номеров блоков в номера цилиндров, головок, секторов,
проверку, работает ли мотор, находится ли головка над нужным цилиндром. Короче
говоря, он должен решить, какие операции контроллера нужно выполнить и в какой
последовательности.
После передачи команды контроллеру драйвер должен решить, блокировать ли себя до
окончания заданной операции или нет. Если операция занимает значительное время, как
при печати некоторого блока данных, то драйвер блокируется до тех пор, пока операция
не завершится, и обработчик прерывания не разблокирует его. Если команда ввода-вывода
выполняется быстро (например, прокрутка экрана), то драйвер ожидает ее завершения без
блокирования.

БИЛЕТ№7.
1. Определение языкового процессора. Виды языковых процессоров.
О программах, которые работают с целью обработки других программ,
являющихся для них выходными данными, обычно говорят как о метапрограммах
(операционные системы, ассемблеры, компиляторы).
Однако в терминологии операционных систем о программе, которая обрабатывает
другую программу, написанную на символическом языке, говорят как о языковом
процессоре.
Вход языкового процессора – программа в символической форме (исходная
программа). Выход языкового процессора – программа на машинном языке. Называется
объектной программой.

Исходные программы могут находиться на внешних запоминающих


устройствах/могут быть введены с терминалов компьютера (клавиатура).
Листинг содержит исходный код вместе с комментариями, а также объектный код,
сформированный языковым процессором
Объектная модуль – не только последовательность команд машинного языка
(объектная программа), но и некоторые средства выражения отношений (которые
обеспечивают соединение последовательности команд с другими объектными
программами и управляющей информацией).
Объектный модуль – объектная программа + управляющая информация.
В качестве языковых процессоров используются генераторы и интерпретаторы.
Генератор = транслятор + редактор связей + загрузчик.

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


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

Для промежуточного языка может быть использован другой транслятор или


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

2. Роль системы прерывания в современных компьютерах.


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

БИЛЕТ№8.
1. Принципы работы ассемблера.
Программа Assembler – программа компьютера, которая транслирует написанную
на языке ассемблера программу в эквивалентную ей программу на машинном языке. О
процедуре трансляции часто говорят как об ассемблировании. Ассемблирование обычно
выполняется в два прохода (два просмотра всей цепочки символов):
• В течение первого прохода приписываются адреса символов, определенные в поле
адреса; опознаются макроопределения и выполняется их расширение
(макроопределения – стандартные куски программ). Для того, чтобы освободить
программиста от необходимости писать идентичные части программ,
предусматриваются средства, позволяющие программисту задавать сокращенные
называния определенных частей программы и использовать эти сокращения вместо
соответствующих частей программы. Для этих целей в составе ассемблера
предусматривается блок «макропроцессор», который рассматривает идентичные
части программы как макроопределения и сохраняет их, поставляя определение
вместо сокращения при каждом его появлении в программе.
• При втором проходе символические коды операции и операнды заменяются
соответствующими внутренними кодами и адресами, вырабатывается объектный
модуль и листинг программы, выполняется контроль ошибок. Ошибочные
ситуации заносятся в листинг.
Ассемблирование, по существу, - процесс непосредственной подстановки. В общем
случае, логическая схема программы, написанная на языке ассемблера, не анализируется,
и пользователь может использовать при программировании особенности компьютера
данной модели.
Для операционной системы выполнение программы ассемблера – это просто одна
из работ, похожая во многом на выполнение программы пользователя. Ассемблер
использует возможности ОС при вводе и выводе данных и распределении памяти, но не
больше, чем это делает любая другая программа пользователя.

Рассмотрим теперь работу ассемблера в целом. Ассемблер берет программу, написанную на


языке ассемблера, и превращает ее в машинный язык. Файл, который содержит программу на
языке ассемблера, называют исходным файлом. Выход и ассемблера в действительности является
не собственно машинным языком, а некоторым промежуточным представлением программы.
Этот выходной файл называют объектным файлом. Данные в нем называются объектным
кодом. Для получения из него настоящего машинного кода объектный код должен быть
несколько изменен. Для IBM PC это делает программа редактор связей LINK. Шаг
преобразования объектных кодов в машинные принято называть построением связей или
редактированием связей. Помимо преобразования исходного кода в объектный ассемблер
создает несколько других выходных файлов. Один из них - ассемблерный листинг ( иногда
называемого распечаткой). Он содержит сообщение о действиях ассемблера. Этот файл
содержит исходный код вместе с комментариями, а также объектный код, сформированный
ассемблером. Другой создаваемый ассемблером файл - файл перекрестных ссылок. Этот файл
описывает все связи между метками и командами, которые их используют. Такая информация
незаменима, когда вы пытаетесь изменить программу. Вы можете воспользоваться
перекрестными ссылками для того, чтобы выявить все команды, которые обращаются к
определенному участку памяти. Это позволяет программисту определить все команды, на
которые может повлиять изменение в другой части программы.

Прогр. Ассемблер – это программа компа, кот. транслирует прогу написанную на яз.
Ассемблера в программу на машинном яз. О процедуре трансляции говорят, как о
процессе ассемблирования(простановки адресов). Асс. Выполняется в 2 прохода:

1прох.- приписываются адреса символов, определённые в поле адреса, опознаются


макросы (макро опред, вызов из микробиблиотеки) и выполняется их расширение.

2прох.- по исходной проге, символические коды операций, операнды, заменяются


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

Для опер. Сист. Выполнение программ ассемблера это просто одна из работ, во многом
похожая на выполнение программы пользователя. Ассемблер использует возможность
опер. Сист при вводе и выводе данных и распределение памяти, но не более, чем это
делает любая др. прога пользователя.

2. Режимы пакетной обработки и разделения времени.


Различают два основных режима многопрограммной работы ЦВМ: пакетной
(групповой) обработки и разделения времени.
• Пакетная обработка заключается в комплектовании пакетов задач по мере
поступления заявок от потребителей и в последовательной обработке каждого из
этих пакетов так, чтобы обеспечить максимальную загрузку устройств. Пакет
рекомендуется комплектовать из задач с различными объёмами информации и
частотами обмена ею между устройствами ЦВМ. Программы задач вводят во
внешнюю память и по очереди выполняют. При вынужденных прерываниях
текущей программы ЦВМ переключается на выполнение очередной программы
пакета, а прерванная программа после устранения причины прерывания снова
ставится в очередь. При пакетной обработке учитываются приоритет поступивших
заявок, момент их поступления и др. Режим пакетной обработки увеличивает
производительность ЦВМ, снижает до минимума простои оборудования и является
типичным режимом использования ЦВМ в вычислительных центрах. Однако
пакетная обработка малоэффективна с точки зрения потребителей, т. к., не работая
непосредственно с ЦВМ, они не могут быстро обнаруживать и исправлять ошибки
в своих программах. Сроки получения результатов также возрастают.
• Режим разделения времени создаёт у каждого потребителя впечатление, что ЦВМ
обслуживает только его одного. Каждый потребитель снабжается устройством для
ввода — вывода данных (типа «дисплей») или др. оборудованием,
обеспечивающим взаимодействие потребителя с ЦВМ, в том числе и по каналам
связи. Периодически каждый потребитель в отведённое для него машинное время
решает свою задачу, изучает полученные результаты и готовит следующее задание
для ЦВМ. Обычно потребитель пользуется общей библиотекой программ, но
может иметь и частный архив. При пользовании общей библиотекой диспетчер-
программа планирует и осуществляет вынужденные прерывания программ в
зависимости от приоритета потребителя и отведённого ему машинного времени, а
также от характера решаемой задачи. Режим разделения времени позволяет
потребителю вести эффективный диалог с машиной, что наиболее удобно в
системах управления технологическими процессами, в автоматизированных
системах управления (АСУ) предприятиями и отраслями народного хозяйства, в
информационно-справочных службах, в мощных вычислительных центрах и т. д. В
свободное от обслуживания потребителей время ЦВМ могут проводить пакетную
обработку данных.
Многозадачные ОС подразделяются на три типа в соответствии с использованными при
их разработке критериями эффективности:
 системы пакетной обработки (например, OC EC),
системы разделения времени (UNIX, VMS VMS),
системы реального времени (QNX, RT/11).
Системы пакетной обработки
Системы пакетной обработки предназначались для решения задач в основном
вычислительного
характера, не требующих быстрого получения результатов. Главной целью
и критерием эффективности систем пакетной обработки является максимальная
пропускная
способность, то есть решение максимального числа задач в единицу времени. Для
достижения
этой цели в системах пакетной обработки используются следующая схема
функционирования:
в начале работы формируется пакет заданий, каждое задание содержит
требование к системным ресурсам; из этого пакета заданий формируется
мультипрограммная
смесь, то есть множество одновременно выполняемых задач. Для одновременного
выполнения выбираются задачи, предъявляющие отличающиеся требования к ресурсам,
так, чтобы обеспечивалась сбалансированная загрузка всех устройств вычислительной
машины; так, например, в мультипрограммной смеси желательно одновременное
присутствие
вычислительных задач и задач с интенсивным вводом-выводом. Таким образом,
выбор нового задания из пакета заданий зависит от внутренней ситуации,
складывающейся
в системе, то есть выбирается "выгодное" задание. Следовательно, в таких ОС
невозможно
гарантировать выполнение того или иного задания в течение определенного периода
времени. В системах пакетной обработки переключение процессора с выполнения одной
задачи на выполнение другой происходит только в случае, если активная задача сама
отказывается от процессора, например, из-за необходимости выполнить операцию ввода-
вывода. Поэтому одна задача может надолго занять процессор, что делает невозможным
выполнение интерактивных задач.
Системы разделения времени
Системы разделения времени призваны исправить основной недостаток систем пакетной
обработки – изоляцию пользователя-программиста от процесса выполненияего задач.
Каждому пользователю системы разделения времени предоставляется терминал, с
которого
он может вести диалог со своей программой. Так как в системах разделения времени
каждой задаче выделяется только квант процессорного времени, ни одна задача не
занимает
процессор надолго, и время ответа оказывается приемлемым. Если квант выбран
достаточно небольшим, то у всех пользователей, одновременно работающих на одной и
той же машине, складывается впечатление, что каждый из них единолично использует
машину.
Системы разделения времени обладают меньшей пропускной способностью, чем
системы пакетной обработки, так как на выполнение принимается каждая запущенная
пользователем задача, а не та, которая "выгодна" системе, и, кроме того, имеются
накладные
расходы вычислительной мощности на более частое переключение процессора с задачи
на задачу. Критерием эффективности систем разделения времени является не
максимальная
пропускная способность, а удобство и эффективность работы пользователя.
Системы реального времени
Системы реального времени применяются для управления различными техническими
объектами или технологическими процессами. В этих случаях существует предельно
допустимое время, в течение которого должна быть выполнена та или иная программа,
управляющая объектом, в противном случае может произойти авария. Таким образом,
критерием эффективности для систем реального времени является их способность
выдерживать
заранее заданные интервалы времени между запуском программы и получением
результата (управляющего воздействия). Это время называется временем реакции
системы,
а соответствующее свойство системы - реактивностью. Для этих систем
мультипрограммная
смесь представляет собой фиксированный набор заранее разработанных программ,
а выбор программы на выполнение осуществляется исходя из текущего состояния
объекта или в соответствии с расписанием плановых работ.

БИЛЕТ№9.
1. Принципы работы компилятора.
Процесс трансляции на машинный язык программы, записной на объектно-
ориентированном языке, называется компиляцией. Она выполняется с помощью
компилирующей программы, представляющей собой другой тип языкового процессора.
Использование процедурно-ориентированного языка позволяет возложить детали
программирования на компилирующую программу. Для каждого оператора процедурно-
ориентированного языка компиляторы обычно генерируют несколько команд на
машинном языке. Компиляторы в силу необходимости зависят от обрабатываемого ими
языка, однако, все они включают следующие шаги/блоки:
• Исходная программа считывается и анализируется последовательно оператор за
оператором
• Подпрограмма лексического анализа просматривает каждый исходный оператор и
определяет зарезервированные слова, переменные, символы операторов, константы
и т.д. (блок лексического анализа)
• Подпрограмма синтаксического анализа определяет тип операторов и проверяет
допустимость структуры каждого оператора по соответствующим ограничителям
(TP – begin и end).
• Таблицы из списка символов, выражения и операторы обслуживаются таким
образом, чтобы можно было выполнить анализ связей между операторами.
• Выполняется анализ логической схемы программы и проводится глобальный
анализ ошибок
• В промежуточной символической форме, внутренней для компилятора,
генерируются команды машинного языка, и выполняется оптимизация (если
требуется)
• С промежуточного языка генерируется объектный модуль и создается листинг
программы
Подобно ассемблеру компилятор является для ОС прикладной программой.
Компилятор не имеет отношения к выполнению исходной программы. Он лишь
осуществляет её трансляцию в объектную программу.

2. Прерывания при вводе и выводе данных.


Qввi = 1 при появлении i-ого сигнала, связанного с вводом/выводом информации
Qввi = 0 в остальных случаях
Прерывания этого типа дают возможность ОС подготавливать и давать
запрограммированные ответы на запросы устройств ввода/вывода. Эти ответы выдаются
программой реакции на сигналы прерывания, которые возникают
• при появлении в работающей программе команд, относящихся к вводу/выводу
информации;
• при поступлении синхронизирующих сигналов со сторонних устройств ввода
вывода
• при вмешательстве оператора в работу устройств ввода/вывода
• по сигналу начала и окончания обмена информацией между ОЗУ и жестким
диском, при поиске требуемой дорожки

Прерывания, связанные с вводом-вводом, возникают при появлении в работающей на


компе команд, относящихся к вводу и выводу информации. При поступлении
синхронизирующего сигнала со стороны ввода- вывода, а также сигналов занятости,
готовности, сбоя ввода-вывода или вмешательства оператора ввода-вывода. При работе
оператора с пультом, или клавиатурой, или мышкой, также вырабатываются сигналы
ввода-вывода. Прерывания ввода-вывода возникают при появлении одного или
нескольких ук. Сигналов, что тоже связано с сигналом qв-в,I = 1 при появлении i ого
сигнала, и =0 в остальных случ.

Прерывания этого типа дает возможность процессору подготовить и давать запрограмир.


Процесс(ответ) на запрос устройств в-выв. Эти ответы выдаются программными
реакциями на указанные выше сигналы ввода-выв. Для каждого из упомянутых сигналов
требуется своя реакция. Если имеется несколько прерываний типа ввода-вывода либо с
одним входом, то для этого существует нужная только одна прога., реакции со многими
входами, по сигналу от каждого устройства(клавиши) либо с 1 входом передающим
управление(определяющего номер устройства вызываемого прерывания).
БИЛЕТ№10.
1. Принципы работы интерпретатора.
Интерпретаторы осуществляют последовательную обработку (перевод) операторов
программы в их интерпретацию – выполнение машинных команд, реализующих данную
операцию.
Интерпретатор — программа, которая допускает в качестве входа исходную программу,
записанную на языке, называемом исходным языком, и производит вычисления,
предписываемые этой программой. В отличие от компилятора генерирует машинный код
для каждого оператора, выполняет его, передает результат следующему оператору и
стирает машинный код после его выполнения. Результат работы И.- решение задач,
экономия памяти, но сильное замедление хода отладки и вычисления.

Транслятор – всю цепочку переводит в машинный код


Интерпретатор – по операторам

2. Программные прерывания.
Программные прерывания – прерывания, связанные с ошибками в программах.
o Потеря значности ( 0.3 * 0.2 * 0.6 …. получается в результате 0)
o Переполнение разрядной сетки
o Запретная команда (экстракоды, псевдокоды и т.д.)
o Неверный код операции
o Неправильная адресация
o Деление на 0
o Защита памяти
Фиксируются соответствующими индикаторами.
Появление каждого из
перечисленных сигналов вызывает
прерывание текущей программы и
переключение центрального
процессора на выполнение
требуемой реакции.
При появлении
программных ошибок программа
реакции на прерывания этого типа
выдает оператору сообщение с
указанием типа ошибки и места её
расположения. При этом для
каждого типа программной ошибки должен быть свой текст сообщения. Количество
программ-реакций на программные ошибки определяется числом фиксированных типов
ошибок в программе (обуславливается возможностями аппаратного контроля).
Для обработки событий, происходящих асинхронно по отношению к выполнению
программы, лучше всего подходит механизм прерываний. Прерывание можно
рассматривать как некоторое особое событие в системе, требующее моментальной
реакции. Программные прерывания удобно использовать для организации доступа к
отдельным, общим для всех программ модулям. Например, программные модули
операционной системы доступны прикладным программам именно через прерывания,
и нет необходимости при вызове этих модулей знать их текущий адрес в памяти.
Прикладные программы могут сами устанавливать свои обработчики прерываний для
их последующего использования другими программами. Для этого встраиваемые

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

БИЛЕТ№11.
1. Стэк.
Структура данных как бы объединяющая в себе очередь и магазин. Данные могут
извлекаться как по FIFO (first In – first out), так и по LIFO (last In – first out)

Стек (англ. stack = стопка) — структура хранения данных, подмножество структур типа
«список» со специфическим методом доступа к элементам.

Метод доступа к элементам стека в одной фразе можно определить как «последним
пришёл — первым вышел» (LIFO, Last In — First Out). Добавление элемента возможно
только в вершину стека (добавленный элемент становится первым в стеке), удаление —
также только из вершины стека. Операцию добавления элемента в стек принято называть
словом «push», извлечения — «pop».

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

2. Временные прерывания.
Временные прерывания осуществляются при поступлении сигналов от датчиков
времени. Эти прерывания служат для обеспечения работы компьютера в реальном
масштабе времени, а также для реализации алгоритмов управления объектами,
требующих выполнение определенны программ в некоторые фиксированные моменты
времени.
Временные прерывания действуют в том случае, если получен сигнал от i-ого
датчика времени (Qврi = 1). Датчиками времени могут быть, например,
стабилизированные генераторы периодических сигналов, поступающих в систему
прерывания, а также счетчики абсолютного и относительного времени, реализуемые
программами/аппаратно. В независимости от способа реализации датчики в определенные
моменты времени посылают сигналы, фиксирующие окончание некоторого промежутка
времени, тем самым вызывая временные прерывания. Примером счетчика
относительного времени может быть некоторая ячейка памяти и программа,
устанавливающая ей в определенные состояния, каждый цикл вычитая по единице (111 …
110 … 101).
В некоторых системах используются программы, которые нужно выполнять в
определенное время суток, в соответствии с календарем. Это требование также
реализуется по средствам использования временных прерываний.
В качестве иллюстрации этого вида прерываний рассмотрим случай, когда в компьютере
имеется один генератор сигналов времени, по которому с определенной частотой
производится опрос датчиков времени. Сигналы от этого генератора вызывают временные

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

БИЛЕТ№12.
1. Очередь.
О́чередь — структура данных с дисциплиной доступа к элементам «первый
пришёл — первый вышел» (FIFO, First In — First Out). Добавление элемента (принято
обозначать словом enqueue) возможно лишь в конец
очереди, выборка — только из начала очереди (что
принято называть dequeue, при этом выбранный
элемент из очереди удаляется).

28
2. Дисциплины обслуживания прерываний.
Правило выбора запроса прерывания для обслуживания называется дисциплиной
обслуживания. В системах прерывания современных компьютеров используются
следующие дисциплины обслуживания:
1) ДО с циклической очередностью. Жесткий порядок обрабатываемых запросов.
Циклический опрос СП с определенной частотой. В простых СП все разряды
последовательно опрашиваются (и как обнаружится, что очередной разряд
установлен в 1, дальнейший опрос других разрядов прекращается и начинается
обслуживание этого прерывания. Опрос возобновляется со следующего
прерывания)
2) ДО с относительным приоритетом. Заключается в том, что из множества запросов
прерывания, хранящихся на РП, выбирается для обработки один наиболее важный
(согласно присвоенному приоритету). Если в момент обслуживания этого запроса
приходит более важный по приоритету запрос, то он ожидает обработки до тех
пор, пока не будет выполнена программа реакции на менее важный запрос
прерывания
3) ДО с абсолютным приоритетом. В каждый момент времени обрабатывается
наиболее важный запрос прерывания, независимо от того, сколько менее важных
запросов ожидают выполнения или довыполняются при таком порядке обработки.
4) ДО с разделением времени. При нем для каждого запроса выделяется квант
времени, в течении которого запрос должен обслуживаться. Если кванта
достаточно, то запрос полностью обслуживается, в ином случае выполнение его

29
прерывается и выполняется следующая по порядку запрос и так циклически
опрашивая происходит обработка всех запросов, пока не будут обработаны все
запросы.

БИЛЕТ№13.
1. Магазин.
Магазин — структура данных с методом доступа к элементам LIFO (Last In —
First Out, последним пришел — первым вышел). Чаще всего принцип работы сравнивают
со стопкой тарелок: чтобы взять вторую сверху, нужно взять верхнюю.
Добавление элемента, называемое также проталкиванием (push), возможно только
в вершину (добавленный элемент становится первым сверху), выталкивание (pop) —
также только из вершины стека, при этом второй сверху элемент становится верхним.

2. Общая структура системы прерывания.


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

30
1) Сигналы о событиях, возникающих в самом компьютере (как в аппаратуре, так и в
программах), в.т. сигналы, вызываемые специальными командами. Qвнi
2) Сигналы, которые поступают от датчиков времени компьютера Qврi
3) Сигналы, связанные с вводом/выводом информации Qввi
4) Сигналы запросов, поступающие в компьютер от подключенных к нему внешних
объектов (сетевые трафики, внешние пульты…) Qзi
Таким образом, условие, при котором возможно прерывание текущей программы можно
записать в виде:

Высказывание Qсп = 1 (сигнал прерывания будет сформирован в момент времени t), когда
хотя бы одно из высказываний в правой части равно 1. Иначе Qсп = 0.
Число условий (источников) прерываний n = k+s+m+l.
Приведенная классификация условий прерывания обусловлена по признаку места и
характера условия прерывания.

Каждому сигналу/группе сигналов прерывания от однотипных источников должен


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

31
Система прерывания состоит из:
• индикатора событий (условий прерывания)
• регистров, хранящих запросы прерывания системы
• схемы формирования сигналов прерывания, поступающих в процессор
• устройств, осуществляющих запоминание состояния компьютера в момент
прекращения выполнения текущей программы
• схемы выбора запросов прерывания
Контролер прерывания ПК.
Имеет схемную и программную составляющую. Схемная составляющая:

Особенность: здесь имеет место вызывание прерываний по средствам линий связи с


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

БИЛЕТ№14.
1. Функции операционной системы при управлении языковым
процессора
Эволюция СПО привела к
возникновению некоторой оболочки –
операционной системы, которая позволяет
обычному пользователю общаться с
устройствами компьютера с помощью

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

Операционные системы, включающие в свой состав, в том числе системные


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

Виртуальная машина представляет собой ряд слоёв операционной системы:


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

33
2. Функционирование системы прерывания.
Общий алгоритм системы прерываний (функциональная схема):

Схема временных диаграмм процесса прерывания

БИЛЕТ№15.
1. Программы и подпрограммы и их виды.
Для удобства исполнения библиотек подпрограмм, программы часто строятся из главной
программы и одно или более подпрограмм.
Подпрограмма характеризуется 3-мя свойствами:
• Функция/оператор. Подпрограмма-функция выдает в явном виде полученный
результат и может быть использована в выражении как термин. Подпрограмма-
оператор не выдает явного результата и обычно вызывается с помощью
специального оператора (call,
например).
• Открыта/замкнута. Открытая
подпрограмма – храниться в

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

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


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

35
2. Архитектура ПК, управляемая событиями.
Когда windows посылает программное сообщение, имеется ввиду, что windows
вызывает функцию внутри программы. Параметры этой функции описываются
параметрами сообщения. Эта функция находящаяся в программе пользователя для
windows называется оконной процедурой. Обычно в практике программирования в среде
ОС учитывается то, что вызовы в ОС делает разработанная программа. Но в случае с
работой в windows, она тоже может вызывать программу. У каждого окна создаваемого
программой имеется соответствующая оконная процедура. Эта процедура реализуется
функцией, которая может быть записана либо в самой программе, либо в DLL. Windows
посылает сообщение окну путём вызова оконной процедуры, на основе этого сообщения
окно совершает какие то действия, и затем возвращает управление windows. Окно
создаётся на основе класса окна. Класс определяет оконную процедуру, обработку
посылаемых окну сообщений.
Использование класса окна позволяет создать множество окон на основе одного и
того же класса и, следовательно, использовать одну и ту же оконную процедуру. В ООП
любой объект несёт в себе сочетание кода и данных. Окно – объект, код – оконная
процедура, данные – информация, хранимая оконной процедурой и системой windows для
каждого класса окна, который имеется в системе.
Оконная процедура обрабатывает сообщения поступающие к окну. Часто эти
сообщения передают окну информацию о том, что пользователь совершил ввод с
клавиатуры или мышки. Когда программа начинает выполнение, windows строит для неё
очередь сообщений. В ней хранятся сообщения для любых типов окон, которые могли
быть созданы программой. Небольшая часть программы, которая называется циклом
обработки сообщений, выбирает их из очереди и переправляет их в соответствующую
оконную процедуру.
БИЛЕТ№16.
1. Объектный модуль.
Выходом языкового процессора является объектный модуль, который компьютер
не может выполнить непосредственно и который должен быть подготовлен к выполнению
одной из 2-х обслуживающих программ: редактор связей/загрузчик.
Логическая структура объектного модуля включает 3 составляющие: словарь
внешних символов, текст (код), словарь перемещений.
• словарь внешних символов (внешний символ – символ, который может
использоваться и в других программах) содержит запись для каждого внешнего
символа либо определенного внутри объектной программы, либо такого, на
который внутри объектной программы есть ссылка. Запись из словаря внешних
символов включает имя внешнего символа (может быть и сам символ), тип ссылки
на него и его место в программе. «словарь имен»
• Текст включает команды и данные программы
• Словарь перемещений содержит запись для каждой перемещаемой адресной
константы, которая должна быть настроена до выполнения модуля. Запись из
словаря перемещений определяет адресную константу, определяя её место в
программе. Компоновщик сам не может определить, какие
слова в тексте содержат машинные команды, а какие — константы. Поэтому
в этой таблице содержится информация о том, какие адреса нужно
перераспределять.

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


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

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

Объектный модуль – код программы после трансляции (компиляции),


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

2. Клавиатура в Windows.
Прикладной программист узнаёт о нажатии клавиш по средствам сообщений,
которые посылаются оконной процедурой .Когда пользователь нажал и отпустил
клавишу, драйвер клавиатуры передаёт информацию о нажатии клавиши в windows.
Windows сохраняет эту информацию в виде сообщения в системной очереди сообщений.
Затем эта ОС передаёт сообщения клавиатуры по одному за каждый такт в очередь
сообщений программы. И эта программа отправляет сообщения соответствующей
оконной процедуре. Смысл этого двустороннего процесса заключается в том, чтобы на
первой ступени сохранить сообщение в системной очереди сообщений и на второй
ступени осуществить передачу в очередь сообщений соответствующего приложения.
Клавиатура так же должна работать в режиме разделения времени, если в
программе несколько окон. Для отображения различных сообщений клавиатуры windows
посылает программе 8 различных сообщений, причём сообщения, которые приложение
получает от windows о событиях относящихся к клавишам, различаются на сообщения
клавиш (нажата или отпущена) и сообщения о символе соответствующей клавиши. При
нажатии клавиши windows помещает либо сообщение WM_KEYDOWN, либо
WM_SYSKEYDOWN в очередь сообщений окна имеющей атрибут фокус ввода.
Когда отпускают клавиши…АП
Для всех аппаратных сообщений клавиатуры в оконную процедуру передаётся 32-х
разрядная переменная lParam, которая состоит из шести полей:
1)Счётчик повторений (Repeat count)
2)Скан код (OEM)
3)Флаг расширенной клавиши (Extended key Flag)
4)Код контекста (Context code)
5)Флаг предыдущего состояния клавиши (Previous Key Flag)
6)Флаг текущего состояния клавиши (Transition State)
Счётчик повторений = числу нажатий клавиши. В большинстве случаев он = 1.
Если клавиша остаётся нажатой, а оконная процедура не достаточно быстра, чтобы
обработать сообщение в темпе автоповтора, то windows объединяет несколько сообщений
в одно и увеличивает счётчик повторений.
Для сообщений об отпущенной клавише счётчик всегда = 1.
Scan code OEM – является кодом клавиатуры генерируемый аппаратным способом.
Флаг расширенной клавиатуры – устанавливается в 1, если сообщения клавиатуры
появляются в результате работы операции с дополнительными клавишами расширенной
клавиатуры (Ctrl, Alt и др.).

37
Код контекста устройства – устанавливает в 1, если нажата клавиша Alt. Этот
разряд всегда равен 1 для сообщений об отпущенной клавише.
Флаг предыдущего состояния клавиши – равен 0, если в предыдущем состоянии
клавиша была отпущена и = 1, если была нажата.
Флаг состояния клавиши – равен 0, если клавиша нажимается, и =1, если
отпускается.

БИЛЕТ№17.
1. Загрузочный модуль.
Выходом редактора связей является модуль загрузки, который может быть загружен
подпрограммой ОС в основную память для выполнения.
Каждый выходной модуль, обрабатываемый редактором связей, имеет начальный адрес,
присвоенный ему при ассемблировании, компиляции или предыдущей обработки
редактором связей.
Когда создается выполняемый загрузочный модуль, редактор связей присваивает
начальный адрес тексту первого модуля и соответственно настраивает адресные
константы текстам других модулей, так же как их адресным константам адреса
приписываются относительно этого начального адреса так, что объединенный текст всех
модулей занимает последовательные адреса в модуле загрузки. Внешние ссылки между
модулями разрешаются (устанавливаются) путем сопоставления символов связи с уже
определенными символами.

Словари внешних символов модулей объединяются, формируя объединенный СВС.


Выходной словарь перемещений включает информацию о перемещениях полного текста
модуля загрузки.
Модуль загрузки имеет перемещаемый формат (также как и объектный модуль), но текст
представляет собой готовый к выполнению машинный код. Он помещается в библиотеку
готовых к выполнению программ для последующей загрузки с помощью «программы
выборки». Когда пользователь требует, чтобы была выполнена его программа, программа
выборки извлекает её из библиотеки, помещает в основную память и настраивает её
адреса (адресные константы) с помощью обобщенного словаря перемещений.
Во время своей работы редактор связей пытается разрешить внешние связи
объектных модулей, заданных пользователем. Символы, которые ещё не определены,
после обработки всех модулей заставляют редактора связей просматривать иерархию
программных библиотек для разрешения ещё не установленных связей. Порядок:
библиотеки пользователя, системные библиотеки.
2. Управление «мышью» в ПК.
Мышь – графическое устройство с одной или более функциями. Windows поддерживает
одно, двух и трёхкнопочные мыши. Наличие мыши определяется с помощью функции
GetSystemMetrics. fMouse = GetSystemMetrics(SM_MOUSEPRESENT)
Значение fMouse=true, если мышь установлена. Иначе false.
38
Для определения количества кнопок: cButtons=GetSystemMetrics(SM_MOUSEBUTTON)
Оконная процедура получает сообщения от мышки в режиме процедуры. Определён
набор из 21 сообщений. Если курсор мыши перемещается по рабочей области окна, то
оконная процедура получает сообщение WM_MOUSEMOVE. Если кнопка мыши
нажимается или отпускается внутри рабочей области окна, то получает несколько
соответствующих сообщений. lParam содержит параметры мышки (положение мыши из 2-
х слов). Младшая координата х, а старшая y, от верхнего левого угла рабочей области
окна.

БИЛЕТ№18.
1. Перемещаемая объектная программа.
Прежде, чем любая программа сможет быть выполнена, объектные модули, из которых
составляется программа, должны быть так связаны друг с другом, чтобы управление
программой передавалось бы между модулями без помощи ОС. Этот процесс
объединения объектных модулей требует, чтобы модули были перемещаемыми. Свойство
перемещаемости означает, что объектная программа существует в таком виде, что
содержащиеся в ней адресные константы могут быть настроены с учетом изменения
абсолютного адреса начала отсчета. При объединении объектных моделей они
перемещаются, требуя изменения абсолютного адреса начала отсчета.
Информация, необходимая для перемещения объектной программы (такая, как
местоположение в программе адресных констант) вырабатывается языковым процессором
и существует вместе с другой управляющей информацией как часть объектного модуля.
Объектная программа, которая может быть перемещена – перемещаемая объектная
программа. Иначе – абсолютная объектная программа.
2. Программный и аппаратный таймер в ПК.
Таймеры бывают двух видов: программные и аппаратные. Количество аппаратных
таймеров ограничено архитектурой вычислительного узла. Количество программных –
архитектурой ОС. Одним из подвидов программных таймеров являются пользовательские
таймеры. Пользовательский таймер – счетчик и обработчик этого счетчика. Любой
программный таймер основывается на программных таймерах. Для таймера существует
понятие – исключение таймера. Синхронизация по времени обеспечивается по меткам
прерывания, выполнение каждой задачи реализуется по временному интервалу. Любой
программный таймер должен быть кратен аппаратному таймеру. Если это условие не
выполняется, то синхронизация по времени не возможна.
Датчиками времени могут быть, например, стабилизированные генераторы
периодических сигналов, поступающих в систему прерывания, а также счетчики
абсолютного и относительного времени, реализуемые программами/аппаратно. В
независимости от способа реализации датчики в определенные моменты времени
посылают сигналы, фиксирующие окончание некоторого промежутка времени, тем самым
вызывая временные прерывания. Примером счетчика относительного времени может
быть некоторая ячейка памяти и программа, устанавливающая ей в определенные
состояния, каждый цикл вычитая по единице (111 … 110 … 101).
В некоторых системах используются программы, которые нужно выполнять в
определенное время суток, в соответствии с календарем. Это требование также
реализуется по средствам использования временных прерываний. Часто в системе
существует несколько часов: одни указывают текущее время суток, другие – вызывают
прерывания по источнику задачи.
Таймер windows является устройством ввода информации, которая передаёт из системы в
прикладную программу или приложение сообщение о том, что истёк заданный интервал
времени. Это сообщение имеет имя WM_TIMER. Цели использования таймера:
1)Для обеспечения режима многозадачности.

39
2)Поддержка обновления информации о постоянно меняющейся информации, связанные,
например, с системными ресурсами.
3)Завершение демонстрационных версий программы или сигнализации прикладной
программы об истечении времени.
4)Обеспечение мультимедийных программ.
Таймер можно присоединить к прикладной программе с помощью функции SetTimer.
KillTimer – очищает очередь сообщений от всех необработанных сообщений.
Windows сама обрабатывает аппаратные прерывания и приложение их не получает.
Таймер похож на клавиатуру и мышь, т.е. драйвер обрабатывает асинхронный аппарат
прерываний, а windows…Когда происходит аппаратное прерывание, выполнение текущей
программы приостанавливается и управление передаётся обработчику прерываний. И
когда прерывание обработано, управление возвращается к прерванной программе.
БИЛЕТ№19.
1. Редактирование связей.
Организация связей между объектными модулями, предшествующая их
выполнению, называется редактированием связей и осуществляется обслуживающей
программой «редактор связей».

Данные, подлежащие обработке редактором связей, могут иметь одну из 4-х форм:
1) Объектные модули и задаваемая пользователем информация для редактора связей
2) Объектные модули из библиотек программ пользователя
3) Объектные модули из системной библиотеки (динамически подключаемые
библиотеки с автоматическим вызовом)
4) Модули загрузки
Управляющая информация, записанная на том или ином носителе должна присутствовать
всегда, поскольку именно она является исходными данными для ОС, которая
обеспечивает выполнение заданной функции.
Программа или данные могут храниться либо в библиотеках, либо в файлах данных,
доступных для выборки их ОС.
Управляющая информация может быть задана в виде приложений на специальном языке –
«язык выполнения заданий».
Выходом редактора связей является модуль загрузки, который может быть загружен
подпрограммой ОС в основную память для выполнения.

Редакторы бывают 3 разновидностей.

1) Загрузчик – загружает объектный модуль и передает управление на точку входа


программы.

2) Компоновщик – формирует исполняемый файл, точно соответствующий образу


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

40
3) Компоновщик, генерирующий псевдоперемещаемый код – записывает в исполняемый
файл таблицу перемещений (relocation table), где содержатся данные о ячейке внутри кода,
которая зависит от местоположения в памяти. Такой исполняемый файл перед запуском
программы требует настройки. Этим занимается операционная система, в формате
которой создается исполняемый модуль.

2. Общая постановка задачи управления памятью.


Одной из основных функций ОС является эффективное управление памятью. Оперативная
память (ОП), или основная память, или память с произвольным доступом (Random Access
Memory RAM) является достаточно дорогостоящим ресурсом. Время доступа к ОП
составляет всего несколько циклов процессора, поэтому работа с данными находящимися
в памяти, обеспечивает максимальную производительность. К сожалению, данный ресурс,
как правило, ограничен. Поэтому данные, которые не могут быть размещены в ОП,
располагаются на вторичных устройствах хранения, или во вторичной памяти, роль
которой обычно выполняют дисковые накопители. Время доступа ко вторичной памяти на
несколько порядков превышает время доступа к оперативной памяти и требует активного
содействия ОС. Подсистема управления памятью ОС отвечает за справедливое и
эффективное распределение разделяемого ресурса ОП между процессами и за обмен
данными между оперативной и вторичной памятью. Можно сформулировать ряд
возможностей. Которые должна обеспечивать подсистема управления памятью
современной многозадачной ОС.  Выполнение задач, размер которых превышает размер
ОП.  Выполнение частично загруженных в память задач, для минимизации времени их
запуска.  Размещение нескольких задач в памяти одновременно. Для повышения
эффективности использования процессора.  Размещение задач в произвольном месте
ОП.  Совместное использование несколькими задачами одних и тех же областей
памяти.  Размещение задачи в нескольких различных частях ОП. Оперативная память
является особым ресурсом. Поскольку её распределение должно проходить не
изолировано, а согласованно с распределением центрального процессора. Нужно
стремиться выбирать не только «хороший» по некоторым критериям алгоритм
распределения процессора, но и соответствующий ему алгоритм распределения ОП, с тем
чтобы обеспечить работу машины с требуемыми характеристиками в том или ином
варианте мультипрограммной работы.
Задача управления памятью на программном уровне возникла тогда, когда память делят
между собой сразу несколько программ.
В компьютерах используются несколько многопрограммных режимов, основные из
которых:
1)Режим мультипрограммирования (эффективного использования ресурсов)
2)Режим разделения времени, когда несколько пользователей с помощью пультов
используют общие вычислительные ресурсы памяти с учётом требований минимизации
откликов системы, чтобы каждый пользователь имел эффект индивидуального
пользования.
3)Режим реального времени, когда компьютер работает с управляемыми объектами в
режиме прерывания.

41
БИЛЕТ№20.
1. Разрешение внешних ссылок.
Внешние ссылки между модулями разрешаются путем сопоставления символов
связи с уже определенными символами.
Статическое и динамическое разрешение внешних ссылок.
Процесс разрешения внешних ссылок на этапе создания исполняемого модуля –
статическое разрешение ссылок. Возможно и динамическое подсоединение нужных
модулей на этапе работы программы.
а) Динамически вызываемый загрузчик, т.е. программа вызывает загрузчик и
подсоединяет недостающие части. Такой подход невыгоден (сложен и требует много
времени)
б) DLL – принцип разделяемых библиотек. DLL – это пакет функций, отредактированный
для исполнения в позиционно-независимом стиле. Имеет таблицу всех содержащихся
функций. Для работы с ним программа выполняет 1) функцию загрузки DLL, 2)переход
по смещению в таблице функций.

Внешние ссылки из сегмента позволяют получать доступ к данным, которые объявлены в


другом модуле. Для объявления внешних ссылок в компиляторах с ассемблера
используется директива EXTRN. Пример использования:

EXTRN maybe:far

2. Мультипрограммные режимы и разделение памяти.


В настоящее время используется три основных режима многопрограммной работы
компьютера:
1) Мультипрограммный, целью которого является эффективное использование
внутренних устройств компьютера при вводе вводе/выводе информации с и на медленно
действующие устройства
2) Режим реального времени. Использование компьютера в функциях управления, когда
компьютер должен выполнять программы в заданный промежуток времени
3) Режим разделения времени. Когда для выполнения каждой работы выделяется квант
времени и эти N. В этом случае пространство памяти надо делить между несколькими
программами и наиболее полно использовать простой
Многопрограммным использование компьютера называется параллельное
выполнение 2-х и более независимых программ с использованием одного центрального
процессора и единого пространства оперативной памяти.
В ПК используются разновидности многопрограммного использования, связанные
с одновременным выполнением нескольких заданий и многопоточным выполнением. При
этом под заданием понимается выполнение всех этапов и выполнение программы.

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

3 вида информационных сред:


1) Внутренняя информационная среда – программные данные, непосредственно
выполняемые на компьютере. Информация этой среды располагается во внутренней
памяти компьютера
2) Внутренняя пассивная среда, о которой компьютер знает. Информация не обязательно
располагается во внутренней памяти
3) Внешняя информационная среда.
Информация необходима для связи с дополнительными средствами для решения задач и
для решения задач (программы и данные)
R – множество идентификаторов и номер программы.
Многопрограммные компьютеры взаимодействуют с информационными средами.
При взаимодействии с информационными средами осуществляется обмен информацией.
Особую роль в некоторых играет внутренняя память, т.к. там расположена оперативная
информация, необходимая для вычисления по заложенным алгоритмам и информация,
необходимая для осуществления пересылок информации.
При взаимодействии с внутренней средой оперативная память играет роль буфера или
роль хранилища программы операционной системы.

БИЛЕТ№21.
1. Загрузка программы.
Программа-загрузчик используется
в тех случаях, когда нет
необходимости создавать отдельные
модули загрузки для программных
библиотек. Загрузчик объединяет
модули, создаваемые языковым
процессором и загружает их для
выполнения непосредственно в
основную память.
Программа выборки
отличается от загрузчика
эффективностью работы, хотя по
функциям они одинаковы.

43
Программа выборки просматривает программную библиотеку в поиске требуемого
модуля загрузки и помещает его в основную память. Загрузчик объединяет объектные
модули таким же образом, как это делает редактор связи и разрешает внешние ссылки,
просматривая библиотеки подпрограмм.
Оператор может запустить два типа программ (если не считать командных файлов,
которые, вообще говоря, не являются программами, состоящими из машинных кодов) -
программы, имеющие расширение имени .COM и .EXE. Эти файлы имеют различный
формат и загружаются по-разному, однако, когда загрузка завершена, в памяти
компьютера эти два типа программ выглядят совершенно одинаково.
COM-файл - это двоичный образ программы, состоящий из кода и данных. То есть это
файл, содержащий программу в "чистом" виде. Такая программа (как и EXE-программа)
может загружаться в любое место памяти. DOS выполняет ее привязку к физическим
адресам при загрузке с помощью установки сегментных регистров. Существенным
ограничением COM-программы является то, что она не может занимать больше одного
сегмента (соответственно, файл .COM не может быть по длине больше 64К).
Программа в формате EXE может иметь любой размер. В самом начале файла
программы содержится заголовок (у COM-файла заголовка нет). Этот заголовок
используется операционной системой в процессе загрузки программы в память для
правильной установки сегментных регистров. Заголовок EXE-файла нужен только при
загрузке; когда программа загружена и готова к работе, самого заголовка уже нет в
памяти.
Процесс загрузки программ в память
Загрузка COM- и EXE-программ происходит по-разному, однако есть некоторые
действия, которые операционная система выполняет в обоих случаях одинаково.
Определяется наименьший сегментный адрес свободного участка памяти для загрузки
программы (обычно DOS загружает программу в младшие адреса памяти, если при
редактировании не указана загрузка в старшие адреса).
Создаются два блока памяти (и, следовательно, два блока MCB) - блок памяти для
переменных среды и блок памяти для PSP и программы.
Для DOS версии 3.х и старше в блок памяти переменных среды помещается путь файла
программы.
Заполняются поля префикса сегмента программы PSP в соответствии с
характеристиками программы (количество памяти, доступное программе, адрес сегмента
блока памяти, содержащего переменные среды и т.д.)
Устанавливается адрес области Disk Transfer Area (DTA) на вторую половину PSP
(PSP:0080).
Анализируются параметры запуска программы на предмет наличия в первых двух
параметрах идентификаторов дисковых устройств. По результатам анализа
устанавливается содержимое регистра AX при входе в программу. Если первый или
второй параметры не содержат правильного идентификатора дискового устройства, то
соответственно в регистры AL и AH записывается значение FF.
А дальше действия системы по загрузке программ форматов COM и EXE будут
различаться.
Для COM-программ, которые представляют собой двоичный образ односегментной
программы, выполняется чтение файла программы с диска и запись его в память по
адресу PSP:0100. Вообще говоря, программы типа COM могут состоять из нескольких
сегментов, но в этом случае они должны сами управлять содержимым сегментных
регистров, используя в качестве базового адреса адрес PSP.
После загрузки файла операционная система для COM-программ выполняет следующие
действия:
сегментные регистры CS, DS, ES, SS устанавливаются на начало PSP;
регистр SP устанавливается на конец сегмента PSP;

44
вся область памяти после PSP распределяется программе;
в стек записывается слово 0000;
указатель команд IP устанавливается на 100h (начало программы) с помощью команды
JMP по адресу PSP:100.
Загрузка EXE-программ происходит значительно сложнее, так как связана с настройкой
сегментных адресов:
Считывается во внутренний буфер DOS форматированная часть заголовка файла.
Определяется размер загрузочного модуля по формуле:
size=((file_size*512)-(hdr_size*16)-part_pag
Определяется смещение начала загрузочного модуля в EXE-файле как hdr_size*16.
Вычисляется сегментный адрес для загрузки START_SEG, обычно используется
значение PSP+10h.
Загрузочный модуль считывается в память по адресу START_SEG:0000.
Сканируются элементы таблицы перемещений, располагающейся в EXE-файле со
смещением relt_off.
Для каждого элемента таблицы:
1. Считывается содержимое элемента таблицы как два двухбайтных слова (OFF,SEG).
2. Вычисляется сегментный адрес ссылки перемещения
REL_SEG = (START_SEG + SEG)
3. Выбирается слово по адресу REL_SEG:OFF, к этому слову прибавляется значение
START_SEG, затемсумма записывается обратно по тому же адресу.
Заказывается память для программы, исходя из значений min_mem и max_mem.
Инициализируются регистры, и программа запускается на выполнение.

2. Многозадачность и многопоточность.
Многозадачность-способность ОС управлять выполнением нескольких программ
одновременно на вычислительной системе с фоннеймановской архитектурой. В основе
этого принципа лежит использование ОС аппаратного таймера для выделения отрезков
времени и аппаратных программных средств для обслуживания прерывания. Если
выделенные отрезки времени очень малы и компьютер не перегружен большим числом
программ, то пользователю кажется, что все эти программы выполняются параллельно.
Многозадачность персональных компьютеров стала использоваться в последнее время с
появлением ОС WINDOWS и 16-разрядных процессоров. Начиная с WINDOWS-98 – 32-
разрдной версии WINDOWS кроме многозадачности поддерживается и многопоточность.
Многопоточность – возможность программы самой быть многозадачной, т.е.
программа в этом случае делится на отдельно выполняемые потоки, которые
выполняются параллельно, как кажется пользователю. Программы могут использовать
многопоточность для выполнения программ в фоновом режиме и пользователь не
отрывается от компьютера. Кроме того существует два вида многозадачности
Невытесняющая
Вытесняющая.
При управлении на этом этапе в том случае, если выполняется несколько программ
(нитей, процессов) должна создаваться иллюзия работы нескольких процессоров
Иллюзия множества процессоров осуществляется
моделированием с помощью метода
мультиплексирования во времени:
CPU1 CPU2 CPU3 CPU1 CPU2

Time

45
В основе этой модели лежит виртуальный CPU, который структурно должен иметь:
 Программный счетчик
 Указатель стека
 Регистры
Переключение из одного виртуального CPU на другой осуществляется запоминанием
содержимого счетчика инструкций, указателя стека и содержимого всех регистров в
некотором текущем блоке состояний и загрузкой программного счетчика, указателя стека,
регистров из нового блока состояния.
В качестве переключателей используются триггеры таймера, поля событий, запросы ввода
вывода и др.
Все виртуальные CPU делят одни и те же, но не CPU’шные ресурсы: устройства
ввода/вывода, различные виды внешней памяти.
Предусмотрены алгоритмы для организации многонитевой работы: защита памяти
(каждое задание не имеет доступа ко всей памяти), защита устройств ввода/вывода
(каждое задание не имеет доступ к каждому устройству).
Обеспечение иллюзии отдельного адресного пространства обеспечивается
загрузкой новой трансляционной карты при переключении с процесса на процесс. При
возникновении мультиплексного процесса (многопрограммного / многопоточного /
многонитиевого), состояние текущего процесса запоминается в некотором блоке PCB
[process control block], т.е. создается фотография вычисления и защиты пространства. При
этом только один блок PCB активен в текущий момент.
Предварительно перед выполнением очереди процессов включается программа
распределения времени CPU по различным процессам (каждому CPU – время. Т.е.
осуществляется планирование scheduling программой «планировщик»), т.к. только один
процесс выполняется в физическом CPU в одно время.
В процессе управления общим вычислительным процессом осуществляется
управляемый доступ к непроцессорным ресурсам, реализуются механизмы
моделирования при распределении памяти. При этом каждому процессу приписывается
его собственное адресное пространство. В т.ч. реализуется механизм дуальности режимов
выполнения операций типа ядро-пользователь.
В случае конфликтов осуществляется арбитраж
мультиплесирования ввода/вывода через системные
вызовы (некоторые прерывания).
Блок управления процессом PCB – выделенная
область памяти, где хранится управляющая информация
для осуществления процесса. Область памяти состоит из
нескольких полей. 

Механизм переключения CPU схематически можно изобразить:

46
В литературе такой алгоритм функционирования называют контекстным фоновым
переключением.

В соответствии с диаграммой когда процесс выполняется, он изменяет своё состояние:


 Новый – процесс создается
 Готов к выполнению – процесс создан и ждет выполнения
 Ожидание – процесс ждет, когда наступит некоторое событие
 Окончание – процесс должен окончить вычисление
PCB продвигается из очереди в очередь процессов, т.к. этот блок входит в состав
управления, которое изменяет состояние вычислительной системы и принимает решение о
том, какая дисциплина обслуживания очередей принята. Как минимум, это – программа
планировщик.
Для того чтобы создать процесс управление должно:
 Сконструировать новое PCB
 Установить новые таблицы страниц для адресного пространства
 Скопировать данные из прародительского процесса
 Скопировать состояния ввода/вывода

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

Программа – часть состояния процесса. Она может вызвать более чем один процесс.
Внутри процессной связи IPC (Intel Process Communications) используют различные
механизмы (алгоритмы) для коммуникации (взаимодействия) процессов и синхронизации
их работы во времени.
Функции IPC обеспечиваются двумя операциями
- sent (message)
- receive (message)
Если два процесса P и Q желают взаимодействовать друг с другом, им нужно установить
между собой связи, обмениваться посланиями по средствам передачи/приёма.
Применяемые коммутационные связи могут быть физическими (например, общее поле
памяти, техническое обеспечение и др.) или логическими (виртуальные уровни).

БИЛЕТ№22.
1. Выполнение задания.
Задание – выполнение такой последовательности взаимосвязанных
обрабатывающих программ, которая охватывает всю решаемую прикладную задачу.
Выполнение одной обрабатывающей программы называется шагом задания. Например:
• Компиляция
• Ассемблирование
• Редактирование связей
• Выполнение модуля загрузки
Когда пользователь передает на рассмотрение ОС единицу работы, он представляет на
рассмотрение задание, которое включает один или более шагов. При оформлении задание
включает управляющую информацию в программу и данные.

48
2. Физическая и логическая структура памяти.
При страничной организации основная память делится на блоки фиксированного размера,
обычно называемые рамка страниц. Каждая программа пользователя делится на блоки
сответствующего размера, называемые страницами. Страницы организуются в логическом
адресном пространстве, а рамки cтраниц - в физическом. Поскольку страницы и рамки
страниц имеют различные идентификаторы, возникают интересные ситуации, касающиеся
взаимосвязи между логическим адресным пространством (ЛАП) и физическим адресным
пространством ФАП).

1. ЛАП < ФАП. В этом случае основной акцент делается на повышение эффективности
использования памяти.

2. ЛАП = ФАП. Страничная организация служит не только для увеличения эффективности


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

3. ЛАП > ФАП. Этот случай предполагает виртуальную память и дает наибольшие
преимущества.

Мы будем рассматривать управление страницами применительно к последнему случаю.


Выбор между случаями 1 и 2 обычно находится в зависимости от структуры Устройства
Управления Памятью (УУП) и задач проектировщика операционной системы.
Пользователь, располагая ЛАП из m страниц, будет иметь k страниц, отведенных под
интерпретатор, и m - k страниц рабочего пространства. Описанный подход эффективен
для системы с разделением времени.

БИЛЕТ№23.
49
1. Программные средства для управления видеопамятью.
Управление видеорежимами
Управление видеорежимами состоит в том, чтобы осуществить нужные переключения
тех или иных свойств, присущих битовой карте и устройствам ввода/вывода графических
данных, определить виды используемых адаптеров и устройств ввода/вывода, выбрать
нужный формат графического файла, сформировать графический файл и осуществить
вывод содержимого графического файла на экран. Всё это делается теми или иными
командами-инструкциями, которые вырабатываются прикладной программой или
управлением операционной системы, отвечающим за графику.
Фактически содержимое графического файла - это управляющая программа, которая
формируется в результате предшествующих выводу на печать или дисплей действий. Эти
файлы могут конструироваться по разному, но для обеспечения работы с
соответствующими устройствами вывода, они должны содержать как минимум
следующие элементы: наборы векторных и других команд для создания изображения;
таблицы информации о цвете рисунка; данные о шрифтах, которые могут быть включены
в рисунок и т.д.Некоторые графические форматы очень просты, ограничены несколькими
десятками возможных команд. Бывают форматы, содержащие сотни и тысячи команд. Как
правило для формирования графического файла используется код ASCII.
Простейшие форматы, которые могут вообще не содержать никакой информации о
цвете, используют цвет по умолчанию тех устройств, на которые они выводятся. В
предельном случае форматы должны содержать код цвета в виде полного 32-х битового
формата. В случае описания графических образов математическими зависимостями цвет
может относится к каждой точке, что приводит к значительному увеличению ёмкости
памяти для хранения графического файла.
Управление экраном с использованием операторов языка С++ и графической библиотеки
транслятора.
Фактически любая графическая операция при визуализации изображения сводится к
работе с отдельными точками - включить цвет заданной точки и узнать цвет заданной
точки. Однако большинство графических библиотек поддерживает работу и с более
сложными объектами, поскольку работа только на уровне отдельно взятых точек была бы
очень затруднительной для программиста и малоэффективна. Среди подобных объектов,
представляющих собой объединения точек, существуют следующие основные группы-
линейные изображения (растровые образы линий);сплошные объекты (растровые образы
двумерных областей);шрифты; изображения (прямоугольные матрицы точек).
Как правило, каждый компилятор имеет свою графическую библиотеку, которые
обеспечивают работу с основными группами объектов. При этом требуется, чтобы
подобная библиотека поддерживала работу с основными типами видеоадаптеров.
Существует несколько путей обеспечения этого. Один из них заключается в написании
версий библиотеки для всех основных типов адаптеров. Однако программист должен
знать изначально, для какого конкретно видеоадаптера он пишет свою программу, и уметь
использовать соответствующую библиотеку. Полученная же программа не будет работать
на других адаптерах, не совместимых с тем, для которого писалась программа. Поэтому
вместо одной программы должен разрабатываться целый набор программ для разных
видеоадаптеров. Можно включить в библиотеку версии процедур всех основных
адаптеров. Это обеспечит некоторую степень машинной независимости.
Другой подход связан с использованием драйверов устройств. Выделяется некоторый
основной набор графических операций так, что все остальные операции можно
реализовать ,используя только операции основного набора. Привязка к видеоадаптеру
заключается именно в реализации основных (базисных) операций. Для каждого адаптера
пишется драйвер- небольшая программа со стандартным интерфейсом, реализующая все
эти операции для данного адаптера, и помещается в отдельный файл. Библиотека в начале
своей работы определяет тип имеющегося видеоадаптера и загружает соответствующий

50
драйвер в память. Таким образом достигается полная машинная независимость
написанных программ. Для графических библиотек библиотеки компилятора Borland C++
для инициализации библиотеки служит функция
void far initgraf (int far* driver,int far*mode,char far*path);
Здесь первый параметр задаёт библиотеке тип адаптера, с которым будет вестись работа.
В соответствии с этим параметром загружается драйвер указанного видеоадаптера и
производится инициализация всей библиотеки. Определён ряд констант, задающих набор
стандартных драйверов: CGA, EGA, VGA, DETECT. Значение DETECT сообщает
библиотеке о том, что тип имеющегося видеоадаптера надо определить ей самой и
выбрать для него режим наибольшего разрешения. Второй параметр- mode- определяет
режим. В качестве третьего параметра выступает имя каталога.
Система Borland C++ обладает богатой библиотекой функций, которая позволяет
наладить хороший диалог пользователя с соответствующей программой компьютерной
графики. Это как раз и достигается развитой системой функций управления работой
экрана.
Пакет функций управления экраном делится на две части в соответствии с
возможностями компьютера. Первая-работа в текстовом режиме (text mode), вторая
работа в графическом режиме (graphics mode ).Библиотека функций для работы с
текстовым экраном, с заголовочным файлом CONIO.H, и библиотека работы с
графическим экраном с заголовочным файлом GRAPHICS.H не входит в стандат С.Эти
библиотеки существенно используют особенности операционной системы ,архитектуру
IBM PC и графику BGI (Borland Graphics Interface).

Управление видеорежимом через базовую систему ввода-вывода.


В общем случае управление режимом дисплея из прикладных программ
обеспечивается базовой системой ввода-вывода через прерывание 16. Со стороны
прикладных программ доступ к некоторым из этих режимов осуществляется через
соответствующие стандартные функции языков программирования. В языке Бейсик для
этого используются операторы SCREEN и WIDTH. На уровне команд ДОС некоторые
режимы можно установить с помощью утилиты MODE. Оператор SCREEN
устанавливает графический режим со средней разрешающей способностью (320 точек по
горизонтали,200 точек по вертикали),а оператор CLS очищает экран. Символ REM в 30-й
строке, как и другие подобные символы в 100-й ,160-й и 200-й строках, служат для ввода в
текст программы комментариев. Для комментирования отдельных операторов после них
ставится символ апострофа (`) и после него произвольный текст-это строки 110-
150,190,220. Группа операторов в строках 40-90 обеспечивает выдачу пользователю
начальных сообщений (оператор PRINT) и запрашивает у него параметры для рисования
цветных прямоугольников (операторами INPUT); при этом место на экране для выдачи
сообщений устанавливается оператором LOCATE.
В строках 110-150 работает подпрограмма построения прямоугольника и его
окраски. При этом используется специальный оператор LINE,который проводит линию
заданного цвета из одной точки в другую. Четыре линии проводится одна за другой в
направлении по часовой стрелке, начиная и заканчивая точкой, которая определена как
левый верхний угол прямоугольника с координатами X,Y. Затем оператор PAINT
окрашивает построенный прямоугольник в тот же цвет, что и цвет линий, начиная с
геометрического цвета прямоугольника (координаты центра рассчитываются по исходным
величинам –X ,Y,DX,DY).В строках 170-220 реализуется заключительная фраза
программы - пользователю предлагается нажать клавишу «пробел», если он хочет
повторить построение. В некоторых операторах используется двоеточие, что не оказывает
никакого влияния на выполнение программы.
В строке 180 для анализа ответа пользователя применена особая функция
INKEY$, которая в отличии от INPUT,ожидает ввода с клавиатуры сигнала от одной

51
единственной нажатой клавиши, а не последовательности символов, заканчивающихся
нажатием клавиши «ИСПОЛНЕНИЕ». Символ, соответствующий нажатой клавише
-значение функции INKEY$, присваивается символьной переменной K$.Пока клавиша
нажата, INKEY$ возвращает в переменную K$ пустую строку, а оператор GOTO
заставляет программу работать в режиме цикла. Принятый с помощью INKEY$ символ в
190-й строке сравнивается с пробелом. При несовпадении (обозначаемым символом <>)
происходит окончание работы программы с помощью оператора END. В противном
случае вступает в действие другой небольшой цикл (оператор FOR…NEXT в 210-й строке
программы). В теле этого цикла с помощью функций LOCATE и PRINTSPACE$(7)
очищаются те позиции в 3-5 –й строчках экрана, где пользователь вводил начальные
параметры. Очистка указанных позиций достигается тем, что в них пишутся символы
«пробел», вырабатываемые функцией SPACE$.В последней строке программы
оператором ВЕЕР задаётся короткий звуковой сигнал и происходит переход на
повторение процесса на строку 60.

2. Таблица FAT.
В файловой системе FAT используется связанный список индексов. С каждым кластером
связывается индекс (отдельная область диска занимает 1 кластер).

Логический раздел, отформатированный под файловую систему FAT состоит из областей.


• Первая область – загрузочный сектор, который содержит программу начальной
загрузки ОС
• Вторая область – основная копия FAT. Она содержит информацию о размещении
файлов и каталогов на диске
• Третья область – резервная копия FAT
• Четвертый раздел – корневой каталог. Фиксированная область емкостью 32 сектора
(16 Кбайт), что позволяет хранить 512 записей о файлах и каталогов, т.к. каждая
запись каталога состоит из 32 байт.
• Пятая область – область данных, предназначенная для размещения всех данных и
всех каталогов (кроме корневого)
Логическая запись является наименьшим элементом данных.
Первый способ представления данных в виде записи:

Здесь доступ к n-ой записи осуществляется путем последовательного чтения n-1


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

Каждая запись имеет поле. Здесь для поиска нужной записи система
должна последовательно считать все последующие записи.
Файлы, доступ к записям которых осуществляется последовательно по номерам
позиций, называется неиндексированным последовательностями. Индексированные

52
файлы записываются в виде одного или более ключевых (индексных) полей и записи
могут адресоваться путем указания значений этих полей.
Таблица FAT состоит из массива индексных указателей, количество которых равно
количеству кластеров в области данных. Индексный указатель может принимать ряд
значений, характеризующих состояние связанного с ним кластера.
• Кластер свободен
• Кластер используется файлом и не является последним
• Последний кластер файла
• Дефектный кластер
• Резервный кластер
Разновидности FAT: FAT12, FAT32, FAT16
FAT12 – 12-и разрядные указатели. Позволяет поддерживать до 4096 кластеров.

FAT16 – 16-и разрядные указатели. Позволяет поддерживать до 65535 кластеров.


FAT32 – 32-и разрядные указатели. Позволяет поддерживать до 4 млн. кластеров.

БИЛЕТ№24.
1. Архитектура видео подсистемы.
Техническое обеспечение – битовая карта (графический ускоритель) вместе с
дисплеем и дисплейным процессором.
Отличительным признаком растрового графического изображения является то, что оно
составлено из точек. Точки образуют на экране прямоугольную матрицу- «растр».Точки
являются неделимыми частями изображения в том смысле, что на экране можно изменить
цвет одной или более точек так, что конфигурация и цвет точек создадут
соответствующий рисунок. Количество точек по горизонтали и вертикали определяется
типом используемого устройства, эти числа фиксированы и называются разрешением
изображения.
Для растровых дисплеев или телевизионных мониторов характерно
следующее: если изображение на них постоянно за время порядка нескольких секунд не
обновлять, то оно «гаснет».Для ликвидации этого явления образ изображения в виде
множества точек должен где-то храниться и постоянно выводиться на дисплей с такой
частотой,чтобы глаз не успел заметить угасание картинки. Память для временного
хранения изображения называется «битовой картой».
Объем памяти определяет разрешающую способность (точек/дюйм). Дисплейная
память является частью адресуемого пространства IBM-совместимых ПК и она
естественным образом используется программами, выполняемыми на компьютере. Таким
образом, дисплейная память, с одной стороны, доступна центральному процессору и
соответствующей программе, с другой – для экрана дисплея так, чтобы экран мог
сканировать информацию, которую он должен отображать.

53
МП помещает данные в дисплейную память, а экран дисплея просматривает эти
данные для визуализации на экране (50-60-80 раз). Электронная схема управления
экраном дисплея сканирует дисплейную память и рисует новое изображение на экране,
отображая на экран всё, что записано в память. ПК имеет многочисленные видеорежимы –
способы изображения данных на экране дисплея. Каждый дисплейный адаптер имеет свой
набор видеорежимов, который он может использовать (VGA, SuperVGA…), при этом он
предъявляет особые требования к памяти.
Схема управления экраном дисплея обеспечивает растровый поиск, заключающий
в том, что на экране дисплея постоянно «рисует» движущийся электронный луч. Он
начинает с левого верхнего угла, Далее сканирует (развертывает) первую строчку
изображения слева направо, высвечивая активные части экрана, а затем перескакивает
назад налево, чтобы провести новую строчку. Так повторяется сверху донизу, в результате
чего рисуется изображение. В процессе сканирования лучом экрана схема дисплейного
адаптера постоянно считывает данные из дисплейной памяти и переводит биты данных в
сигналы, которые управляют электронным лучом.
Графические стандарты.
Требования к техническим и программным средствам компьютерной графики
определяются областями её применения, а также существующими и разрабатываемыми
графическими стандартами. Разработка графических стандартов началась с середины
1970-х голов, когда международная федерация по обработке информации IFIP объявила о
работах по началу разработки стандартов. Было принято, что основные цели
стандартизации:
• Адаптируемость (переносимость) прикладных программ
• Независимость от устройств
• Адаптируемость графических данных
Были выделены 3 различных стандарта, соответствующие эти целям (стандарты на
программные средства, стандарты по железу, стандарты по данным):
1) Базовая графическая система, обеспечивающая независимость прикладных
программ от специфики графических устройств
2) Протоколы виртуального графического устройства, которые обеспечивают
независимость самой базовой графической системы от специфики устройств
ввода/вывода (дисплея)  возможность быстрого подключения новых устройств
3) Протокол представления графической информации для её хранения во внешней
памяти, обеспечивающий независимость базовой графической системы от формата
графических данных.
Графическая система GKS
В середине 1980-х годов ISO был принят первые стандарт в области компьютерной
графики – стандарт на базовую графическую систему. По этому стандарту в Германии
была разработана типовая графическая система GKS (Graphical Kernel System)

54
В GKS определены 2 ортогональные шкалы. Первая – уровень сложности вывода
0,1,2. Вторая – уровень сложности ввода a,b,c.
Центральное понятие – виртуальная рабочая станция или абстракция графического
устройства, которая:
• Имеет видовую поверхность прямоугольной формы
• Может выводить на эту поверхность графические примитивы, возможно
интерпретируя по-своему их атрибуты
• Может иметь одно или несколько логических устройств ввода
• Хранит сегменты и выполняет операции над ними.
Рабочая станция может быть открыта, активирована (в этом случае в неё производится
ввод примитивов), деактирована (стерто значение), закрыта. С видовой поверхностью
может быть связано несколько буфером (буферная память), в которые накапливаются
изменения картинок и из которой эти изменения могут быть вытолкнуты на видовую
поверхность.
Графические примитивы – базовые элементы, которые считаются неделимыми и из
которых строится изображение или его сегмент.
Система GKS содержит 6 графических примитивов:
1) Ломаная линия, которая представляет собой плоскую ломаную линию с конечным
числом узлов
2) Полимаркер – множество точек, помеченное одним и тем же маркером х х х х
3) Текст – строка текста, состоящая из букв одного и того же шрифта, размера, цвета
4) Многоугольник – плоский многоугольник с конечным числом вершин, возможно
заполненный цветом/штрихом
5) Массив ячеек – прямоугольная решетка, часть ячеек которой может быть заполнена
цветом
6) Обобщенный графический примитив, который зависит от специализации рабочей
станции (примитив разработчика)
Примитив записывается как функция с параметрами. Атрибуты примитива –
параметры, определяющие его вид при появлении на рабочей станции. Примитив можно
принимать и как процедуру, тогда атрибуты – параметры процедуры.
Каждый конкретный примитив определяется в практических ситуациях большим
числом параметров. Ломаная (количество узлов, координаты узлов, цвет, толщина, тип
линии, идентификатор указки).
Часть этих параметров задается с помощью функции установки. Например, цвет линии
можно установить заранее и тогда все последующие обращения к примитиву «ломаная»
будут использовать это установленное значение.
Сегмент – промежуточный уровень между картинкой как целой и примитивом
вывода. Сегмент имеет имя и компонуется, как правило, из примитивов вывода и функции
установки атрибутов, попавших внутрь операторных скобок.
Имеются операции по работе с сегментами как с целыми – удаление, копирование,
переименование сегментов. Кроме имени каждый сегмент имеет атрибуты: видимость,
выделенность, указуемость, сегментное преобразование. Соответственно и определены
операции для изменения сегментных атрибутов. Например, атрибут «погасить»
обозначает сегментное преобразование типа «сделать невидимым». Сегментные
преобразования – матрица вещественных чисел 2х3, задающая преобразование координат
при выводе содержимого сегмента на экран.
Выбирая сегментное преобразования можно получить эффект движения сегментов на
экране.
Примитивами подсистемы ввода служат классы
логических устройств ввода, которых в GKS
шесть.
Например,

55
А) Селектор, который вводит номер ветви выбора
Б) Строка – вводит строку символов
В) Вальюатор – вводит вещественное число
Г) Локатор – вводит позицию в мировых координатах и номер преобразования
нормализации
Д) Штрих – вводит последовательность позиций в мировых координатах и номер
преобразования нормализации
Е) Указка – выводит имя указываемого сегмента и идентификатор, связанный с тем
примитива, на который смотрит указка
Локатор, штрих, указка являются графическими классами.
В GKS определены 3 системы координат: 1 – мировые координаты, 2 –
нормализованные координаты (учитываются масштабные преобразования), 3 –
физические координаты (координаты устройств, например, принтера)

Преобразование 1-2 – преобразование нормализации, 2-3 – преобразование рабочих


станций. Оба этих преобразования задаются парой прямоугольных окон, стороны которых
параллельны осям координат
GKS является языком высокого уровня. Языки низкого уровня – графический
метафайл и графический интерфейс.
Параметры видеорежимов:
• Текст/графика
• Цвет (количество цветов/ ч/б режим)
• Разрешающая способность (точек/знаков на экране дисплея)
• Цветовой диапазон
Аппаратная реализация видеорежимов – различные дисплейные адаптеры, выполненные в
соответствии с теми или иными стандартами.
Текстовые видеорежимы.
В основе текстовых режимов семейства персональных компьютеров лежит деление
дисплейного экрана на индивидуальные знаковые позиции, расположенные по строкам и
столбцам. Каждая знаковая позиция имеет 2 независимые компоненты: код, который
определяет, какой символ появится на экране, и атрибут, который определяет, как
графически должна выглядеть эта литера (цвет и т.д.). В текстовых режимах прикладные
программы управляют кодом и атрибутами символов, появляющихся на экране. Но
программы не управляют рисованием символов. Все это делает дисплейный адаптер.
Символы на экране расположены в 25 рядах и 80 столбцах (Рис.3.1).Имеются и 40-
столбцовые режимы, но они используются редко и многие программы их игнорируют.
Каждый такой атрибут состоит из трёх частей: одна часть определяет цвет символа,
вторая-цвет фона, третья управляет режимом мерцания знака. Каждый дисплейный
адаптер содержит свои микросхемы памяти, в которые записываются данные,
изображаемые на экране.
Графические видеорежимы.

56
В каждом из графических режимов дисплейный экран представляет собой
совокупность точек, которые образуют матрицу строк и столбцов. Каждая из точек может
быть индивидуально высвеченена на экране тем цветом, который может быть использован
в данном графическом режиме. Графический режим отличается от текстового тем, что
каждая точка на экране является просто маленькой светящейся точкой, не имеющей
определённой формы.
В текстовых режимах каждая экранная позиция имеет три элемента: код символа,
атрибут изображения символа. разделенный на две части: цвет символа и цвет фона. В
противоположность этому, в графических режимах каждая точка имеет только один
элемент-цвет, который высвечивается. Цвет фона в графических режимах - это цвет, на
который настраиваются все точки, чтобы они отличались от цвета, с помощью которого
осуществляется рисование. В графических режимах нет мигающего курсора. В каждом
графическом режиме имеется свой собственный набор цветов. Этот набор, а так же
разрешающая способность, и отличают режимы друг от друга. Общие черты графических
режимов - это матрица точек во весь экран и способность высвечивать каждую точку
любым цветом из выбранной палитры. Графические режимы предлагают большее
разнообразие операций, чем текстовые режимы. Текстовые символы в графических
режимах тоже рисуются точка за точкой.
И графическими, и текстовыми режимами могут управлять программы ROM-BIOS.
Стандарты на видеокарты
Видеокарты стандарта МДА использовались в первых персональных
компьютерах в начале 1980-х годов. МДА-аббревиатура для Monochrom Display Adapter
(монохромный дисплейный адаптер). Этот стандарт и карты были разработаны
американской фирмой IBM. МДА-карты среди карт других стандартов выделяются двумя
признаками, которые явились в том числе причиной их замены картами других типов:
• Эти карты предназначены для формирования и передачи на монитор только
монохромного сигнала. Используется наиболее благоприятное для глаз сочетание
цветов- зелёный/чёрный или белый/чёрный. При наличии такой карты невозможно
отображение градаций цвета, мерцающих символов или символов с
подчёркиванием.
• Второе важнейшее свойство и второй важнейший недостаток этих карт состоит в
том, что они не поддерживают графический режим, позволяя отображать на
мониторе только текстовую информацию. Изображение знаков формируется здесь
путём включения (засвечивания) или выключения (гашения) отдельных точек
матрицы.
Карта МДА своим единственно возможным разрешением 80 столбцов на 25
строк устанавливает стандарт, которому последовали и более поздние разработки.80
столбцов и 25 строк образуется из общего числа 720х350 точек. Для отображения
отдельного знака формируется матрица 9х14 точек (720/80=350/25=14). При этом уже
возможно отображение хорошо читаемых символов. Разрешения этой карты вполне
достаточно для чисто символьных применений,таких как обработка текста и калькуляция
таблиц.
Аббревиатура CGA относится к названию Color Graphics Adapter (цветной
графический адаптер) .Целью разработки этой карты было устранение двух упомянутых
выше недостатков стандарта МДА.CGA-карта формирует и передаёт на монитор цветное
изображение и поддерживает графический режим. В текстовом режиме эта карта
функционирует в стандарте МДА и поддерживает 80 колонок и 25 строк. В графическом
режиме эта карта поддерживает 640 точек по горизонтали и 200 точек по вертикали.
Размер матрицы для представления символов текстового режима подсчитывается путём
деления 200 точек по вертикали на 25 строк и 640 точек по горизонтали на 80 столбцов.
Таким образом матрица для представления отдельного символа равна 8х8 точек. А это

57
значит, что символы, посылаемые CGA-картой на монитор, весьма грубые и
бесформенные.
В графическом режиме возможно два разрешения:640х200 точек и 2-х цветное
изображение; 320х200 точек, то есть более грубое разрешение, которое компенсируется
цветовой гаммой из 4-х цветов, выбираемых из 16-ти цветной политры. Такое разрещение
весьма неудобно для глаз.
Стандарт HGC является дальнейшим развитием стандарта МДА.HGC-это
аббревиатура от английского словосочетания Hercules Graphics Card. Чаще видеокарты
этого стандарта называют картами Hercules.Впервые эта карта была представлена фирмой
Hercules в 1982 году и примерно до 1988 года являлась стандартом в области графических
или видеокарт для персональных компьютеров .Высокое разрешение и насыщенная
цветовая гамма CGA-карт применялись в основном для игровых программ, а для
программ обработки изображений промышленного применения эта карта была
непригодна.Hercules-карта по своему разрешению подобна карте МДА. Она способна
поддерживать разрешение 720х348 точек. Соответственно одинакова с МДА и матрица
для представления символов в текстовом режиме, она составляет 9х14 точек и
обеспечивает удобное для глаз считывание информации с экрана.
У Hercules-карты оригинально распределена память. Из стандартных 128
килобайт памяти половина объёма (64 Кбайт) используется в качестве буфера ,в котором
может храниться информация о двух изображениях на экране, каждое из которых
занимает 32 Килобайта памяти. Обычно первое изображение (экран) располагается по
адресам В000-B7FF,а второе изображение –по адресам В800-BFFF.В текстовом режиме
для представления в этой памяти кодов символов и их атрибутов достаточно 4К байта.
Этими атрибутами являются: подчёркивание, мигание, инверсия , яркость.
Стандарт EGA (EGA является аббревиатурой английского словосочетания
Enhanced Graphics Adapter) является дальнейшим развитием стандартов в области
аппаратной реализации функций компьютерной графики. Типичная EGA-карта имеет
разрешение 640х350 точек, что создаёт на экране монитора символьную матрицу
размером 8х14 точек.
Многие EGA-карты могут эмулировать другие графические стандарты. Почти все
EGA-карты могут работать в режимах МДА,CGA,HGC. Иногда это делалось коммутацией
джаммеров на карте. Стандарт EGA обеспечивает работу с 16 цветами, выбираемыми из
64-цветной политры. Стандартные цвета образуются смешиванием трёх основных цветов-
красного ,зелёного и синего, с учётом интенсивности в определённых соотношениях.
VGA (аббревиатура от английского словосочетания Video Graphics Array)
является в настоящее время действующим стандартом в области разработки и применения
персональных компьютеров. Существует большое разнообразие видеокарт стандарта
VGA.Он является базовым для таких стандартов как superVGA и HiRes, на его основе
разработаны карты-ускорители, например, карта VLB и др.Первые VGA- карты были
представлены фирмой IBM в 1987 году. Первые карты были 8-разрядными, однако, сейчас
в основном выпускаются 16-разрядные карты.VGA-карты совместимы снизу-вверх, то
есть они способны эмулировать все описанные выше и созданные ранее стандарты от
VDA до EGA.VGA-карта обеспечивает разрешение 640х480 точек с 16 цветами. В
зависимости от объёма видео-памяти можно получить до 256 оттенков. Объем 8-
разрядной видеокарты до 256 Кбайт, для 16разрядной этот объём не менее 512 Кбайт. К
настоящему времени этот стандарт развился в так называемый стандарт SuperVGA
(SVGA).Стандартное разрешение этого режима составляет 800х600 точек. При
использовании видеопамяти 1 Мбайт SVGA обеспечивает отображение 32768,65536 или
даже 16,5 млн. цветовых оттенков.
Стандарт HiResVGA (High Resolution-высокое разрешение) был так же
разработан фирмой IBM. В одном из режимов можно повысить разрешение до 1024х768

58
точек. Но это ограничивает цветовую гамму. Обычно для этого стандарта характерна
поддержка 16 или 256 цветов.
Говоря о картах ускорителях, следует отметить, что это те же VGA-карты.
Основное отличие карт – ускорителей от стандартных VGA-карт заключается в том, что
они оснащены специальным контроллером, что позволяет графические операции
выполнять в видеокарте, освобождая от них основной процессор. Шина VESA
,используемая вместе с картой-ускорителем, имеет параллельную 68-разрядную ширину,
которая вместе с передачей данных передаёт инструкции из центрального процессора,
которые должны выполняться встроенным процессором параллельно с работой
центрального процессора. Указанный параллелизм и является ускоряющим фактором.
Графический процессор выполняет такие функции как создание и прорисовка
геометрических фигур, заполнение их определённым цветом или штриховкой, сдвиги и
копирование фрагментов экрана. Поскольку такие адаптеры применяются в первую
очередь для приложений, ориентированных на графику (к ним относится Windows),то
часто эти карты называются картами с ускорителем Windows.Подобные карты-
ускорители помимо специального контроллера оснащаются видеопамятью объёмом 16
Мбайт и более. Примерами карт-ускорителей являются видеокарты TIGA и XGA, которые
оснащены отдельным графическим процессором, который берёт на себя выполнение
графических операций, и видеопамятью повышенного объема. Эти карты обладают
большой скоростью обработки видеоданных.
Разрешающая способность.
Одно из определений разрешающей способности - количество элементов в заданной
области (или, более формально, мощность подмножества некоторого множества).
Применительно к задачам компьютерной графики, существуют: разрешающая
способность файла графики, разрешающая способность лазерного принтера или
фотонаборного автомата, разрешающая способность любого устройства ввода,
разрешающая способность графического планшета или чертёжно-графического автомата
и др. Например, параметр разрешающей способности принтера может быть задана как
300 точек на дюйм. Это означает способность принтера напечатать на отрезке бумаги в
один дюйм 300 отдельных точек.
Ранее была введена битовая глубина изображения (или глубина цветности). Битовую
глубину изображения часто называют цветовой разрешающей способностью. Она
измеряется количеством битов, которыми кодируется цвет и которые сопоставляются
точке. Если, например, рисунок для каждой точки имеет 8 битов цветовой информации, то
его разрешающая способность будет 8 бит/точка. Общее количество цветов, доступных
для изображения, равно 2n,где n-битовая глубина. Для 8-битового изображения всего
достаточно 2^8=256 цветов. Это справедливо и для глубины цветности < 24 бит/точка. 24-
битовый цвет называется в компьютерной графике естественным цветом, так как 16
миллионов цветов, доступных при такой битовой глубине, достаточно для восприятия
человеческим глазом оттенков. Реально может использоваться битовая глубина 32,36,48 и
даже 64 бит/точка.
Когда для описания цвета используется 24 бита, они как правило делятся на три
группы по 8 битов. Одна группа используется для хранения величины ярко-красного
цвета точки, две другие синего и зеленого. С помощью комбинации красного ,зелёного и
синего цветов (их комбинацию принято обозначать RGB) формируется любой из 16
миллионов оттенков.
При 32-битовой технологии обеспечивается разделение на 4 группы по 8 битов для
хранения значений голубого, пурпурного, желтого и чёрного цветов (их комбинацию
принято обозначать СМУК).Эти четыре цвети и их смешение традиционно используются
в офсетной печати.
В другой технологии первые 24 бита из 32-х применяются для хранения цвета, а
остальные 8 битов используются для канала маски. Маски, или области избранных точек,

59
могут создаваться программами редактирования растровых изображений для специальных
эффектов, таких как наложение рисунков.8 дополнительных битов не влияют на цвета
точек.36 и 48-битовые цвета обычно используются в цветовых системах высшего уровня,
такие как профессиональные системы цветоотделения. Обычно после редактирования и
цветоотделения изображения 36 и 48-битовые цвета необходимо уменьшить до 24 или 32-
битовых, чтобы получить конечный продукт. Для такого уменьшения программно
выбираются лучшие из 12 ,то есть наиболее часто используемые комбинации из 12 бит и
заменяются эквивалентными 8-битовыми комбинациями.
Разрешающая способность графического изображения
Разрешающая способность графического изображения измеряется в количестве
точек на дюйм (точка/д).Проблема соответствия разрешающей способности реальному
случаю неоднозначна, в силу того, что точка в компьютерном файле не имеет какого либо
определённого размера, так как является всего лишь частичкой памяти, хранящей
сведения о цвете. Точка приобретает физический размер только будучи отображённой на
каком либо устройстве вывода, например, мониторе или принтере. Если в файле растрого
изображения не определено, сколько точек на дюйм должно создавать устройство
вывода,то по умолчанию для каждой точки используется минимальный элемент. При
определении разрешающей способности эта информация передаётся каждому устройству
вывода и это устройство подсчитывает размер отображаемой точки.
Как указывалось выше разрешающая способность устройства ввода и вывода
определяется числом элементов на дюйм, но для некоторых устройств используют оценку
числа элементов на мм или см.
Аддитивные и субтрактитвные цвета.
Аддитивный цвет получается при соединении лучей света разных цветов В этой
системе отсутствие всех цветов представляет собой чёрный цвет, а присутствие всех
цветов-белый. Система аддитивных цветов работает с излучаемым светом, например, от
монитора компьютера. В системе используется три основных цвета- красный, зеленый и
синий (RGB).Если их смешать друг с другом в равной пропорции, они образуют белый
цвет, а при смешении в разных пропорциях - любой другой цвет.
В системе субтрактивных цветов получение какого либо цвета производится
вычитанием луча одного из цветов из общего луча света. В этой системе белый цвет
появляется в результате отсутствия всех цветов, так как их присутствие даёт чёрный цвет.
Система субтрактивных цветов работает с отражённым светом, например, от листа
бумаги. Абсолютно белая бумага отражает все цвета, окрашенная - некоторые поглощает,
а остальные отражает. В системе субтрактивных цветов основными являются голубой,
пурпурный и жёлтый цвета (СМУ)-противоположные красному, зелёному и синему.
Когда эти цвета смешиваются в равной пропорции на белой бумаге, получается чёрный
цвет. Практически из-за несовершенства типографских красок получается тёмно-
коричневый цвет. Поэтому для представления тонов истинно чёрного цвета принтеры
добавляют немного чёрной краски. Система цветов, основанная на таком процессе
четырёхцветной печати, обозначается аббревиатурой СМУК.
Монитор компьютера использует систему цветов RGB,на экране - это смесь
точек красного, зелёного и синего цветов. Кратко - это точки RGB . Компьютер может
точно управлять количеством света, излучаемого через каждую окрашенную точку, и,
комбинируя различные значения основных цветов, можно создать любой цвет. Система
RGB является самой распространённой для мониторов. Для распечатки используется
другая система цветов и в том числе СМУК. Система цветов СМУК была известна
задолго до появления компьютерной графики. Для отображения изображения,
получаемого на экране дисплея, на бумагу или другой носитель, созданный в компьютере,
RGB-файл подвергается ряду преобразований для получения СМУК-файла, а это-
проблема, потому что то, что видно на экране монитора, на бумаге воспринимается с
некоторой степенью точности. Процесс преобразования усложняется ещё и тем, что

60
приходится корректировать несовершенство типографских красок добавлением чёрно-
белого цвета. Для получения более точного цвета используется система подбора цветов (в
виде базы данных).Некоторые применяемые системы показывают соответствие
нескольких тысяч цветов сортам бумаги разных производителей.
Существуют и другие системы цветов, например, HSR и HSL, в которых
описание цвета является представлением его в виде тона, насыщенности и яркости.
Обычно применяются индексированные палитры цветов, так как все указанные системы
(RGB,CMYK,HSB,HSL) имеют дело со всем спектром цветов: миллионами и миллионами
возможных оттенков. Однако при использовании компьютеров не требуется использовать
миллионы цветов Достаточно 256 или даже 16 доступных цветов. Индексированные
палитры цветов - это наборы цветов (обычно 16 или 256 наиболее применимых цветов),из
которых выбирается необходимый цвет. Преимуществом ограниченных палитр является
то, что они занимают гораздо меньше памяти, чем полные системы RGB и
CMYK.Компьютер создаёт палитру цветов за обозримое время и присваивает каждому
цвету номера от 0 до 15 или от 0 до 255. Затем при сохранении цвета отдельной точки,
запоминается просто номер, который имеет этот цвет в палитре. Для запоминания числа
от 0 до 15 необходимо всего 4 бита памяти, а числа от 0 до 255 – 8 битов (поэтому
изображения, имеющие 16 цветов, называют 4-битовым, а имеющие 256 цветов- 8-
битовыми). А для хранения полного цвета в RGB требуется 24 бита, или 32 бита для
системы СМУК.

2. Управление файлами.
При работе с устройствами I/O используется понятие файл – поименованная
область внешней памяти, в которую можно записывать и из которой можно считывать
данные.
Файловая система – набор структур данных, которые формируются в результате
некоторых предварительных действий (форматирования и т.д.) чтобы организовать
данные, хранимые в виде записей высокого уровня на диске (низкий уровень – 0 и 1).
Файловая система используется ОС или другими системными программами чтобы
хранить файлы, директории и другую уместную информацию с целью дальнейшего
обновления.
Таким образом, файловая система – динамическая структура данных, которая
изменяется в процессе функционирования вычислительной системы.
Следует иметь в виду, что в большинстве случаев применения компьютеров
пользователи не имеют возможности выбора между различными типами файловых
систем. Некоторые файловые системы хранят файлы в пакетах 512 байт, в то время как
другие хранят эти же файлы в более крупных информационных единицах, таких как
единицы распределения (страница) или кластеры.
В некоторых случаях используются очень простые файловые системы с небольшим
числом простых свойств (функций) и малым количеством мест хранения для её
запоминания. К ним относится FAT. Другие системы используют больше свойств и
используют большие пространства памяти для хранения и более сложное управление.
NTFS, например. Windows 2000 поддерживает FAT16, FAT32, NTFS.
Разбиение на подмножество мест хранения и расположение тома.
А = {a1,a2,…,aN} – места хранения (множества). a1 Є A, a2 Є A – тома
Разбиение на подмножества – есть процесс деления твердого диска на подсекции,
называемые томами – Volumes. Этот процесс – есть первоначальный шаг в подготовке
диска к использованию. Выбор того, как диск может быть разбит на подмножества, может
иметь заметные влияния на реальную эффективность его использования. При решении
вопроса о том, как диск надо разбивать на части возникает проблема выбора параметров:
1) Cluster size – размер кластера
2) Эффекты зонирования

61
Современные твердые диски используют записи зонированных битов, которые
позволяют большинству данных запоминаться преимущественно на внешних дорожках
дисков, а не на внутренних. Это прямо влияет на скорость передачи данных с диска на
диск.
Обычно при форматировании твердого диска формирование хранящего
пространства начинается с внешних дорожек, а далее формируются внутренние дорожки.
Это значит, что при разделении диска на 3 части (зоны) равного размера, 1 часть имеет
наивысшую скорость обмена, а 3 – самую медленную.
3) Ограничение поиска. Время поиска засвистит от линейного расстояния между
дорожками. Используя диски меньшего диаметра, можно уменьшить время
поиска. Так же это время можно уменьшить за счет нескольких головок.

4) Время дефрагментации. Разделение на большое количество кусков ведет к


лучшему заполнению пространства большим количеством данных, но при
поиске информации это может потребовать большего времени доступа.
Разновидности твердых дисков.
Твердые диски отличаются друг от друга по параметру «фактор формы».
Большинство твердых дисков предназначены для установки внутри ПК и их производство
налаживается в одном из принятых стандартных размерах.
Эти стандарты названы фактором формы form factors и относятся к их внешнему
размеру. Причина стандартизации – требование совместимости. Фактор формы
оценивается единым метрическим значением. 3.5’’, 2.5’’ – эти числа, в основном,
относятся к диаметру диска.
Пять наиболее популярных внутренних факторов: 5.25’’, 3.5’’, 2.5’’, PC Card,
Compact Flash.
• Фактор формы 5.25’’ – самый древний в мире ПК. Они использовался для
производства твердых дисков в начале 1980-х годов. IBM PC/XT. В настоящее
время этот фактор используется в CD и DVD – дисках. Приводы для фактора –
диски 5.12’’. Глубина записи - 8’’
• Фактор формы 5.25’’ был заменен на 3.5’’, т.к. привод диска формата 5.25’’
большой и занимает много пространства + драйвер для него менее эффективен.
3.5’’ – основной стандарт в течение последнего десятилетия. В соответствии со
стандартом используется 3.74’’ диска, ширина привода – 4’’, глубина – 5,75’’
• Фактор 2.5’’ – стандарт для ноутбуков. Ширина драйвера -2.75’’, глубина – 3.94’’
(сама коробка, куда помещается)
• Фактор типа PC Card используется в ноутбуках. Имеют интерфейс типа PC Card /
PC MCIA
Функции, задачи и структура файловой системы.
Функционирование любой файловой системы можно представить многоуровневой
моделью (рисунок 9.1), в которой каждый уровень предоставляет некоторый интерфейс
(набор функций) вышележащему уровню, а сам, в свою очередь, для выполнения своей
работы использует интерфейс (обращается с набором запросов) нижележащего уровня.

62
Задачи, решаемые файловой системой, зависят от способа организации
вычислительного процесса в целом. Самый простой тип файловой системы – файловая
система в однопользовательских и однопрограммных ОС, к числу которых относится,
например, MS DOS.
Основные функции в такой файловой системе направлены на решение задач:
• Именование файлов
• Обеспечение программных интерфейсов для приложений
• Отображение логической модели на физическую организацию хранилища данных
• Защита от ошибок и сбоев
Файловая система поддерживает несколько функционально различных типов файлов:
обычные файлы, файлы-каталоги, специальные файлы, именованные конвейеры,
отображающие в память файлы.
Обычные файлы содержат информацию произвольного характера, которую в них
заносит пользователь (или которая образуется в результате работы системных
пользовательских программ)
Каталоги – особый тип файлов, который содержит системную и справочную
информацию о наборе файлов, сгруппированных пользователем по какому-то
неформальному признаку (например, документы одного и того же типа)
Обращаются к файлам по символическим именам. Большинство файловых систем
имеют иерархическую структуру, в котором создаются уровни таким образом, что каталог
более низкого уровня может входить в каталог более высокого уровня.
В иерархически организованных файловых системах используется 3 типа имен
файлов:
1) Простые (короткие). Простое символьное имя идентифицирует файл в пределах
одного каталога.
2) Сложные (составные). В иерархических файловых системах разным файлам
разрешается иметь одинаковые простые символьные имена при условии
принадлежности разным каталогам. Для идентификации файлов в таких системах
используется полное имя. Полное имя представляет собой цепочку простых
символьных имен всех каталогов, через которые проходит путь от корня до
нужного файла, т.е. полное имя является составным, в котором простые имена
отделены друг от друга принятыми для ОС разделителями ( / , \ )

63
3) Относительные. Относительное имя файла определяется через понятие текущего
каталога
Вычислительная система может иметь несколько дисковых устройств. Каждый
накопитель имеет свою файловую систему, а для идентификации файла в составе
сложного имени обычно указывается идентификатор логического устройства.
Понятие «файл» включает не только хранимые им данные и имя, но и атрибуты
(информацию, описывающую свойства файлов).
Примеры атрибутов: тип файла, создатель файла, владелец файла, пароль для
доступа к файлу, информация о разрешенных операциях доступа, время создания,
текущий размер, максимальный размер, признак для чтения, скрытый файл, системный
файл, двоичный, временный.
Значения атрибутов могут непосредственно содержаться в каталогах. Файл имеет
логически образ целого непрерывающегося набора байтов (физически – может быть
разбросан по всей области памяти).
Принцип размещение файлов, каталогов описывается физической организацией
файловой системы.
На концентрических дорожках с каждой стороны дисков хранятся данные.

Нумерация дорожек начинает с 0 от


внешнего края к центру диска.
При чтении и записи над заданной
дорожкой концентрируется головка.
Совокупность дорожек одного радиуса
на поверхности всех дисков – цилиндр.
Каждая дорожка разбивается на
фрагменты – сектора. Сектор имеет
фиксированный размер для каждой системы
2^N и он является наименьшей адресуемой
информацией обмена данных дискового
устройства с оперативной памятью.
Адресом сектора является номер цилиндра, номер поверхности, номер сектора.
Дорожки и сектора создаются в результате выполнения процедуры физического
(низкоуровнего) форматирования диска.
Каждая ОС использует собственную единицу дискового пространства – кластер.
Например, если размер кластера 1024 байт, а размер файла 2560 байт, то файлу
выделяется на диске 3 кластера.
Разметка диска под конкретную файловую систему выполняется процедурой
низкоуровнего (логического) форматирования. Определяется размер кластера и на диск
записывается служебная информация о неиспользуемых или поврежденных областях и
записывается загрузчик ОС (небольшая программа, которая начинает процесс
инициализации ОС после выключения питания [рестарта]).
Перед форматированием диска под определенную файловую систему его
физическая среда разбивается на разделы. Раздел – логическое устройство, логический
диск и т.д. как часть пространства на диске. К нему обращается пользователь по
символьным именам.
На разных логических устройствах одного и того физического диска могут
располагаться файловые системы различных типов.
Наиболее простой тип организации файлов – непрерывное
размещение, когда пространство, разбито на кластеры и
файлу предоставляются кластеры.

64
В этом случае с целью адресации достаточно хранить только номер первого кластера и
объем фала в количестве байт.
Другой способ – размещение файла в виде связанного списка кластеров. В начале
каждого кластера содержится указатель на следующий кластер. Расположение
информации может быть задано номером первого кластера.

БИЛЕТ№25.
1. Подсистема ввода/вывода.
Одной из главных задач СПО и ОС является обеспечение обмена данными между
приложениями и периферийными устройствами компьютера и при обмене данными
между компьютерами в составе сетей. Это обеспечивается подсистемой ввода-вывода.
К числу задач, решаемых подсистемой ввода-вывода, относятся:
• Организация параллельной работы устройств ввода/вывода и процессора
• Согласование скоростей обмена и кэширование данных
• Распределение устройств и данных между процессами
• Поддержка логического интерфейса между устройствами и системой
• Поддержка множества драйверов
• Динамическая загрузка и выгрузка драйверов
• Поддержка нескольких файловых систем
• Поддержка синхронных и асинхронных операций ввода/вывода
В рамках ОС Windows выполняет блок СПО Plug&Play.

Для диска драйверы берут данные из FAT.

2. Графические файлы.
6 форматов наиболее популярны.
Формат файла BMP (сокращенно от BitMaP) - это "родной" формат растровой
графики для Windows, поскольку он наиболее близко соответствует внутреннему формату
Windows, в котором эта система хранит свои растровые массивы

65
В файлах BMP информация о цвете каждого пиксела кодируется 1, 4, 8, 16 или 24 бит
(бит/пиксел). Числом бит/пиксел, называемым также глубиной представления цвета,
определяется максимальное число цветов в изображении. Изображение при глубине 1
бит/пиксел может иметь всего два цвета, а при глубине 24 бит/пиксел - более 16 млн.
различных цветов.
На приведенной схеме показана структура типичного BMP-файла, содержащего 256-
цветное изображение (с глубиной 8 бит/пиксел
Структура файла BMP
Заголовок файла растровой графики
(14 байт)
Сигнатура файла BMP (2 байт)
Размер файла (4 байт)
Не используется (2 байт)
Не используется (2 байт)
Местонахождение данных
растрового массива (4 байт)
Информационный заголовок
растрового массива (40 байт)
Длина этого заголовка (4 байт)
Ширина изображения (4 байт)
Высота изображения (4 байт)
Число цветовых плоскостей (2 байт)
Бит/пиксел (2 байт)
Метод сжатия (4 байт)
Длина растрового массива (4 байт)
Горизонтальное разрешение (4 байт)
Вертикальное разрешение (4 байт)
Число цветов изображения (4 байт)
Число основных цветов (4 байт)
Таблица цветов (длина изменяется от
8 до 1024 байт)
Собственно данные растрового
массива (длина переменная)

Файлы PCX
PCX стал первым стандартным форматом графических файлов для хранения
файлов растровой графики в компьютерах IBM PC.
Формат PCX первоначально был разработан для адаптеров CGA- и EGA-дисплеев
и в дальнейшем был модифицирован для использования в адаптерах VGA и адаптерах
истинных цветов.

66
Файлы TIFF
Один из самых сложных форматов для декодирования. Изображение,
закодированное в файле TIFF, полностью определяется его тегами, и этот формат файла
легко расширяется, поскольку для придания файлу дополнительных свойств достаточно
лишь определить дополнительные типы тегов.

С одной стороны, составление программ, различающих все типы тегов, - это


непростое дело. Еще одна сложность заключается в том, что файл TIFF может содержать
несколько изображений, каждому из которых сопутствуют собственный IFD и набор
тегов.
Файлы GIF
GIF (Graphics Interchange Format - формат обмена графическими данными,
произносится "джиф"), разработанного компанией CompuServe. Обычно для имени
файлов GIF используется расширение GIF, и тысячи таких файлов можно получить в
CompuServe.
Структура файла GIF зависит от версии GIF-спецификации, которой соответствует
файл. В настоящее время используются две версии, GIF87a и GIF89a.

67
Основные достоинства GIF заключаются в широком распространении этого
формата и его компактности. Но ему присущи два достаточно серьезных недостатка. Один
из них состоит в том, что в изображениях, хранящихся в виде GIF-файла, не может быть
использовано более 256 цветов. Второй, возможно, еще более серьезный, заключается в
том, что разработчики программ, использующие в них форматы GIF, должны иметь
лицензионное соглашение с CompuServe и вносить плату за каждый экземпляр
программы;
Файлы PNG
Формат PNG (Portable Network Graphic - переносимый сетевой формат,
произносится "пинг") был разработан для замены GIF, чтобы обойти юридические
препятствия, стоящие на пути использования GIF-файлов. PNG унаследовал многие
возможности GIF и, кроме того, он позволяет хранить изображения с истинными цветами.
Еще более важно, что он сжимает информацию растрового массива в соответствии с
вариантом пользующегося высокой репутацией алгоритма сжатия LZ77 (предшественника
LZW), которым любой может пользоваться бесплатно.
Файлы JPEG
Формат файла JPEG (Joint Photographic Experts Group - Объединенная экспертная
группа по фотографии, произносится "джейпег) был разработан компанией C-Cube
Microsystems как эффективный метод хранения изображений с большой глубиной цвета,
например, получаемых при сканировании фотографий с многочисленными едва
уловимыми (а иногда и неуловимыми) оттенками цвета. Самое большое отличие формата
JPEG от других рассмотренных здесь форматов состоит в том, что в JPEG используется
алгоритм сжатия с потерями (а не алгоритм без потерь) информации. Алгоритм сжатия без
потерь так сохраняет информацию об изображении, что распакованное изображение в
точности соответствует оригиналу. При сжатии с потерями приносится в жертву часть
информации об изображении, чтобы достичь большего коэффициента сжатия.
Распакованное изображение JPEG редко соответствует оригиналу абсолютно точно, но
очень часто эти различия столь незначительны, что их едва можно (если вообще можно)
обнаружить.

БОНУС ФОН-НЕЙМОН.

68
Цикл выполнения. Счетчик команд вырабатывает адрес. Выбирается номер команды и
команда помещается в регистр команд. Регистр команд содержит код операции, 1 адрес, 2
адрес, 3 адрес. Он выбрал. Дальше идет расшифровка первого адреса. Куда-то идет вот
сюда и опять выбирается команда. Помещается в регистр 1 (РОН).
Дальше расшифровывается второй адрес. Идет указание на 2. И пошла выработка второго
адреса и помещение его в регистр 2. Дальше – выполнение кода операции. Идет некий
цикл управления, который создаёт временную диаграмму работу схем, что сумматор
выдает результат. Выполняется запоминание результата по 3-ему адресу. Расшифровка 3-
его адреса и запоминание результата.

69