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

Современные концепции и технологии проектирования операционных систем. Управление процессами и оперативной памятью. Трансляция программ, генерация кода. Формальное определение языков программирования. Лексический, синтаксический, семантический анализ.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 15.02.2012
Размер файла 219,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

ОБРАЗОВАТЕЛЬНАЯ АВТОНОМНАЯ НЕКОММЕРЧЕСКАЯ ОРГАНИЗАЦИЯ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ВОЛЖСКИЙ УНИВЕРСИТЕТ ИМ. В.Н. ТАТИЩЕВА»

(ИНСТИТУТ)

Кафедра «Информатика и системы управления»

СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

Учебное пособиедля студентов специальности

"Вычислительные машины, комплексы, системы и сети"

"Информационные системы и технологии"

(для дневного и заочного отделений)

Тольятти 2010

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

Составители:

профессор кафедры Информатика и системы управления, к.т.н., доц. Трубачева С.И.

Рецензент:

профессор кафедры Промышленная информатика к.т.н., доц. Куралесова Н.О.

Рассмотрено и утверждено на заседании

кафедры “Информатика и системы управления”

Протокол №___ от “___” ___________ 200__г.

Зав. кафедрой, д.т.н, профессор ______________________ С.В. Краснов

Согласовано

кафедра «Промышленная информатика»

Протокол №___ от “___” ___________ 200__г.

Зав. кафедрой, к.э.н.______________________ В.И. Тихонов

Одобрено Научно-методическим советом университета

протокол № _____ от «____» _________ 200_ г.

Председатель __________________________

Содержание

  • Введение
  • Основные понятия курса
  • ГЛАВА 1 Основы построения и функционирования операционных систем
  • 1.1 Классификация операционных систем
  • 1.2 Управление процессами
  • 1.3 Управление оперативной памятью
  • 1.4 Файловая система
  • 1.5 Управление вводом-выводом
    • 1.6 Современные концепции и технологии проектирования операционных систем
  • ГЛАВА 2 Основы построения трансляторов
    • 2.1 Основные понятия трансляции программ
    • 2.2 Формальное определение языков программирования
    • .2.3 Лексический анализ
    • 2.4 Синтаксический анализ
    • 2.5 Семантический анализ
    • 2.6 Распределение памяти
    • 2.7 Генерация кода
    • 2.8 Оптимизация кода программы
    • 2.9 Компоновка программ
    • 2.10 Загрузчики
  • Список литературы
  • Приложение А Пример выполнения курсовой работы по дисциплине "Системное программное обеспечение"
  • Приложение Б Тестовые задания
  • Приложение В Экзаменационные вопросы
  • Приложение Г Тематика курсовых работ

Введение

Обеспечение ПЭВМ делится на две основные группы: аппаратное и программное обеспечение. В свою очередь, программное обеспечение (ПО) делится на следующие группы: системное ПО; прикладное ПО; инструментальные средства для разработки ПО. Основная задача дисциплины СПО - изучение основных правил, методов, средств создания и использования СПО.

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

При появлении языков программирования, программ, управляющих ресурсами ВМ, позволяющих выполнять пользовательские прикладные задачи, одновременно появились программы-трансляторы, транслирующие (преобразующие) программы с языка высокого уровня, который понятен пользователю, но не «понятен» ВМ в машинный код (0/1), который «понятен» ВМ. Успех распространения языков программирования связан не только с включением в языки новых средств описания и обработки сложных структур данных, но и с разработкой надежных и эффективных трансляторов. Другим основным разделом при изучении дисциплины является раздел «Основы построения трансляторов».

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

Учебное пособие разработано с учетом требований ГОС специальностей, на основе учебника для вузов Олифер В.Г., Олифер Н.А. «Системное программное обеспечение», на основе авторского учебно-методического материала, разработанного в процессе работы в университете, содержит тот материал, изучение и понимание которого определяет базовые знания по предмету. Основные составляющие дисциплины в соответствии с ГОС следующее: введение в ОС, управление процессами, управление ресурсами; управление памятью; файловая система; синхронизация процессов, семафоры, сообщения, использование семафоров для решения задач взаимоисключения и синхронизации; тупики, способы борьбы с тупиками; трансляторы; формальные языки и грамматики, типы грамматик; вывод цепочек; конечный и магазинный автоматы, распознаватели и преобразователи, построение автомата по заданной грамматике; структура компиляторов и интерпретаторов, лексический, синтаксический и семантический анализаторы, генератор кода; распределение памяти, виды переменных; статическое и динамическое связывание; загрузчики; функции загрузчика; настраивающий и динамический загрузчики; подключение библиотек.

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

