Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Системное программное обеспечение. Учебник
.pdf
11
Глава 1. Принципы организации системного программного обеспечения
переключается на обслуживание другого пользователя. Часы
истинного времени дают возможность компьютеру следить за
реальным календарным временем.
Некоторые периферийные устройства обладают возможностью работать либо в режиме онлайн, когда они непосредственно связаны с центральным процессором, либо в автоном-
ном режиме, когда ими управляют автономные контроллеры,
не связанные с центральным процессором.
Автономные контроллеры привлекательны тем, что позволяют управлять периферийными устройствами, не загружая
при этом непосредственно процессор.
Канал ввода-вывода – это специализированный процессор,
предназначенный для управления вводом-выводом независимо
от основного процессора. Канал имеет возможность прямого
доступа к основной памяти для записи или выборки информации. Значение каналов в том, что они позволяют существенно
увеличить параллелизм работы аппаратуры компьютера и освобождают процессор от подавляющей части нагрузки, связанной с управлением вводом-выводом.
Для высокоскоростного обмена данными между внешними
устройствами и основной памятью используется селекторный
канал. Но этот канал имеет только один подканал и может обслуживать в каждый момент времени только одно устройство.
Для работы одновременно со многими потоками данных в режиме чередования используется мультиплексный канал. Он
имеет много подканалов. В низкоскоростных линиях передачи
использовались байт-мультиплексные каналы, которые обеспечивают режим чередования байтов при одновременном обслуживании ряда медленных внешних устройств (принтеров,
терминалов, устройства вывода). Блок-мультиплексный ка-
нал используется при обменах в режиме чередования блоков
и может обслуживать несколько высокоскоростных устройств
(лазерные принтеры, накопители) [1, 2].
Узкое место в работе ВМ – доступ к основной памяти. Поскольку в каждый конкретный момент может осуществляться только одна операция обращения к некоторому модулю основной памяти, то может возникнуть конфликтная ситуация
между каналами и процессором. Приоритет предоставляется

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
12
каналам, поскольку каналам требуется небольшой процент общего числа циклов памяти. В этом случае происходит «захват
цикла» каналом. Это позволяет обеспечить лучшее использование устройств ввода-вывода. Подобный подход принят и в современных операционных системах. Планировщики, входящие в состав операционных систем, обычно отдают приоритет
программам с большим объемом ввода-вывода по отношению
к программам с большим объемом вычислений.
Когда потребность в увеличении основной памяти стала
очевидной, то архитектуры компьютеров были модифицированы для работы с очень большим диапазоном адресов. Для этого
стали применять адресацию типа «база + смещение», или от-
носительную адресацию, при которой все адреса программы
суммируются с содержимым базового регистра. Поэтому программы становятся перемещаемыми, то есть позиционно неза-
висимыми. Это значит, что одну и ту же программу для разных
абонентов можно загружать в различных местах основной памяти.
В вычислительных машинах предусматривается несколько различных режимов работы. Динамический выбор режима
позволяет лучше организовать защиту программ и данных.
Операционной системе обычно присваивается статус самого
полномочного пользователя, работает она в режиме суперви-
зора и имеет доступ ко всем командам, предусмотренным в машине. При высокой степени требований к защите желательно
иметь более двух режимов, так как в этом случае можно обеспечить более высокую степень детализации защиты. Каждому конкретному пользователю необходимо предоставлять
доступ по принципу минимума привилегий, то есть право доступа только к тем ресурсам, которые ему необходимы для решения задач.
В процессе развития компьютерных архитектур выявилась
тенденция к увеличению количества привилегированных ко-
манд, то есть команд, которые не могут выполняться в режиме
задачи. Это свидетельствует о тенденции к реализации больше-
го числа функций операционной системы аппаратными средствами. Некоторые микропроцессоры имеют операционные системы, реализованные в виде микропрограмм.

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

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
14
ния эффективности обработки команд. Упрощенно структуру
конвейерного процессора можно представить похожей на технологическую линию производственного предприятия. На конвейере процессора на различных стадиях выполнения одновременно могут находиться несколько команд. Это требует большего
объема аппаратуры, но позволяет существенно сократить время
выполнения последовательности команд.
Вычислительные машины содержат несколько видов па-
мяти, в том числе основную (первичную, оперативную), внешнюю (вторичную, массовую) и кэш-память.
В основной памяти должны размещаться команды и данные, к которым будет обращаться работающая программа.
Внешняя память – это магнитные диски, ленты, карты и
другие носители, предназначенные для хранения информации, которая со временем будет записана в основную память.
Кэш-память – это буферная память очень высокого быстродействия, предназначенная для повышения скорости выполнения работающих программ. Для программ пользователя эта
память, как правило, «прозрачна». Обычно текущая часть программы помещается в кэш-память (если она есть), что позволяет выполнить ее быстрее, чем если бы она находилась в основной памяти.
Все виды памяти создают единую иерархию памяти. Переход по уровням этой иерархии от кэш-памяти к основной и затем к внешней сопровождается уменьшением стоимости и скорости и увеличением емкости памяти. Память, как правило,
разделяется на байты (символы) или слова, состоящие из постоянного количества байтов. Каждая ячейка памяти имеет
свой адрес. Множество адресов, доступных программе, называется адресным пространством.
1.3. Виды программного обеспечения
Программное обеспечение – это программы, которые содержат команды и данные и определяют для аппаратных
средств алгоритмы решения задач.
Операционная система выступает как интерфейс между аппаратурой компьютера и пользователем с его задачами. Основ-

