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

Вид материалаПрограмма

Содержание


Подходы к определению ОС
Операционная система как менеджер ресурсов
Операционная система как менеджер пользователей
Операционная система как постоянно функционирующее ядро
Эволюция вычислительных систем.
2 поколение – 1955-начало 60-х
3 поколение – начало 60-х – 1980.
Подсистемы POsIX
Эмуляция подсистем окружения.
Исполнительная система.
Объекты ядра
Загрузкаи завершение работы системы
Гибернация системы.
Нулевой этап.
Второй этап.
Четвертый этап.
Пятый этап.
Шестой этап.
Прерывания и исключения.
Диспетчеризация прерываний.
...
Полное содержание
Подобный материал:
  1   2   3   4   5



Это было давно…


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

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

вычислительная система состоит из:
  • Процессор – основное вычислительное устройство
  • Память
  • Материнская плата, обеспечивающая основные интерфейсы системы
  • Графический адаптер, обеспечивающий визуальный интерфейс пользователя
  • Адаптер питания
  • Периферийные устройства

Периферийные устройства:
  • Устройства ввода-вывода
  • Устройства долговременного хранения информации
  • Интерфейсно-коммуникационные устройства

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

Операционная система является основным системным программным обеспечением вычислительной системы.

Подходы к определению ОС

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

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

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

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

Для обеспечения разделения данных и ресурсов используются следующие механихмы:

Сопоставление учетной записи пользователя профиля пользователя в windows и домашнего каталога пользователя в Unix-системах.

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

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

Эволюция вычислительных систем.

1 поколение – 1945-55гг.

Машины на базе электронных ламп. В середине 40гг. были созданы первые ламповые вычислительные устройства.

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

Машины первого уровня приводили к огромным эксплуатационным расходам и были крайне ненадежными.
2 поколение – 1955-начало 60-х

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

Основная элементная база – интегральные схемы.

В начале 60-х происходит переход от отдельных полупроводниковых элементов типа транзисторов к интегральным микросхемам, представляющим собой совокупность полупроводников и проводников на одной печатной плате. Переход к интегральным схемам, как и в своем время – к транзисторам, обеспечил очередной виток роста надежности и производительности <…>


27.02.09


2 пара


Подсистемы POsIX

Posix расшифровывается как «переносимый интерфейс операционной системы на основе UNIX». Это совокупностьмеждународных стандартовна операционные системы типа UNIX. Созданных для переносимости приложений между различными версиями операционных систем. Подсистема POSIX отвечает за трансляцию вызова приложений в системные вызовы.

Эмуляция подсистем окружения.

Для обеспечения возможности запуска приложений для другой операционной системы используется эмуляции его(ее) систем и окружения. В Windowsпо умолчанию входит поддержкабазовой подсистемы POSIX.Для обеспечения работы приложений с графическим интерфейсом и(или) расширенными возможностями используется отдельный продукт. Например: Службы Windowsдля приложений UNIX.

В Unixподобных операционных системах для запуска приложений Windowsиспользуется эмулятор WINEи его аналоги.

Исполнительная система.

В состав исполнительной системы входят:

  1. Экспортируемые системные вызовы(доступные из пользовательского режима).



  1. Функции драйверов устройств режима ядра



  1. Экспортируемые функции режима ядра



  1. Диспетчер конфигураций(отвечающий за управление конфигурационной информацией).



  1. Диспетчер процессовых потоков.



  1. Монитор состояния защиты



  1. Диспетчер ввода-вывода.



  1. Диспетчер электропитания.



  1. Диспетчер Plug And Play.



  1. Диспетчер кэша.



  1. Диспетчер памяти.



  1. Средства логической предвыборки.



  1. Диспетчер объектов



  1. Механизм локального вызова процедур.



Ядро - это основа любой операционной системы предоставляющая фундаментальные механизмы, которые используются компонентами исполнительной системы и низкоуровневой аппаратно-зависимыми средствами аппаратной поддержки. Ход ядра в современных версиях Windowsи UniXнаписан на Си с использованием ассемблерных вставок.


Объекты ядра


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


6.03.10


Windows management instrumentations(WMI)


Состоит из 4 компонентов:

  1. Управляющие приложения(Это Windowsприложения получающие сведения о управляемых объектах для последующей обработки или вывода.)
  2. Инфраструктуры WMI. Центральное место, которой занимает диспетчер объектов, который связывает управляющие приложения и провайдеры. Так же инфраструктура служит хранилищем классов объектов и свойств.
  3. Репозитарий объектов – это база данных реализующая хранилище. Для взаимодействия приложения с WMIиспользуются провайдеры представляющие объекты и интерфейсы к ним провайдерам.
  4. Пространство имен. Классы определяют свойства объектов являющимися экземплярами классов в системе. Для иерархического упорядочиванияWMIиспользует пространство имен с подпространствами. Для доступа к объектам управляющее приложение должно подключиться к пространству имен. Помимо предопределенных пространств провайдеры могут определять свои собственные пространства. Корневое пространство называется ROOTи допускает только один уровень вложений. Защита WMIреализуется на уровне пространства имен. Если приложение подключилось к подпространству – оно получает доступ ко всем объектам и их свойствам. Для подключения от имени другого пользователя используется механизм олицетворения. Для выполнения обращений к объектам WMIиспользуется собственный язык запросов WQL.