Основные понятия курса

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

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

Назначение ОС - управление ресурсами ПЭВМ и обеспечение диалога с пользователем.

Функции операционной системы. К основным функциям ОС можно отнести управление процессами, памятью, файлами, устройствами ввода/вывода.

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

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

Многопользовательский режим. По числу одновременно работающих пользователей ОС делятся на: однопользовательские (MS-DOS, Windows 3.x, ранние версии OS/2); многопользовательские (UNIX, Windows NT и др.). Главным отличием многопользовательских систем от однопользовательских является наличие средств защиты информации каждого пользователя от несанкционированного доступа других пользователей.

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

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

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

Модульная структура построения ОС. Основным принципом построения современных ОС является принцип модульности. Модули легче проектировать, тестировать. Многомодульную систему легче модифицировать, наращивать и т.д.

Переносимость ОС. Переносимость ОС обеспечивается за счет разработки программ ОС на машинно-независимом языке СИ. Части ОС, непосредственно управляющие ресурсами ПЭВМ, изолируют в отдельные модули. При переносе ОС с одной платформы на другую переписываются только они.

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

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

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

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

Идентификатор и дескриптор процесса. При порождении процесса ему присваивается номер - идентификатор (pid - идентификатор процесса). Идентификатор процесса, состояние процесса, данные о степени привилегированности процесса, адрес местонахождения кодового сегмента в ОП и другая информация. Информацию такого рода, используемую ОС для планирования процессов, называют дескриптором процесса.

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

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

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

Приоритет процесса. Приоритет - это число, характеризующее степень привилегированности процесса при использовании ресурсов вычислительной машины, в частности, процессорного времени: чем выше приоритет, тем выше привилегии.

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

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

Средства коммуникации процессов. Взаимодействие процессов осуществляется через интерфейс прикладного программирования (Application Programming Inteface - API). Интерфейс прикладного программирования определяется набором функций. Как прикладное, так и системное приложение обращается к операционной системе через системные вызовы, такие как - creat - создать файл, open - открыть его для чтения и прочее.

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

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

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

Управление памятью. Память является важнейшим ресурсом, требующим тщательного управления со стороны мультипрограммной операционной системы. Распределению подлежит вся оперативная память, не занятая операционной системой. Методы управления оперативной памятью подразделяются на методы распределения ОП без использования дискового пространства, методы распределения ОП с использованием дискового пространства (используются современными ОС).

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

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

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

Стратегия подкачки страниц. Наиболее распространенными реализациями виртуальной памяти является страничное, сегментное и странично-сегментное распределение памяти. Данные методы используют стратегию подкачки страниц. Виртуальное адресное пространство процесса делится на части: страницы, сегменты; сегменты, в свою очередь, могут быть разделены на страницы. При загрузке процесса часть его виртуальных частей помещается в оперативную память, а остальные - на диск. По мере необходимости части, находящиеся на диске, подгружаются по определенному алгоритму в ОП, а неиспользуемые части из ОП могут быть вытеснены на жесткий диск. Такие методы обеспечивают реализацию многозадачности, выполнение больших по объему приложений.

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

Защита от сбоев и несанкционированного доступа.

Работа без сбоев и отказов зависит от качества разработанного программного обеспечения. Одним из основных методов обеспечения отказоустойчивости системы является метод резервирования данных. Ведение журналов, считывание данных позволяет восстановить систему. Функции выполняются как автоматически системой, так и возложены на системного администратора. Защита от несанкционированного доступа. Используется огромное количество методов защиты от несанкционированного доступа, основными из которых являются назначение имени пользователю, пароля для входа в систему, набора полномочий. В Unix-системах каждому файлу назначается 9-ти битовый код доступа (12-ти битовый код доступа), определяющий право на чтение, редактирование, выполнение определенной категории пользователей. В Windows-системах каждый файл может быть сохранен с паролем на его дальнейшее открытие, редактирование и др.