15
Глава 1. Принципы организации системного программного обеспечения
ное ее назначение – это наиболее эффективное использование
ресурсов вычислительной системы и организация надежных
вычислений [4]. В свете современных представлений операционные системы рассматриваются как часть системного программного обеспечения (СПО).
В англоязычной технической литературе термин СПО (system software) означает комплексы программ, являющиеся общими для всех, кто совместно использует технические средства
компьютеров, и применяемые как для автоматизации разработки (создания) новых программ, так и для организации выполнения существующих программ. С этих позиций СПО может быть
разделено на следующие пять групп [4]:
• операционные системы;
• системы управления файлами;
• интерфейсные оболочки для взаимодействия пользовате-
ля с операционной системой и программной средой;
• системы программирования;
• утилиты.
Интерфейсные оболочки могут использоваться для удобства взаимодействия с операционной системой. Их основное
назначение – либо расширить возможности по управлению
операционной системой, либо изменить встроенные в систему возможности. К этому же классу структуры программного
обеспечения относятся и эмуляторы, позволяющие смоделировать в одной операционной системе какую-либо другую машину или операционную систему. Так, известна система эмуляции WMWARE, которая позволяет запустить в среде Linux
любую другую операционную систему, например Windows.
Можно, наоборот, создать эмулятор, работающий в среде Windows, который позволит смоделировать компьютер, работающий под любой операционной системой.
Обобщенная структура программного обеспечения вычислительной системы приведена на рис. 1.1 [4].
Как видно по обобщенной структуре программного обеспечения операционной системы, ни один из компонентов программного обеспечения, за исключением самой операционной
системы, не имеет непосредственного доступа к аппаратуре
компьютера. Даже пользователи взаимодействуют со своими

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
16
программами через интерфейс операционной системы. Любые
их команды, прежде чем попасть в прикладную программу,
сначала проходят через операционную систему.
Рис. 1.1. Обобщенная структура программного обеспечения
вычислительной системы: 1 – отладчики; 2 – компоновщики;
3 – редакторы; 4 – трансляторы; 5 – библиотеки подпрограмм
Существует много разных языков программирования.
Машинный язык – это язык программирования, непосред-
ственно воспринимаемый компьютером. Каждая команда машинного языка интерпретируется аппаратурой, выполняющей
указанные функции. Команды машинного языка являются
примитивными, и только объединение этих команд в программе на машинном языке дает возможность описывать достаточно сложные алгоритмы.
Машинный язык является машинно-зависимым, так как
программа, написанная на языке компьютера одного типа, не
может выполняться на компьютере другого типа, если его машинный язык не идентичен машинному языку первого (или
не является расширением по отношению к этому языку). Боль-