Загрузкаи завершение работы системы


Процесс загрузки операционных систем начинается еще при установке системы (при подготовке дисковой подсистемы). Наибольшее распространение получил сейчас формат дисковой системы MPT(MasterPartitionTable). В этом случае диск разбивается на дискретные области(разделы). В процессе форматирования разделы преобразуются в тона. На диске может быть до 4-х разделов. Для обхода этого окончания существует особый тип разделов: «Дополнительный», в котором возможно создание подразделов. Физические данные на диске размещаются в секторах, которые логически организованны в кластеры для уменьшения размера служебной области с файловой системой. Ключевым сектором жесткого диска является «нулевой сектор», содержащий основную загрузочную запись, в которой располагается первичный загрузочный код и таблица разделов.


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


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

=====================================================================

Загрузочным устройством может быть:
  1. Жесткий диск
  2. Сменный носитель
  3. PXE-устройство(сетевая карта).

Замечание: Флешка не выделяется как отдельное устройство, т.к. при загрузке системы с нее она интерпретируется как жесткий диск.

=====================================================================

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

=====================================================================

Основные загрузчики системы:


В Windows системах: NTLD

Начиная с Vista: Bootmgr


Unixсистемах: xnex

GRUB

LiLo

=====================================================================

Загрузчик начинает работув реальном режиме x86. В этом режиме не осуществляется трансляция адресов и доступен только первый мегабайт памяти. Поэтому одна из основных свойств загрузчика: «переключить систему в защищенный режим», обеспечив тем самым доступ ко всей физической памяти. После инициализации базовых структур и создании таблиц страниц включается поддержка подкачки страниц. После этого выполняется замена кода базового ввода вывода осуществляющего доступ к дискам и видеоадаптерам на собственном и считывается конфигурационная информация загрузчика. Если установлено для загрузки несколько операционных систем – выводится соответствующее меню. После выбора системы для загрузки загрузчик находит базовые файлы систем и запускает их на выполнение.Система считывает с базовой системы ввода-вывода информацию о ключевом оборудовании, а так же собственную конфигурационную информацию из реестра и конфигурационных файлов. Далее выполняется задействование(использование) аппаратных разрешений процессора и выполняется загрузка уровня абстрагирования от оборудования и ядра операционной системы. Загружаясь ядро выполняет свою инициализацию создавая объекты ядра и запуская исполнительную систему. Исполнительная система запускает диспетчер сервиса и процесс входа в систему, переходя в ожидание интерактивного входа. Уже в этот момент система предоставляет сетевые сервисы. При входе «Пользователя» загружается его профиль, запускается оболочка и программы из списка его «автозапуска». На этом загрузка системы считается полностью завершенной.

Если «Пользователь» или процесс инициирует завершение работы системы – исполнительная система получает соответствующее уведомление. Исполнительная система в свою очередь, в интересах инициатора завершения, посылает сообщение процессу входа в систему и ожидает от него подтверждения. После получения подтверждения завершаются все процессы в сеансе «интерактивного пользователя» посредством отправки им сообщений о завершении. Если процесс не завершился до истечении «timeout’а» пользователю предлагается принудительно завершить процесс или отменить завершение.После этого начинается процесс завершения всех остальных задач. Если в системе имеются другие интерактивные пользователи – выводится запрос о принудительном завершении их сеансов. В итоге записываются все данные, очищаются все буферы и структуры данных, а управление передается диспетчеру электропитания, который отключает питание и перезагружает систему(или переводит ее в ждущий режим).


Гибернация системы.


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


Процессы


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

  1. Нулевой этап.Инициализация процесса создания посредством вызова функции создания процессов.
  2. Первый этап.Открытиеобраза подлежащего выполнению. На этом этапе выполняется поиск исполнимого образа, проверка политик безопасности и определение подсистемы окружения соответствующей образу.

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

