Тема. Операционные системы: история, назначение, структура.

1.     Основные понятия и определения ОС.

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

3.     Управление памятью. Принципы построения и классификация ОС.

 

1.     Основные понятия и определения ОС.

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

Структура вычислительной системы

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

Во вторую очередь это программное обеспечение. Все программное обеспечение принято делить на две части: прикладное и системное.

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

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

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

Так, обычный пользователь, неискушённый в программировании, может считать Microsoft Word системной программой, а с точки зрения программиста это приложение. Компилятор языка Си для обычного программиста это системная программа, а для системного прикладная. Несмотря на эту нечеткую грань, эту ситуацию можно отобразить в виде последовательности слоев:

Операционная система как виртуальная машина

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

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

Операционная система как менеджер ресурсов

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

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

Операционная система как защитник пользователей и программ

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

Операционная система как постоянно функционирующее ядро

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

Краткая история эволюции вычислительных систем

• Первый период (1945 - 1955). Ламповые машины. Операционные систем отсутствовали.

• Второй период (1955 - Начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы

• Третий период (Начало 60-х - 1980). Компьютеры на основе интегральных микросхем. Первые многозадачные ОС.

• Четвертый период (1980 – настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы.

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

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

Во вторую очередь это программное обеспечение. Все программное обеспечение принято делить на две части: прикладное и системное.

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

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

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

Так, обычный пользователь, неискушённый в программировании, может считать Microsoft Word системной программой, а с точки зрения программиста это приложение. Компилятор языка Си для обычного программиста это системная программа, а для системного прикладная. Несмотря на эту нечеткую грань, эту ситуацию можно отобразить в виде последовательности слоев:

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

Компоненты операционной системы:

·       Загрузчик

·       Ядро

·       Командный процессор (интерпретатор)

·       БИОС

·       Драйверы устройств

·       Интерфейс.

Основные понятия ОС

• Системные вызовы

• Прерывания

• Исключительные ситуации

• Файлы

• Процессы, нити

• Системные вызовы

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

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

Основное отличие состоит в том, что при системном вызове задача переходит в привилегированный режим или режим ядра (kernel mode). Поэтому системные вызовы иногда еще называют программными прерываниями в отличие от аппаратных прерываний, которые чаще называют просто прерываниями.

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

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

Прерывания

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

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

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

Исключительные ситуации

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

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

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

Файлы

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

Главная задача файловой системы (file system) скрыть особенности ввода-вывода и дать программисту простую абстрактную модель файлов, независимых от устройств. Для чтения, создания, удаления, записи, открытия и закрытия файлов также имеется обширная категория системных вызовов (create, delete, open, close, read, write ).

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

 

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

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

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

В период своего существования процесс проходит через ряд дискретных состояний:

- выполняется, если в данный момент времени ему выделен ЦП

- готов, если он мог бы сразу использовать ЦП, предоставленный в его распоряжение

- блокирован, если он ожидает появление какого-либо события

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

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

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

ОС предусматривает следующие операции над процессами:

- Создание/образование

- Уничтожение

- Возобновление

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

- Пробуждение

- Запуск/выбор

Создание процесса:

- присвоение имени

- включение этого имени в список имен известных ОС

- определение начального приоритета процесса

- формирование блока управления процесса

- выделение процессу начальных ресурсов

Любой процесс может породить процесс

Диаграмму состояния можно представить в виде:

Итоги понятия процесса. Понятие процесса базируется на двух независимых концепция: группирование процессов и выполнение программы.

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

Такие как:

- открытые файлы

- дочерние процессы

- обработчики сигналов

- необработанные аварийные сообщения

- учетная информация и др.

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

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

Приостановленный процесс состоит из собственного адресного пространства, обычно называемого образом памяти или core-файлом.

Понятие ядра ОС.

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

- обработка прерываний

- создание и уничтожение процессов

- переключение процессов из состояния в состояние

- диспетчирование процессов

- приостановка и активизация процессов

- синхронизация процессов

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

- поддержка операций ввода/вывода

- поддержка распределения или перераспределения памяти

- поддержка работы файловой системы

- поддержка механизма вызова-возврата при обращении к процедурам

- поддержка определенных функций по учету работы ЭВМ

 

3.Управление памятью. Принципы построения и классификация ОС.

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

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

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


Рис. Варианты распределения памяти

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

Функциями ОС по управлению памятью в мультипрограммных системах являются:

·                 отслеживание (учет) свободной и занятой памяти;

·                 первоначальное и динамическое выделение памяти процессам приложений и самой операционной системе и освобождение памяти по завершении процессов;

·                 настройка адресов программы на конкретную область физической памяти;

·                 полное или частичное вытеснение кодов и данных процессов из ОП на диск, когда размеры ОП недостаточны для размещения всех процессов, и возвращение их в ОП;

·                 защита памяти, выделенной процессу, от возможных вмешательств со стороны других процессов;

·                 дефрагментация памяти.

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

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

 Таблица 1. Классификация ОС

№ п/п

Признак классификации

Разделения

1.      

По числу одновременно выполняемых задач

1. Однозадачные 2. Многозадачные

2.      

По числу одновременно работающих пользователей

1. Однопользовательские 2. Многопользовательские

3.      

По числу одновременно управляемых процессоров

1. Однопроцессорные 2. Многопроцессорные

4.      

По режиму работы

1. Пакетной обработки 2. Разделения времени 3. Реального времени 4. Многорежимные

 

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

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

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

Многопроцессорные системы состоят из двух или более центральных процессоров, осуществляющих параллельное выполнение команд. Поддержка мультипроцессирования является важным свойством ОС и приводит к усложнению всех алгоритмов управления ресурсами. Многопроцессорная обработка реализована в таких ОС, как Linux, Solaris, Windows NT и в ряде других.

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

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

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

Приведенная классификация ОС не является исчерпывающей.

 

 

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

 

Таблица 2. Принципы построения операционных систем

№ п/п

Принцип

Сущность

1.

Частотный

Наиболее часто встречающиеся операции выполняются наиболее быстро.

2.

Модульности

ОС создают на основе объединения самостоятельных функциональных элементов системы.

3.

Функциональной избирательности

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

4.

Генерируемости

Настройка системных программ исходя из конкретной конфигурации ЭВМ и круга решаемых задач.

5.

По умолчанию

ОС самостоятельно задает параметры работы вычислительной системы, если их не задает пользователь.

6.

Перемещаемости

Построение модулей, исполнение которых не зависит от расположения в ОЗУ.

7.

Защиты

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

8.

Независимости программ от внешних устройств

 

9.

Наращиваемости и открытости

Открытая ОС доступна для анализа специалистам, а наращиваемая – для модификации и совершенствования.

 

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

 

 

Комментарии

Популярные сообщения из этого блога