Исходная программа. Программа, написанная на языке высокого уровня, называется исходной программой, язык высокого уровня называется входным языком.

Языковый процессор. Языковым процессором называют программу, позволяющую вычислительной машине выполнять программы на входном языке. Различают 2 типа языковых процессоров: 1)интерпретаторы; 2)трансляторы.

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

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

Компилятор. Транслятор для языка высокого уровня называют компилятором.

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

Лексемы. Символы объединяются в слова (лексемы) - элементарные конструкции языка.

Цепочка символов. Цепочка символов - последовательность символов, записанных один за другим.

Язык. Языком (L) над алфавитом (V) называется некоторое счетное подмножество цепочек конечной длины из множества всех цепочек.

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

Синтаксис языка. Предложение строится из более простых конструкций по правилам синтаксиса (синтаксис представляет собой правила построения предложений).

Семантика. Описание смысла предложений, значение слов, их внутренних связей составляет семантику (смысловое значение) языка;

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

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

Семиотика языка. Синтаксис, семантика, прагматизм языка образуют семиотику языка.

Грамматика языка. Формальное представление синтаксиса языка называют грамматикой языка.

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

Типы грамматик. Типы грамматик (классификация по Хомскому) классифицируются по структуре используемых правил (тип 0 - тип 3).

Регулярная грамматика. Грамматика, порождающая язык с конечным числом состояний, называется регулярной.

Классификация языков. В соответствии с типами грамматик, языки делятся на 4 типа: тип 0 -тип 3.

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

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

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

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

Распределение памяти. Синтез объектной программы начинается с распределения памяти для программных объектов. Исходными данными для распределения памяти является таблица идентификаторов. Размер памяти, выделяемый под лексические единицы базовых типов, зависит от версии компилятора.

Статическая и динамическая память. Статическая область памяти - область памяти, размер которой известен на этапе компиляции (например, объявление переменной int x; резервируется 2 (4) байта) для хранения значения). Динамическая область памяти - область памяти, размер которой на этапе компиляции неизвестен (выделяемая пользователем, например, использование функции new; выделяемая компилятором, например, при преобразовании типов).

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

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

ГЛАВА 1 Основы построения и функционирования операционных систем

1.1 Классификация операционных систем

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

1.1.1 Классификация ОС

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

Особенности алгоритмов управления ресурсами

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

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

Особенности аппаратных платформ

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

Особенности методов построения

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

К таким базовым концепциям относятся:

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

Построение ОС на базе объектно-ориентированного подхода (ООП) дает возможность использовать все достоинства ООП, хорошо зарекомендовавшие себя на уровне приложений, внутри операционной системы, а именно:

­ аккумуляцию удачных решений в форме стандартных объектов;

­ возможность создания новых объектов на базе имеющихся с помощью механизма наследования;

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

Наличие нескольких прикладных сред дает возможность в рамках одной ОС одновременно выполнять приложения, разработанные для нескольких ОС. Многие современные операционные системы поддерживают одновременно прикладные среды MS-DOS, Windows, UNIX (POSIX), OS/2 или хотя бы некоторого подмножества из этого популярного набора. Концепция множественных прикладных сред наиболее просто реализуется в ОС на базе микроядра, над которым работают различные серверы, часть которых реализуют прикладную среду той или иной операционной системы.

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

­ наличие единой справочной службы разделяемых ресурсов;

­ наличие единой службы времени;

­ использование механизма вызова удаленных процедур (RPC) для прозрачного распределения программных процедур по машинам;

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

Типы операционных систем

Классификация осуществляется с точки зрения особенностей областей использования

Многозадачные ОС подразделяются на три типа в соответствии с использованными при их разработке критериями эффективности:

- системы пакетной обработки (например, OC EC);

- системы разделения времени (UNIX, VMS);

- системы реального времени (QNX, RT/11).

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

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

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

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

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

Сетевые операционные системы

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

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

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

2. Средства предоставления собственных ресурсов и услуг в общее пользование - серверная часть ОС (сервер). Эти средства обеспечивают, например, блокировку файлов и записей, что необходимо для их совместного использования; ведение справочников имен сетевых ресурсов; обработку запросов удаленного доступа к собственной файловой системе и базе данных; управление очередями запросов удаленных пользователей к своим периферийным устройствам.

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

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

Контрольные вопросы к первой главе