17
Глава 1. Принципы организации системного программного обеспечения
шинство первых компьютеров программировалось на машинном
языке, затем осталось лишь очень небольшое число программ.
Трудоемкость программирования на машинном языке при-
вела к разработке языка ассемблерного типа, позволяющего повысить скорость программирования и уменьшить количество
ошибок кодирования. Вместо чисел, используемых при написании программ на машинном языке, в языках ассемблерного типа
применяются содержательные мнемонические сокращения и
слова естественного языка. Однако компьютер такую программу
воспринимает только после перевода на машинный язык. Такой
перевод осуществляется при помощи программы-транслятора,
называемой ассемблером.
Языки ассемблерного типа также являются машинно-за-
висимыми. Их команды прямо и однозначно соответствуют
командам программы на машинном языке. Чтобы ускорить
процесс кодирования программы на языке ассемблера, были
разработаны и включены в ассемблеры так называемые макро-
процессоры.
Программист пишет макрокоманду как указание о необхо-
димости выполнить действие, описываемое несколькими командами на языке ассемблера. Когда макропроцессор во время
трансляции программы читает макропрограмму, он производит макрорасширение, то есть генерирует ряд команд языка
ассемблера, соответствующих данной макрокоманде. Процесс
программирования значительно ускоряется, но не решается
проблема машинной зависимости.
Так как развитие ассемблеров не решило проблему машин-
ной зависимости, были разработаны языки высокого уровня.
Такие языки дают возможность машинно-независимого программирования. Перевод с языков высокого уровня на машинный язык осуществляется при помощи программ, называемых
компиляторами. Бывают так называемые быстрые компиляторы (без оптимизации) и оптимизирующие компиляторы.
Компиляторы и ассемблеры имеют общее название транс-
ляторы. Программа на входе транслятора называется исходной
программой. Программа на машинном языке, генерируемая
транслятором, называется объектной программой или выходной (целевой) программой.

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
18
Языки высокого уровня разделяются на процедурно-ориен-
тированные (для любых задач) и проблемно-ориентированные
языки (языки моделирования или статических вычислений).
К процедурно-ориентированным языкам программирования
относятся Паскаль, Фортран, Кобол, PL и др. Среди проблемноориентированных языков можно назвать GPSS (язык моделирования) и SPSS (язык статистики).
Интерпретаторы – это вид трансляторов, которые не гене-
рируют объектную программу, а физически обеспечивают непосредственное выполнение исходной программы. Это медленнее
по сравнению с компилированным кодом, так как транслируется каждая команда при каждом ее выполнении.
Создание супервизорной программы, учитывающей все
сложности выполнения операций ввода-вывода, освобождает
прикладного программиста от необходимости самому писать
подобные программы. Такая супервизорная программа носит название системы управления вводом-выводом (IOCS). В
1950-е годы пользователи включали исходный код IOCS в свои
программы на языке ассемблера. Пакет IOCS, уже написанный и отлаженный, фактически ассемблировался каждый раз
заново как часть индивидуальной программы. Другая концепция – пакет занимал значительную долю основной памяти
и входил в операционную систему.
Спулинг – это ввод-вывод с буферизацией. Посредником
между рабочей программой и низкоскоростным устройством
ввода-вывода становится высокоскоростное устройство, например дисковый накопитель.
Программы для выполнения должны размещаться в ос-
новной памяти. Распределение команд и элементов данных по
конкретным ячейкам основной памяти является важной задачей, а ее решение осуществляет иногда сам пользователь, иногда транслятор, иногда системная программа, называемая за-
грузчиком, а иногда – операционная система. Сопоставление
команд и элементов данных с конкретными ячейками памяти
называется привязкой к памяти.
При программировании на машинном языке привязка про-
изводится в момент кодирования. Более целесообразно откладывать привязку на более поздний срок. И в системе виртуальной

19
Глава 1. Принципы организации системного программного обеспечения
памяти это осуществляется динамически в процессе выполнения программы. Однако это связано с существенным повышением сложности трансляторов, загрузчиков, аппаратных средств
и операционной системы.
Итак, загрузчик – это системная программа, которая раз-
мещает команды и данные программы в ячейках основной памяти. Абсолютный загрузчик размещает эти элементы именно
в те ячейки, адреса которых указаны в программе на машинном
языке. Перемещающий загрузчик может загружать программу
в различные места основной памяти в зависимости, например,
от наличия свободного участка основной памяти в момент загрузки (называется время загрузки).
В составе системного программного обеспечения поставля-
ются большие библиотеки подпрограмм. Программу на машинном языке, полученную в результате трансляции, приходится,
как правило, комбинировать с другими программами на машинном языке, чтобы сформировать выполняемый модуль. Эту
процедуру объединения программ выполняют связывающие
загрузчики и редакторы связей еще до начала выполнения программы.
Связывающий загрузчик во время загрузки объединяет не-
обходимые программы и загружает их непосредственно в основную память. Редактор связей также осуществляет подобное
объединение программ, однако он создает загрузочный модуль,
который записывается во внешнюю память для будущего использования.
Эмуляция – это метод, позволяющий сделать одну вычис-
лительную машину функциональным эквивалентом другой.
Набор команд машинного языка эмулируемого компьютера
микропрограммируется на эмулирующем компьютере. Благодаря этому программы, представленные на машинном языке
первого компьютера, могут непосредственно выполняться на
втором. Это делает менее сложным и болезненным переход с
машины на машину, так как могут выполняться старые программы.
Имитаторы и эмуляторы – это средства, позволяющие од-
ному компьютеру имитировать другой, причем имитаторы –
это чисто программные средства моделирования, а эмуляторы

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
20
на практике требуют и некоторых модификаций аппаратных
средств.
В настоящее время операционные системы (ОС) применяют-
ся практически на всех вычислительных машинах – от гигантских супер-ЭВМ до миниатюрных персональных компьютеров
(ПК). Операционная система часто в большой степени определяет представление пользователя о машине, чем сама аппаратура этой машины. Именно операционная система обеспечивает
функциональные возможности машины.
1.4. История развития операционных систем
Операционные системы, подобно аппаратуре компьютеров,
на пути своего развития прошли ряд радикальных изменений,
так называемых поколений. Для аппаратных средств смена
поколений связана с принципиальными достижениями в области электронных компонентов: электронные лампы (первое
поколение); транзисторы (второе поколение); интегральные
микросхемы (третье поколение); большие и сверхбольшие интегральные схемы (четвертое поколение).
Появление нового поколения сопровождается резким умень-
шением стоимости, габаритов, потребляемой мощности и тепловыделения, а также столь же резким повышением быстродействия и объемов памяти компьютера. Параллельно с технической
базой, но своим путем развивалось и программное обеспечение.
Для машин первого поколения, а частично и для второго
было характерно накопление и предоставление пользователю
разрозненных наборов программ. Низкая надежность оборудования и малые объемы запоминающего устройства (ЗУ) делали
практически невозможным создание сложных взаимозависимых систем программ, комплексно решающих задачу обеспечения работы ЭВМ, полной автоматизации процессов обработки информации.
Техническое совершенствование ЭВМ требовало и соответ-
ствующего программного обеспечения (ПО), которое обеспечивало бы непрерывность обработки информации на ЭВМ. Попытки превращения разрозненного математического обеспечения
в единую систему путем создания всевозможных связующих
программ не решало проблему. Возникла необходимость в соз-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
