Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Системное программное обеспечение. Учебник

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
11
Глава 1. Принципы организации системного программного обеспечения
переключается на обслуживание другого пользователя. Часы истинного времени дают возможность компьютеру следить за реальным календарным временем.
Некоторые периферийные устройства обладают возмож­ностью работать либо в режиме онлайн, когда они непосред­ственно связаны с центральным процессором, либо в автоном- ном режиме, когда ими управляют автономные контроллеры, не связанные с центральным процессором.
Автономные контроллеры привлекательны тем, что позво­ляют управлять периферийными устройствами, не загружая при этом непосредственно процессор.
Канал ввода-вывода – это специализированный процессор, предназначенный для управления вводом-выводом независимо от основного процессора. Канал имеет возможность прямого доступа к основной памяти для записи или выборки информа­ции. Значение каналов в том, что они позволяют существенно увеличить параллелизм работы аппаратуры компьютера и ос­вобождают процессор от подавляющей части нагрузки, связан­ной с управлением вводом-выводом.
Для высокоскоростного обмена данными между внешними устройствами и основной памятью используется селекторный канал. Но этот канал имеет только один подканал и может об­служивать в каждый момент времени только одно устройство. Для работы одновременно со многими потоками данных в ре­жиме чередования используется мультиплексный канал. Он имеет много подканалов. В низкоскоростных линиях передачи использовались байт-мультиплексные каналы, которые обе­спечивают режим чередования байтов при одновременном об­служивании ряда медленных внешних устройств (принтеров, терминалов, устройства вывода). Блок-мультиплексный ка- нал используется при обменах в режиме чередования блоков и может обслуживать несколько высокоскоростных устройств (лазерные принтеры, накопители) [1, 2].
Узкое место в работе ВМ – доступ к основной памяти. По­скольку в каждый конкретный момент может осуществлять­ся только одна операция обращения к некоторому модулю ос­новной памяти, то может возникнуть конфликтная ситуация между каналами и процессором. Приоритет предоставляется
СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
12
каналам, поскольку каналам требуется небольшой процент об­щего числа циклов памяти. В этом случае происходит «захват цикла» каналом. Это позволяет обеспечить лучшее использо­вание устройств ввода-вывода. Подобный подход принят и в со­временных операционных системах. Планировщики, входя­щие в состав операционных систем, обычно отдают приоритет программам с большим объемом ввода-вывода по отношению к программам с большим объемом вычислений.
Когда потребность в увеличении основной памяти стала очевидной, то архитектуры компьютеров были модифицирова­ны для работы с очень большим диапазоном адресов. Для этого стали применять адресацию типа «база + смещение», или от- носительную адресацию, при которой все адреса программы суммируются с содержимым базового регистра. Поэтому про­граммы становятся перемещаемыми, то есть позиционно неза- висимыми. Это значит, что одну и ту же программу для разных абонентов можно загружать в различных местах основной па­мяти.
В вычислительных машинах предусматривается несколь­ко различных режимов работы. Динамический выбор режима позволяет лучше организовать защиту программ и данных. Операционной системе обычно присваивается статус самого полномочного пользователя, работает она в режиме суперви- зора и имеет доступ ко всем командам, предусмотренным в ма­шине. При высокой степени требований к защите желательно иметь более двух режимов, так как в этом случае можно обе­спечить более высокую степень детализации защиты. Каж­дому конкретному пользователю необходимо предоставлять доступ по принципу минимума привилегий, то есть право до­ступа только к тем ресурсам, которые ему необходимы для ре­шения задач.
В процессе развития компьютерных архитектур выявилась тенденция к увеличению количества привилегированных ко-
манд, то есть команд, которые не могут выполняться в режиме задачи. Это свидетельствует о тенденции к реализации больше-
го числа функций операционной системы аппаратными сред­ствами. Некоторые микропроцессоры имеют операционные си­стемы, реализованные в виде микропрограмм.
13
Глава 1. Принципы организации системного программного обеспечения
Системы виртуальной памяти дают возможность указывать в программах адреса, которым не обязательно соответствуют физические адреса основной памяти. Виртуальные адреса, вы­даваемые работающими программами, при помощи аппарат­ных средств динамически (то есть во время выполнения про­граммы) преобразуются в адреса команд и данных, хранящихся в основной памяти. Это позволяет программам работать с адрес­ными пространствами гораздо большего размера, чем адресное пространство основной памяти. Это дает возможность создавать программы, независимые (большей частью) от ограничений ос­новной памяти, позволяет обеспечить работу многоабонентских систем с общими ресурсами. В системах виртуальной памяти применяются следующие методы:
• страничная организация, предусматривающая обмен меж­ду основной и внешней памятью блоками данных фиксирован­ного режима;
• сегментация – разделение программы и данных на логи­ческие компоненты, что упрощает управление доступом и кол­лективное использование программ и данных.
При мультипроцессорной обработке данных может возник­нуть конфликтная ситуация, так как несколько центральных процессоров работают с общей основной памятью и одной опе­рационной системой. Необходим координированный упорядо­ченный доступ к каждой общей ячейке памяти.
Одним из способов достижения высокой производительно­сти вычислительных машин является минимизация количе­ства прерываний в процессе выполнения программы. Для это­го и был разработан способ прямого доступа к памяти (ПДП), который требует лишь одного прерывания на каждый блок символов, передаваемых во время операции ввода-вывода. Это быстрее, чем прерывать процессор на каждый символ.
Аппаратные средства, обеспечивающие захват циклов па­мяти и управление устройствами ввода-вывода в режиме пря­мого доступа к памяти, называются каналом прямого доступа к памяти.
Конвейеризация – это аппаратный способ, применяемый в высокопроизводительных вычислительных машинах с целью использования определенных типов параллелизма для повыше-
СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
14
ния эффективности обработки команд. Упрощенно структуру конвейерного процессора можно представить похожей на техно­логическую линию производственного предприятия. На конвей­ере процессора на различных стадиях выполнения одновремен­но могут находиться несколько команд. Это требует большего объема аппаратуры, но позволяет существенно сократить время выполнения последовательности команд.
Вычислительные машины содержат несколько видов па- мяти, в том числе основную (первичную, оперативную), внеш­нюю (вторичную, массовую) и кэш-память.
В основной памяти должны размещаться команды и дан­ные, к которым будет обращаться работающая программа.
Внешняя память – это магнитные диски, ленты, карты и другие носители, предназначенные для хранения информа­ции, которая со временем будет записана в основную память.
Кэш-память – это буферная память очень высокого быстро­действия, предназначенная для повышения скорости выпол­нения работающих программ. Для программ пользователя эта память, как правило, «прозрачна». Обычно текущая часть про­граммы помещается в кэш-память (если она есть), что позволя­ет выполнить ее быстрее, чем если бы она находилась в основ­ной памяти.
Все виды памяти создают единую иерархию памяти. Пере­ход по уровням этой иерархии от кэш-памяти к основной и за­тем к внешней сопровождается уменьшением стоимости и ско­рости и увеличением емкости памяти. Память, как правило, разделяется на байты (символы) или слова, состоящие из по­стоянного количества байтов. Каждая ячейка памяти имеет свой адрес. Множество адресов, доступных программе, назы­вается адресным пространством.
1.3. Виды программного обеспечения
Программное обеспечение – это программы, которые со­держат команды и данные и определяют для аппаратных средств алгоритмы решения задач.
Операционная система выступает как интерфейс между ап­паратурой компьютера и пользователем с его задачами. Основ-
15
Глава 1. Принципы организации системного программного обеспечения
ное ее назначение – это наиболее эффективное использование ресурсов вычислительной системы и организация надежных вычислений [4]. В свете современных представлений опера­ционные системы рассматриваются как часть системного про­граммного обеспечения (СПО).
В англоязычной технической литературе термин СПО (sys­tem software) означает комплексы программ, являющиеся об­щими для всех, кто совместно использует технические средства компьютеров, и применяемые как для автоматизации разработ­ки (создания) новых программ, так и для организации выполне­ния существующих программ. С этих позиций СПО может быть разделено на следующие пять групп [4]:
• операционные системы;
• системы управления файлами;
• интерфейсные оболочки для взаимодействия пользовате-
ля с операционной системой и программной средой;
• системы программирования;
• утилиты.
Интерфейсные оболочки могут использоваться для удоб­ства взаимодействия с операционной системой. Их основное назначение – либо расширить возможности по управлению операционной системой, либо изменить встроенные в систе­му возможности. К этому же классу структуры программного обеспечения относятся и эмуляторы, позволяющие смодели­ровать в одной операционной системе какую-либо другую ма­шину или операционную систему. Так, известна система эму­ляции WMWARE, которая позволяет запустить в среде Linux любую другую операционную систему, например Windows. Можно, наоборот, создать эмулятор, работающий в среде Win­dows, который позволит смоделировать компьютер, работаю­щий под любой операционной системой.
Обобщенная структура программного обеспечения вычис­лительной системы приведена на рис. 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. История развития операционных систем
Операционные системы, подобно аппаратуре компьютеров,
на пути своего развития прошли ряд радикальных изменений, так называемых поколений. Для аппаратных средств смена поколений связана с принципиальными достижениями в об­ласти электронных компонентов: электронные лампы (первое поколение); транзисторы (второе поколение); интегральные микросхемы (третье поколение); большие и сверхбольшие ин­тегральные схемы (четвертое поколение).
Появление нового поколения сопровождается резким умень-
шением стоимости, габаритов, потребляемой мощности и тепло­выделения, а также столь же резким повышением быстродей­ствия и объемов памяти компьютера. Параллельно с технической базой, но своим путем развивалось и программное обеспечение.
Для машин первого поколения, а частично и для второго
было характерно накопление и предоставление пользователю разрозненных наборов программ. Низкая надежность оборудо­вания и малые объемы запоминающего устройства (ЗУ) делали практически невозможным создание сложных взаимозависи­мых систем программ, комплексно решающих задачу обеспе­чения работы ЭВМ, полной автоматизации процессов обработ­ки информации.
Техническое совершенствование ЭВМ требовало и соответ-
ствующего программного обеспечения (ПО), которое обеспечи­вало бы непрерывность обработки информации на ЭВМ. Попыт­ки превращения разрозненного математического обеспечения в единую систему путем создания всевозможных связующих программ не решало проблему. Возникла необходимость в соз-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]