1. Что такое операционная система? Ее назначение, цели, задачи, функции?

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

3. Почему вычислительную машину называют виртуальной?

4. Когда появились первые операционные системы? К какому типу операционных систем они относились?

5. Какие типы операционных систем Вы знаете (с точки зрения областей использования)?

6. Что такое мультипрограммирование? Почему разработка и внедрение данного метода повлияла на развитие операционных систем?

7. В каком году появилась первая версия Unix-системы? В чем основные достоинства операционных систем данного семейства?

8. В чем достоинства модульной структуры проектирования операционных систем?

9. Перечислите основные принципы проектирования операционных систем.

10. Перечислите основные компоненты ОС. Что такое ядро операционной системы? В чем разница между монолитным ядром и микроядром?

11. Поясните принципы действия асинхронной, синхронной ОС.

12. Что такое процесс? Что такое контекст и дескриптор процесса? Что такое приоритет процесса?

13. Поясните механизм квантования при реализации многозадачности.

14. Что такое виртуальная память? С какой целью сегментация виртуального адресного пространства процесса реализована в современных операционных системах?

1.2 Управление процессами

1.2.1 Состояния процессов

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

В многозадачной (многопроцессной) системе процесс может находиться в одном из трех основных состояний: Выполнение - активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором; Ожидание - пассивное состояние процесса, процесс заблокирован, он не может выполняться по своим внутренним причинам, он ждет осуществления некоторого события, например, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса; Готовность - также пассивное состояние процесса, но в этом случае процесс заблокирован в связи с внешними по отношению к нему обстоятельствами: процесс имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого процесса. В ходе жизненного цикла каждый процесс переходит из одного состояния в другое в соответствии с алгоритмом планирования процессов, реализуемым в данной операционной системе. Типичный граф состояний процесса показан на рисунке 2.1. В состоянии ВЫПОЛНЕНИЕ в однопроцессорной системе может находиться только один процесс, а в каждом из состояний ОЖИДАНИЕ и ГОТОВНОСТЬ - несколько процессов, эти процессы образуют очереди соответственно ожидающих и готовых процессов. Жизненный цикл процесса начинается с состояния ГОТОВНОСТЬ, когда процесс готов к выполнению и ждет своей очереди. При активизации процесс переходит в состояние ВЫПОЛНЕНИЕ и находится в нем до тех пор, пока либо он сам освободит процессор, перейдя в состояние ОЖИДАНИЯ какого-нибудь события, либо будет насильно "вытеснен" из процессора, например, вследствие исчерпания отведенного данному процессу кванта процессорного времени. В последнем случае процесс возвращается в состояние ГОТОВНОСТЬ. В это же состояние процесс переходит из состояния ОЖИДАНИЕ, после того, как ожидаемое событие произойдет.

Рисунок 2.1 - Граф состояний процесса в многозадачной среде

1.2.2 Контекст и дескриптор процесса

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

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

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

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

1. Создать информационные структуры, описывающие данный процесс, то есть его дескриптор и контекст.

2. Включить дескриптор нового процесса в очередь готовых процессов.

3. Загрузить кодовый сегмент процесса в оперативную память или в область свопинга.

1.2.3 Алгоритмы планирования процессов

Планирование процессов включает в себя решение следующих задач:

1. Определение момента времени для смены выполняемого процесса.

2. Выбор процесса на выполнение из очереди готовых процессов.

3. Переключение контекстов "старого" и "нового" процессов.

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

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

­ процесс завершился и покинул систему,

­ произошла ошибка,

­ процесс перешел в состояние ОЖИДАНИЕ,

­ исчерпан квант процессорного времени, отведенный данному процессу.

Процесс, который исчерпал свой квант, переводится в состояние ГОТОВНОСТЬ и ожидает, когда ему будет предоставлен новый квант процессорного времени, а на выполнение в соответствии с определенным правилом выбирается новый процесс из очереди готовых. Таким образом, ни один процесс не занимает процессор надолго, поэтому квантование широко используется в системах разделения времени. Граф состояний процесса, изображенный на рисунке 2.1, соответствует алгоритму планирования, основанному на квантовании.

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

По разному может быть организована очередь готовых процессов: циклически, по правилу "первый пришел - первый обслужился" (FIFO) или по правилу "последний пришел - первый обслужился" (LIFO).

