Что такое операционная система

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

Из чего состоит любая вычислительная система? Во-первых, из того, что в англоязычных странах принято называть словом hardware, или техническое обеспечение: процессор, память, монитор, дисковые устройства и т.д., объединенные магистральным соединением, которое называется шиной. Некоторые сведения об архитектуре компьютера имеются в приложении 1 к настоящей лекции. Во-вторых, вычислительная система состоит из программного обеспечения. Все программное обеспечение принято делить на две части: прикладное и системное. К прикладному программному обеспечению, как правило, относятся разнообразные банковские и прочие бизнес-программы, игры, текстовые процессоры и т. п. Под системным программным обеспечением обычно понимают программы, способствующие функционированию и разработке прикладных программ. Надо сказать, что деление на прикладное и системное программное обеспечение является отчасти условным и зависит от того, кто осуществляет такое деление. Так, обычный пользователь, неискушенный в программировании, может считать Microsoft Word системной программой, а, с точки зрения программиста, это – приложение. Компилятор языка Си для обычного программиста – системная программа, а для системного – прикладная. Несмотря на эту нечеткую грань, данную ситуацию можно отобразить в виде последовательности слоев (см. рис. 1.1), выделив отдельно наиболее общую часть системного программного обеспечения – операционную систему: 

Рис. 1.1. Слои программного обеспечения компьютерной системы

Что такое ОС

Большинство пользователей имеет опыт эксплуатации операционных систем, но тем не менее они затруднятся дать этому понятию точное определение. Давайте кратко рассмотрим основные точки зрения.

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

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

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

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

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

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

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

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

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

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

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

 <...развитие ос и компьютеров пропущено...>

 

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

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

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

 

Шесть основных функций, которые выполняли классические операционные системы в процессе эволюции:

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

 

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

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

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

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

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

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

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

Прерывания

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

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

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

Файлы

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

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

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

Концепция процесса в ОС одна из наиболее фундаментальных. Процессы подробно рассмотрены в лек-
циях 2–7. Там же описаны нити, или легковесные процессы.

 

 

http://paramax.susu.ru/study/OS.pdf

Категории: 

Метки: