Чтобы было возможно писать программы, работающие в любой системе unix, был разработан стандарт posix

Вид материалаЛекции

Содержание


Основы строения ОС
3.1. Определение и основные составляющие ОС
3.2. Общий принцип работы ОС
3.3. Основные понятия, концепции ОС
Системные вызовы (system calls)
Прерывания внешние, внутренние и программные.
Подобный материал:
1   2   3   4   5

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


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

Основными функциями ОС являются:
  1. Прием от пользователя заданий или команд.
  2. Прием и исполнение программных запросов на запуск, приостановку и остановку других программ.
  3. Загрузка в оперативную память подлежащих исполнению программ.
  4. Инициация программы (передача ей управления, в результате чего процессор исполняет программу).
  5. Идентификация всех программ и данных.
  6. Обеспечение работы системы управления файлами и СУБД. что увеличивает эффективность работы всего ПО.
  7. Обеспечения режима мультипрограммирования, т. е. выполнение 2 или более программ на 1 процессоре, воздающие видимость их одновременного исполнения.
  8. Управление операциями ввода/вывода.
  9. Распределение памяти, организация виртуальной памяти.
  10. Планирование и диспетчеризация задач в соответствии с заданными стратегией и дисциплинами обслуживания.
  11. Обмен сообщениями и данными между выполняющимися программами.
  12. Защита программ от влияния друг на друга. обеспечение сохранности данных.
  13. Предоставление услуг на случай сбоя системы.
  14. Обеспечение работы систем программирования.

3.1. Определение и основные составляющие ОС


Операционные системы и их оболочки относится к системному ПО.

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

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

Управление различными ресурсами ЭВМ – одна из основных задач ОС.

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

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

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

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

Таким образом, ОС – это также программа, но состоящая из модулей.

Поясним несколько часто встречающихся терминов.

Задача (задание) – программный код, который необходимо исполнить. Исполнение кода занимается центральный процессор (ЦПУ, CPU). Поскольку он может исполнять только машинные двоичные инструкции (команды), перед тем, как использовать программу, написанную на языке высокого уровня, «понятный» процессору.

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

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


3.2. Общий принцип работы ОС


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

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

Общий принцип взаимодействия подсистем:



При работе с периферийными устройствами (к ним относятся и устройства ввода-вывода [input/output], УВВ) ОС в оперативной памяти создает соответствующие буферы, в которые временно помещается обрабатываемый код и данные. Так происходит, например, при обращении к файлам, которые считываются с внешнего запоминающего устройства (ВЗУ) и помещаются в файловый буфер в ОЗУ. Кроме этого, файл помещается в таблицу открытых файлов и ему присевается дескриптор, по которому к нему может обращаться пользовательская программа.

При этом работает часть ядра, называемая подсистемой ввода-вывода. Также происходит и при печати.

3.3. Основные понятия, концепции ОС


В любой операционной системе поддерживается механизм, который позволяет пользовательским программам обращаться к услугам ядра ОС. В операционных системах наиболее известной советской вычислительной машины БЭСМ-6 соответствующие средства "общения" с ядром назывались экстракодами, в операционных системах IBM они назывались системными макрокомандами и т.д. В ОС Unix такие средства называют системными вызовами.

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

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

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

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

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

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

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

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

Прерывания внешние, внутренние и программные.

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

Структуры систем прерываний могут быть самыми различными, но все они имеют общую особенность – прерывание непременно ведет за собой изменение порядка выполнения команд процессором. Механизм обработки прерываний включает в себя следующие элементы:
  1. Установление факта прерывания (прием и идентификация сигнала на прерывание).
  2. Запоминание состояния прерванного процесса (состояние процесса определяется значением счетчика команд, содержимым регистра процессора, спецификацией режима: пользовательский или привилегированный)
  3. Управление аппаратно передается программе обработки прерывания. В этом случае, в счетчик команд заносится начальный адрес подпрограммы обработки прерывания, а в соответствующие регистры из слова состояния.
  4. Сохранение информации прерванной программе, которую не удалось спасти с помощью действий аппаратуры.
  5. Обработка прерывания. Работа может быть выполнена той же подпрограммой, которой было передано управление на 3-ем шаге, но в ОС чаще всего эта обработка реализуется путем вызова соотв. подпрограммы.
  6. Восстановление информации относящейся к прерванному процессу.
  7. Возврат в прерванную программу.

Первые 3 шага реализуются аппаратными средствами, а остальные – программно.

Главные функции механизма прерывания:
  1. Распознавание или классификация прерывания.
  2. Передача управления обработчику прерывания.
  3. Корректное возвращение к прерванной программе

Обслуживание прерываний. Наличие сигнала прерывания не обязательно должно вызывать прерывание исполняющейся программы, процессор может обладать системой защиты от прерываний: отключение системы прерываний либо запрет или маскирование отдельных сигналов прерываний. Программное управление этими средствами позволяет ОС регулировать обработку сигналов прерывания. Обычно операции прерывания выполняются только после завершения выполнения текущей команды. Поскольку сигналы прерывания возникают в произвольные моменты времени, то на момент прерывания может существовать несколько сигналов прерывания, которые могут быть обработаны только последовательно. Чтобы обработать сигналы прерывания в разумном порядке им присваиваются приоритеты. Программы управляя специальными регистрами маски, позволяют реализовать различные дисциплины обслуживания:
    1. с относительным приоритетом. При этом обслуживание не прерывается даже при наличии запросов с более высокими приоритетами. после окончания обслуживания данного запроса (текущего) обслуживается запрос с наивысшим приоритетом.
    2. с абсолютным приоритетом. Всегда обслуживаются задачи с наивысшим приоритетом. Для реализации этой дисциплины при запросе на обработку прерываний маскируются все прерывания с низшим приоритетом. При этом возможно многоуровневое прерывание, т. е. прерывание программы обработки прерывания. Число уровней прерывания в этом режиме изменяется и зависит от приоритета запроса по принципу стека: LCFS – last come first served, т. е. запрос с более высоким приоритетом может прервать запрос с более низким приоритетом. При появлении запроса на прерывание система прерываний идентифицирует сигнал и если прерывания разрешены, то управление передается на соотв. программу обработки прерываний.

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

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

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

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

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

Средства контроля CPU

(проц)

Высший приоритет

Системный таймер




Магнитные диски

Сетевое оборудование

Терминалы

Программные прерывания

Низший приоритет