СПО (Корнилов) / Лекции / вар2 / Операционные системы (Корнилов)
.pdfСПО Лекция 1 [23.12.04] |
1 |
Литература:
Г.Дейтел Введение в операционные системы (в 2х томах).-М., Мир, 1987 Д.Рихтер Windows для проффесионалов.-1997
Ал.Вильямс Системное программирование в Windows 2000 для профессионалов.- С-Пб, 2001.-624с. Р. Саймон Windows 2000 API. Энциклопедия программиста.- К.: «ДиаСофт», 2001.-1088с. Г.Н.Соловьев, В.Д.Никитин Операционные системы.-1989
www.cs.berkeley.edu(CS162)
Лекция 1: Введение
9Понятие об ОС.
9Принципы проектирования ОС
9Зачем изучать ОС.
9Обзор тем курса.
Что такое ОС?
Можно определить как программный комплекс, решающий задачи эффективного управления ресурсами ЭВМ и предоставляющий пользователю набор услуг для простого и надежного доступа к ресурсам ЭВМ.
Две основные функции ОС:
1.Эффективное управление ресурсами ЭВМ
2.Предоставление набора услуг, отвечающего требованиям пользователей
Ресурсы ОС:
•Процессор
•Память
•Внешние устройства
•Программы пользователей
Можно определить и так: ОС – это реализация виртуальной машины, которую (есть надежда) проще и надежнее программировать, чем «голое железо».
Прикладная программа
_____________________ Интерфейс виртуальной машины (API)
Операционная система
_____________________ Интерфейс с аппаратурой Аппаратура
Виртуальная машина - это программный эмулятор некоторой другой машины.
•Используется для выполнения программ, написанных для одной платформы, на другой платформе.
•Обеспечивает хорошую переносимость.
СПО Лекция 1 [23.12.04] |
2 |
•Создает новый (более удобный) интерфейс.
Воснове управления ресурсами в современных (мультипрограммных) ОС часто использзуется принцип виртуализации ресурсов путем:
(а) разделения времени (процессор, принтер) (б) создания копий (программы)
(в) подмены реального устройства виртуальным (спулинг)
Что если ОС нет?
-Загрузить абсолютный загрузчик
-Загрузить транслятор
-Считать исходный текст, на выходе объектные модули
-Загрузить редактор связей
-Считать объектные модули, на выходе загрузочный модуль
-Загрузить и выполнить программу, на выходе результаты расчетов в неудобоваримой форме.
Простая ОС (однопрограммная)
Все ресурсы в распоряжении этой единственной программы и, следовательно, нет конфликтов, нет необходимости в защите. Пример: ранние ПК, встроенные контроллеры. ОС сводится к набору драйверов, стандартных библиотек ввода-вывода, стандартных математических библиотек.
Более сложная ОС (многопрограммная)
Обеспечивает разделение процессорного времени между несколькими программами. Должна координировать доступ пользователей к общим ресурсам (процессору, памяти, устройствам). Должна обеспечивать защиту программ друг от друга.
Ключевыми моментами, на которых строится защита, являются :
•Аппаратно поддерживаемое преобразование адресов из виртуального пространства пользователя в физическое адресное пространство
•Разграничение режимов работы (системный/пользовательский)
|
|
|
|
|
|
й |
|
|
|
|
|
ы |
|
|
|
|
|
н |
|
|
|
|
|
|
ь |
|
|
|
|
|
л |
|
|
|
|
|
а |
|
|
|
|
|
|
у |
|
с |
||
|
т |
|
|
|||
р |
|
е |
|
|||
и |
|
|
р |
|
||
В |
|
|
д |
|
|
|
|
|
а |
|
|
|
|
ЦП
Устройство управления памятью
(MMU)
Ф |
|
|
|
|
|
|
и |
|
|
|
|
|
|
з |
|
|
|
|
||
|
и |
|
|
|
|
|
|
|
ч |
|
|
|
|
|
|
|
е |
|
|
|
а |
|
|
с |
|
|
|
|
|
|
к |
|
||
д |
|
|
|
и |
||
|
р |
|
|
|
й |
|
|
|
е |
|
|
|
|
|
|
|
с |
|
|
|
Физическая
память
В простых системах необходимости в разграничении режимов работы нет! Изменение таблиц трансляции выполняется только в защищенном режиме! Ниже приведен пример трансляции адресов.
СПО Лекция 1 [23.12.04] |
|
|
|
|
|
3 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Данные2 |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Стек1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Код |
|
|
|
Код1 |
|
|
Код |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
Данные |
|
|
|
Куча1 |
|
|
Данные |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Куча |
|
|
|
Код2 |
|
|
Куча |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Стек |
|
|
|
Стек2 |
|
|
Стек |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Данные1 |
|
|
Виртуальное |
||
|
|
|
|
|
|
|
|
|
||
|
Виртуальное |
|
|
|
|
|
пространство |
|||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
программы 2 |
||||
|
пространство |
|
Куча2 |
|
|
|
||||
|
|
|
|
|
|
|||||
|
программы 1 |
|
|
|
|
|
|
|
||
|
|
|
|
|
Код ОС |
|
|
|||
ДанныеОС
Куча и стек ОС
Принципы разработки ОС
Принцип простоты решений при проектировании сложных систем
С одной стороны знаем, что программы всегда содержат ошибки, с другой стороны все большее количество работ и решений принимается с использованием ЭВМ, следовательно, должны верить в достоверность получаемых данных.
Make it as simple as possible, but not simpler!
But not simpler
DO 10 I=1,10
. . .
10 CONTINUE
Если допустить такую ошибку: DO 10 I=1.10 , то получим синтаксически правильную, но неверно работающую программу. Причины: (а) объявление переменных по умолчанию, (б) уничтожение пробелов компилятором перед синтаксическим разбором.
Что дает простота решений?
•Надежность
•Простоту сопровождения и дальнейшего развития
•Скорость выполнения
СПО Лекция 1 [23.12.04] |
4 |
•Снижение стоимости
•Расширение рынка сбыта (то, что сложно и непонятно труднее продать)
Что мешает нахождению простых решений?
•«Избыточный IQ», который выражается в решениях, которые мало кто может понять
•Стремление к постоянному улучшению решений. Если решение сложное, то это не всегда хорошо. Сложность решения должна быть адекватной решаемой задаче
•Самореклама: включение в систему функций, которых ни у кого нет. А нужны ли они?
Как добиться простоты?
•Взять за правило критически относиться к сложным решениям
•Задавать себе вопрос: «А можно ли упростить решение?»
•Задавать себе вопрос: «А если убрать эту функцию, то что мы потеряем?»
•Изучать известные решения, анализировать их и находить самые простые пути решения проблем
ОС, ставшие стандартами de facto:
•CP/M -> MS_DOS
•RT-11 -> RSX-11 -> VAX/VMS
•OS360 -> OS370 -> OS/VS
•UNIX
Зачем изучать ОС?
•Аккумулирует в себе основные достижения в области вычислительной техники и программирования и, следовательно, является ценным объектом изучения;
•Выступает в роли посредника между пользователями, запросы и цели которых часто противоречат друг другу;
•Играет роль виртуальной машины, которая скрывает от пользователя сложности управления аппаратурой и предоставляет набор услуг существенно упрощающих общение с ЭВМ;
•Обеспечивает защиту пользователей друг от друга, себя от пользователей и пользователя от самого себя;
•Знание принципов организации ОС полезно пользователям непрофессионалам и необходимо разработчикам сложных программных комплексов.
Обзор тем курса
•Параллельные последовательные процессы. Планирование, синхронизация процессов.
•Управление памятью
•Организация ввода-вывода и файловые системы
•Распределенные ОС. Проблемы и перспективы.
СПО Лекция 1 [23.12.04] |
5 |
Лекция 2: История развития. Структура ОС.
9История развития ОС
9Структура ОС
История развития ОС
Взгляд на произошедшие изменения (1). На примере типичного для университетов США компьютера.
|
1981 |
1999 |
Коэффициент |
Процессор (MHz) |
10 |
600 |
60 |
цикл/команда |
3-4 |
0.5 - 1 |
3-8 |
ОЗУ |
128KB |
256MB |
2000 |
Диск |
10MB |
27GB |
2700 |
Сеть |
9600b/s |
155Mb/s |
15000 |
Разрядность |
16 |
64 |
4 |
Пользователь/компьютер |
10 |
<=1 |
10 |
Цена |
$25000 |
$2000 |
12 |
Взгляд на произошедшие изменения (2). Изменение методов работы.
Распределенность
Несколько |
|
Один пользователь |
Информационные приложения |
пользователей |
|
на компьютер |
|
на компьютер |
|
|
|
|
|
|
|
|
|
|
ПК + Сеть |
|
|
|
Клиент / Сервер
Разделение времени
Несколько компьютеров наодного пользователя
Удаленноевыполнение заданий
Пакетная обработка
Время
Развитие аппаратуры => Новые возможности => Изменение режимов работы, поддерживаемых ОС
Этап 1: Дорогая аппаратура, дешевый труд персонала (1948-1970)
•Компьютеры исключительно дорогие. Цель: загрузить работой.
СПО Лекция 1 [23.12.04] |
6 |
•Типичный режим работы на первых компьютерах – один пользователь работает за пультом ЭВМ. Отсутствует взаимодействие пользователя с программой в процессе ее выполнения. Программирование
вкодах, нет языков программирования. ОС представлена в виде библиотеки стандартных подпрограмм (ввод-вывод, математика). Задачи преимущественно вычислительного характера. Низкая надежность аппаратуры.
•Пакетная обработка заданий (загрузить, выполнить, напечатать результат). Пока человек думает за пультом, машина простаивает. Чтобы лучше использовать оборудование необходимо отдалить пользователя от машины и загружать пакет готовых заданий.
•Ввод с перфокарт
•FORTRAN
•Первые системы пакетной обработки: FMS (Fortran Monitor System) и IBSYS.
Формирование пакета на МЛ с помощью вспомогательной ЭВМ. Перенос ленты на мощную ЭВМ для расчета в пакетном режиме. Распечатка результатов с МЛ на вспомогательной ЭВМ.
•Простой язык управления заданиями $JOB <шифр>
$FORTRAN [колода ПК] $LOAD $RUN [Данные] $END
•Связи пользователя с программой во время выполнения нет
•Время реакции системы велико (часы)
•Новые задачи. Применение ЭВМ в экономической сфере. Задачи символьной обработки.
•Проект IBM создания универсальной серии машин (IBM 360), совместимых снизу вверх. Совместимость должна распространяться и на ОС и на языки (PL/I).
•Совмещение операций ввода-вывода с вычислениями. Спулинг (SPOOL – Simultaneous Peripheral Operation On Line)
•Мультипрограммный режим работы
•Развитый сложный язык управления заданиями
•Преимущества: хорошая загрузка системы, справедливое обслуживание для коротких и длинных задач, совмещение операций ввода-вывода с вычислениями
•Новые проблемы: защита программ друг от друга, совместное использование общих ресурсов.
•Сложность ОС резко возросла:
Multics вместо 1963 реализован в 1969
После выпуска OS360 зафиксировано более 1000 ошибок.
Проектирование ОС стало наукой (не только в области программирования, но и в организации работы больших коллективов разработчиков)
Парадокс? На фоне гигантского проекта OS360 создается UNIX (маленький и работающий!)
Bell Laboratories + General Electric + M.I.T => MULTICS (MULTiplexed Information and Computing Service). Кен Томпсон –
UNICS (UNiplexed Information and Computing Service) + Ритчи + Керниган => C & UNIX
СПО Лекция 1 [23.12.04] |
7 |
Этап 2: Дешевая аппаратура, дорогой труд персонала (1970-1985):
•Аппаратура дешевеет. Цель: создание условий для более эффективной и комфортной работы пользователей. Назначение ОС: эффективное управление ресурсами и предоставление сервиса.
•Расширение сфер применение ЭВМ.
•Системы с разделением времени. Диалоговое взаимодействие пользователя с ЭВМ и с программой во время выполнения. Проблема: деградация производительности системы при увеличении числа пользователей.
•Совершенствование мультипрограммной обработки
•Сокращение времени реакции системы
•Системы реального времени
Этап 3: Очень дешевая аппаратура, очень дорогой труд персонала (1981-):
•Стоимость компьютера $1000, стоимость труда программиста - $100000.
•Ключевое изменение: компьютеры и ПО развиваются для повышения эффективности труда пользователя.
•Персональные ЭВМ. Пройден путь от простых ОС (MS-DOS) к полномасштабным ОС (NT, OS/2).
•Дружественный интерфейс
•Пересмотр основ, суперкомпьютеры, нетрадиционная архитектура, новые языки.
•Сети ЭВМ. Интеграция сетевой поддержки в ОС.
Этап 4: Распределенные системы (1981-):
Отличие от сетевых ОС состоит в средствах распределения ресурсов на сетевом уровне. Ресурсы распределяются таким образом, что пользователь не знает ничего о том на какой машине ему выделен требуемый ресурс.
Резюме
•Развитие технологии => Расширение сфер применения => Изменение ОС вслед за технологическими изменениями.
•Современные ОС – исключительно сложная система. Например, NT разрабатывается с конца 80-х и до сих пор далека от идеала. Важно понять как упростить и повысить надежность создаваемых сложных систем.
Структура ОС
Можно по-разному препарировать ОС, что приводит к различным представлениям об ОС.
Системные компоненты(из чего состоит ОС)
•Управление процессами
•Управление памятью
•Подсистема ввода-вывода
СПО Лекция 1 [23.12.04] |
8 |
•Файловая система
•Поддержка сети
•Пользовательский интерфейс
Можно считать такое деление взглядом снизу. Любая ОС содержит такие структурные компоненты и их рассмотрение позволяет рассмотреть ОС изнутри.
Системные сервисы (что делает ОС)
Ряд сервисов напрямую отображаются на системные компоненты
•Выполнение программ
•Средства ввода-вывода
•Доступ к файлам
•Средства коммуникации
Другие сервисы реализуются всеми или части компонентов ОС
•Обнаружение ошибок и восстановление работоспособности
•Распределение ресурсов
•Учет пользователей и их возможностей
•Защита программ и данных
Это взгляд сверху необходимый любому пользователю. При этом не существенно как соотносятся сервисы и компоненты ОС.
Системные вызовы (что представляет собой API)
Примеры: MS-DOS (int 21), Windows 95/NT (Win32), POSIX.
Такой взгляд необходим программисту, но не дает полной картины того, как работает ОС.
Структура ОС (как связаны компоненты)
•Простая структура (монитор).
Примеры: MS-DOS (вообще нет структуры), ранний UNIX (режим пользователя и режим ядра). Все собрано в один монолитный модуль.
•Иерархическая структура.
Впервые предложен Дейкстрой в ОС THE. Использован в MULTICS Основные принципы:
1.Каждый уровень контролирует ряд структур данных и предоставляет функции доступа к ним
2.Каждый уровень ничего не знает о структуре нижележащих уровней. Доступ к сервисам нижележащих уровней осуществляется через определенный ими интерфейс
3.Каждый уровень ничего не знает о существовании вышележащих уровней.
СПО Лекция 1 [23.12.04] |
9 |
Преимущества:
•Модульность, простота отладки и поддержки
•Возможность замены или модификации слоя. Важным следствие является переносимость за счет выделения машинно-зависимого слоя. (HAL в Windows NT).
•Микроядро и сервисные процессы
Ядро обычно реализует переключение контекста, средства синхронизации и взаимодействия между сервисными процессами работающими на пользовательском уровне.
Преимущества:
•Очень высокий уровень модульности
•Возможность динамической реконфигурации
Лекция 3: Управление процессами (I)
9Последовательный процесс, нить, адресное пространство
9Состояние нити
9Переключение контекста (диспетчеризация)
9Создание процесса и нити.
Понятие о последовательном процессе.
Однопрограммный режим: поведение вычислительной системы однозначно определяется загруженной программой. Простая ОС (MS-DOS). Работа с устройствами производится последовательно, характерны задержки в ожидании завершения ввода-вывода с медленными устройствами.
Мультипрограммный режим: – несколько пользователей, несколько программ, разделяющих процессор и другие устройства.
Существенно, что разделение устройств обеспечивается операционной системой. Например, Windows 3.1 нельзя считать мультипрограммной ОС, так переключение между программами инициируется самими программами в цикле диспетчеризации оконных сообщений. Правильно считать Windows 3.1 операционной оболочкой, кроме того Windows 3.1 не может быть установлена на пустую машину (нужна DOS).
Преимущества мультипрограммного режима:
•увеличение пропускной способности за счет лучшей загрузки устройств.
•возможность совмещать длительные операции (печать) с другой полезной работой.
•новые средства декомпозиции при разработке сложных систем, обрабатывающих различные асинхронные события.
Проблемы мультипрограммного режима:
Резко увеличивает сложность ОС, которая должна решать много новых проблем (разделение ресурсов между программами, защита себя, программ и данных пользователей и т.п.), при этом отдельный пользователь не должен видеть этих проблем (для него должна создаваться иллюзия монопольного владения ресурсами машины)
СПО Лекция 1 [23.12.04] |
10 |
Как увязать множество событий происходящих в системе? Ответ: Разбираться с каждым событием в отдельности.
Каким способом описать поведение управляющей программы ОС?
Ответ: Необходимы новые абстракции, поэтому и введено понятие «последовательный процесс», которое является центральным в ОС.
Определение: Процесс есть абстрактное понятие ОС используемое для обозначения всего того, что необходимо для выполнения программы (UNIX)
Компоненты процесса:
•Последовательно исполняемое множество инструкций (программа). Другое название – поток или нить управления.
•Адресное пространство - данные, характеризующие состояние процесса (значения регистров процессора, содержимое стека, сегменты данных, дескрипторы файлов и т.п.)
Другие определения последовательного процесса:
•Процессом является то, что в IBM называется «задачей», а в Univac – действием.
•Процессом называется асинхронная работа.
•Процесс – это «живая» душа процедуры.
•Процесс – это «концентрация средств управления» для выполнения процедуры.
•Процесс – это объект, которому выделяются процессоры.
•Согласно ГОСТ 19781-83 процесс – это система действий, реализующая определенную функцию в вычислительной системе и оформленная так, что управляющая программа вычислительной системы может перераспределять ресурсы этой системы в целях обеспечения мультипрограммирования.
•Программа в стадии выполнения. (может содержать несколько процессов!)
Программа ?= Процесс
1.Процесс > программа: программа – это лишь часть процесса. Запуск редактора с разными файлами – это разные процессы, а программа одна. Дейкстра: «Программа – это правила поведения»
2.Процесс < программа: одна программа способна в ходе решения задачи породить несколько параллельно выполняемых процессов.
Легкие процессы (threads - нити)
В современных ОС традиционное понятие процесса расширено абстракцией «нить».
Нить (легкий процесс) – это последовательное выполнение потока команд процесса на одном процессоре. Процессорное время делится между нитями!