Другая группа алгоритмов использует понятие "приоритет" процесса. Приоритет - это число, характеризующее степень привилегированности процесса при использовании ресурсов вычислительной машины, в частности, процессорного времени: чем выше приоритет, тем выше привилегии.

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

Существует две разновидности приоритетных алгоритмов: алгоритмы, использующие относительные приоритеты, и алгоритмы, использующие абсолютные приоритеты.

В обоих случаях выбор процесса на выполнение из очереди готовых осуществляется одинаково: выбирается процесс, имеющий наивысший приоритет. По-разному решается проблема определения момента смены активного процесса. В системах с относительными приоритетами активный процесс выполняется до тех пор, пока он сам не покинет процессор, перейдя в состояние ОЖИДАНИЕ (или же произойдет ошибка, или процесс завершится). В системах с абсолютными приоритетами выполнение активного процесса прерывается еще при одном условии: если в очереди готовых процессов появился процесс, приоритет которого выше приоритета активного процесса. В этом случае прерванный процесс переходит в состояние готовности. Во многих операционных системах алгоритмы планирования построены с использованием как квантования, так и приоритетов. Например, в основе планирования лежит квантование, но величина кванта и/или порядок выбора процесса из очереди готовых определяется приоритетами процессов.

Вытесняющие и невытесняющие алгоритмы планирования

Существует два основных типа процедур планирования процессов - вытесняющие (preemptive) и невытесняющие (non-preemptive).

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

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

Понятия preemptive и non-preemptive иногда отождествляются с понятиями приоритетных и бесприоритетных дисциплин, что неверно.

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

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

1.2.4 Средства синхронизации и взаимодействия процессов

1.2.4.1 Проблема синхронизации

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

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

Процессы-клиенты читают эту переменную, записывают в соответствующую позицию файла "заказов" имя своего файла и наращивают значение NEXT на единицу. Предположим, что в некоторый момент процесс R решил распечатать свой файл, для этого он прочитал значение переменной NEXT, значение которой для определенности предположим, равным 4. Процесс запомнил это значение, но поместить имя файла не успел, так как его выполнение было прервано (например, вследствие исчерпания кванта). Очередной процесс S, желающий распечатать файл, прочитал то же самое значение переменной NEXT, поместил в четвертую позицию имя своего файла и нарастил значение переменной на единицу. Когда в очередной раз управление будет передано процессу R, то он, продолжая свое выполнение, в полном соответствии со значением текущей свободной позиции, полученным во время предыдущей итерации, запишет имя файла также в позицию 4, поверх имени файла процесса S. Таким образом, процесс S никогда не увидит свой файл распечатанным.

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

1.2.4.2 Средства синхронизации процессов


Подобные документы

  • Эволюция и классификация ОС. Сетевые операционные системы. Управление памятью. Современные концепции и технологии проектирования операционных систем. Семейство операционных систем UNIX. Сетевые продукты фирмы Novell. Сетевые ОС компании Microsoft.

    творческая работа [286,2 K], добавлен 07.11.2007

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

    реферат [73,1 K], добавлен 04.06.2010

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

    курсовая работа [36,4 K], добавлен 08.01.2011

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

    презентация [15,9 K], добавлен 06.01.2014

  • Основные методы описания синтаксиса языков программирования: формальные грамматики, формы Бэкуса-Наура и диаграммы Вирта. Разработка алгоритма решения задачи. Лексический и синтаксический анализатор, семантический анализ. Структурная организация данных.

    курсовая работа [680,1 K], добавлен 12.06.2011

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

    учебное пособие [1,2 M], добавлен 24.01.2014

  • Виды системного программного обеспечения. Функции операционных систем. Системы управления базами данных. Классификация СУБД по способу доступа к базе данных. Инструментальные системы программирования, обеспечивающие создание новых программ на компьютере.

    реферат [22,1 K], добавлен 27.04.2016

  • Системное, инструментальное и прикладное программное обеспечение. Современные настольные издательские системы. Программные средства мультимедиа. Системы искусственного интеллекта. Прикладное программное обеспечение автоматизированного проектирования.

    реферат [59,4 K], добавлен 18.12.2013

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

    реферат [22,8 K], добавлен 11.05.2011

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

    реферат [20,2 K], добавлен 01.04.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.