13.03.2010

  1. Третий этап. Создание первичного потока, его стека и контекста. С начала третьего этапа объект процесс исполнительной системы полностью инициализирован. Для создания потока предварительно создается стек и контекст, в котором он будет выполняться. Размер стека берется из образа. Далее создается первичный поток. Для этого увеличивается счетчик потоков в объекте процессов, генерируется идентификатор потоков, создаются структуры данных и маркеры доступа, генерируется сообщение уведомляющее о новом потоке.
  2. Четвертый этап. Уведомление системы и окружения о новом процессе. Подсистеме окружения посылается сообщение содержащие описатели процесса и потока, флаги создания, идентификатор родительского процесса, другие флаги. После получения этого сообщения подсистема окружения генерирует структуры данных необходимые для поддержки процесса.
  3. Пятый этап. Запуск первичного потока. К началу этого этапа определено окружение процесса, выделены ресурсы, создан поток, и подсистема окружения уведомлена о существовании процесса. На этом этапе возобновляется выполнение первичного процесса потока.
  4. Шестой этап. Инициализация в контексте нового процесса. На этом этапе происходит задание уровня обработки запросов на прерывание.



Устройство потоков.


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


Прерывания и исключения.


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

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

Диспетчеризация прерываний.


Устройства, выполняемые на основе прерываний, позволяют операционной системе максимально полно использовать процессор, совмещая основную обработку с обслуживанием ввода-вывода. Закончив ввод-вывод, устройство генерирует прерывание и переключается на обслуживание этого устройства. Системное программное обеспечение тоже может генерировать прерывания. Ядро способно отключать прерывания, но делается это только в критические моменты. Для обработки программных прерываний ядро устанавливает обработчики ловушек прерываний, которые передают управление внешней процедуре обслуживания прерываний или внутренней процедуре ядра. Драйверы устройств предоставляют процедуре обслуживания прерываний для своих устройств, а ядро внутренней процедуры для обработки других типов прерываний. На аппаратной платформе прерывания связанные с внешним вводом-выводом поступают по одной из линий контролера прерываний. Контролер связан с процессором единственной линией, по которой уведомляет о прерывании. Как только процессор прерывается, он посылает запрос прерыванию. Контролер транслирует запрос прерывания, номер прерывания , используемый как индекс структуре, называемый таблицей диспетчеризации прерываний, и передает управление соответствующей процедуре. Операционная система заносит в таблицу диспетчеризации прерываний указатели на процедуры ядра, обрабатывающие каждое прерывание и исключение, а также сопоставляет аппаратные запросы прерываний с номерами в таблице диспетчеризации. У каждого процессора имеется своя таблица диспетчеризации прерываний. В большинстве систем применяются либо программируемый контроль прерываний, либо его усовершенствованная модификация. Программируемый контроль прерываний работает только в однопроцессорных системах и имеет 15 линий прерываний. Его усовершенствованная модификация поддерживает многопроцессорные системы и 256 линий прерывания. Для обеспечения совместимости усовершенствованный контролер поддерживает режим совместимости.

Хотя контролеры прерываний различают уровни приоритетных прерываний, операционная система использует свою схему приоритетов прерываний, получившую название «Уровни запросов прерываний». Ядром определяется стандартный набор уровней для программных прерываний, а уровень абстрагирования от оборудования связывает с номерами аппаратных прерываний. Прерывания обслуживаются в порядке их приоритета прерывания с более высоким приоритетом вытесняют обработку прерываний с меньшим приоритетом. При возникновении прерывания с высоким приоритетом процессор сохраняет информацию о состоянии прерванного потока и активизирует связанный с прерыванием диспетчер ловушки, который повышает уровень запросов прерываний и вызывает процедуру обслуживания прерываний. После выполнения процедуры обслуживания прерываний уровень запроса прерывания понижается до исходного уровня, и загружаются сохраненные данные о состоянии машины. Прерванный поток возобновляется с той точки, где он был прерван. При понижении уровня запросов прерывания могут выполниться прерывания с более низким приоритетом. Уровень запроса прерывания каждого процессора меняется во время выполнения команд операционной системы. Значение уровня определяет, какие прерывания может получать данный процесс. Прерывания от источника с уровнем выше текущего вытесняют выполняющийся поток. В прерывания с меньшим приоритетом маскируются до понижения уровня (т.е. скрываются). Поскольку доступ к контролеру прерываний достаточно медленная процедура – используется механизм оптимизации отложенного уровня запроса прерываний. Вместо изменений маски прерываний операционная система просто отмечает новый уровень. Если прерывание с более низким уровнем все-таки возникло, то устанавливается маска контролера, происходит стандартная обработка. Если прерывание с более низким уровнем не возникло, обращения к контролеру не будет. Поток режима ядра повышает и понижает уровень процессора, на котором оно выполняется в зависимости от того, что делает поток. Обработчик ловушек или прерываний повышает уровень процессора до уровня источника прерывания. Системные компоненты и ядро выдерживают низкий уровень. Проблема высоких уровней прерываний заключается в том, что низкоприоритетное прерывание маскируется и при злоупотреблении более высоким уровнем никогда не будет выполнено. Т.к. изменение в уровне существенно влияют на работу системы, оно возможны только в режиме ядра.