- •Что такое операционная система Структура вычислительной системы
- •Что такое ос
- •Операционная система как виртуальная машина
- •Операционная система как менеджер ресурсов
- •Операционная система как защитник пользователей и программ
- •Операционная система как постоянно функционирующее ядро
- •Краткая история эволюции вычислительных систем
- •Первый период (1945–1955 гг.). Ламповые машины. Операционных систем нет
- •Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы
- •Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ос
- •Четвертый период (с 1980 г. По настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы
- •Основные понятия, концепции ос
- •Системные вызовы
- •Прерывания
- •Исключительные ситуации
- •Процессы, нити
- •Архитектурные особенности ос
- •Монолитное ядро
- •Многоуровневые системы (Layered systems)
- •Виртуальные машины
- •Микроядерная архитектура
- •Смешанные системы
- •Классификация ос
- •Реализация многозадачности
- •Поддержка многопользовательского режима
- •Многопроцессорная обработка
- •Системы реального времени
- •Заключение
- •Приложение 1. Некоторые сведения об архитектуре компьютера
- •Взаимодействие с периферийными устройствами
- •2. Лекция: Процессы
- •Понятие процесса
- •Состояния процесса
- •Операции над процессами и связанные с ними понятия Набор операций
- •Process Control Block и контекст процесса
- •Одноразовые операции
- •Многоразовые операции
- •Переключение контекста
- •Заключение
- •3. Лекция: Планирование процессов
- •Уровни планирования
- •Критерии планирования и требования к алгоритмам
- •Параметры планирования
- •Вытесняющее и невытесняющее планирование
- •Алгоритмы планирования
- •First-Come, First-Served (fcfs)
- •Round Robin (rr)
- •Shortest-Job-First (sjf)
- •Гарантированное планирование
- •Приоритетное планирование
- •Многоуровневые очереди (Multilevel Queue)
- •Многоуровневые очереди с обратной связью (Multilevel Feedback Queue)
- •Заключение
- •4. Лекция: Кооперация процессов и основные аспекты ее логической организации
- •Взаимодействующие процессы
- •Категории средств обмена информацией
- •Логическая организация механизма передачи информации
- •Как устанавливается связь?
- •Информационная валентность процессов и средств связи
- •Особенности передачи информации с помощью линий связи
- •Буферизация
- •Поток ввода/вывода и сообщения
- •Надежность средств связи
- •Как завершается связь?
- •Нити исполнения
- •Заключение
- •5. Лекция: Алгоритмы синхронизации
- •Interleaving, race condition и взаимоисключения
- •Критическая секция
- •Программные алгоритмы организации взаимодействия процессов Требования, предъявляемые к алгоритмам
- •Запрет прерываний
- •Переменная-замок
- •Строгое чередование
- •Флаги готовности
- •Алгоритм Петерсона
- •Алгоритм булочной (Bakery algorithm)
- •Аппаратная поддержка взаимоисключений
- •Команда Test-and-Set (проверить и присвоить 1)
- •Команда Swap (обменять значения)
- •Заключение
- •6. Лекция: Механизмы синхронизации
- •Семафоры
- •Концепция семафоров
- •Решение проблемы producer-consumer с помощью семафоров
- •Мониторы
- •Сообщения
- •Эквивалентность семафоров, мониторов и сообщений
- •Реализация мониторов и передачи сообщений с помощью семафоров
- •Реализация семафоров и передачи сообщений с помощью мониторов
- •Реализация семафоров и мониторов с помощью очередей сообщений
- •Заключение
- •7. Лекция: Тупики Введение
- •Условия возникновения тупиков
- •Основные направления борьбы с тупиками
- •Игнорирование проблемы тупиков
- •Способы предотвращения тупиков
- •Способы предотвращения тупиков путем тщательного распределения ресурсов. Алгоритм банкира
- •Предотвращение тупиков за счет нарушения условий возникновения тупиков
- •Нарушение условия взаимоисключения
- •Нарушение условия ожидания дополнительных ресурсов
- •Нарушение принципа отсутствия перераспределения
- •Hарушение условия кругового ожидания
- •Обнаружение тупиков
- •Восстановление после тупиков
- •Заключение
- •8. Лекция: Организация памяти компьютера. Простейшие схемы управления памятью Введение
- •Физическая организация памяти компьютера
- •Локальность
- •Логическая память
- •Связывание адресов
- •Функции системы управления памятью
- •Простейшие схемы управления памятью
- •Один процесс в памяти
- •Оверлейная структура
- •Динамическое распределение. Свопинг
- •Страничная память
- •Сегментная и сегментно-страничная организация памяти
- •Заключение
- •9. Лекция: Виртуальная память. Архитектурные средства поддержки виртуальной памяти
- •Понятие виртуальной памяти
- •Архитектурные средства поддержки виртуальной памяти
- •Страничная виртуальная память
- •Сегментно-страничная организации виртуальной памяти
- •Структура таблицы страниц
- •Ассоциативная память
- •Инвертированная таблица страниц
- •Размер страницы
- •Заключение
- •10. Лекция: Аппаратно-независимый уровень управления виртуальной памятью
- •Исключительные ситуации при работе с памятью
- •Стратегии управления страничной памятью
- •Алгоритмы замещения страниц
- •Алгоритм fifo. Выталкивание первой пришедшей страницы
- •Аномалия Билэди (Belady)
- •Оптимальный алгоритм (opt)
- •Выталкивание дольше всего не использовавшейся страницы. Алгоритм lru
- •Выталкивание редко используемой страницы. Алгоритм nfu
- •Другие алгоритмы
- •Управление количеством страниц, выделенным процессу. Модель рабочего множества
- •Трешинг (Thrashing)
- •Модель рабочего множества
- •Страничные демоны
- •Программная поддержка сегментной модели памяти процесса
- •Отдельные аспекты функционирования менеджера памяти
- •Заключение
- •11. Лекция: Файлы с точки зрения пользователя Введение
- •Общие сведения о файлах Имена файлов
- •Типы файлов
- •Атрибуты файлов
- •Организация файлов и доступ к ним
- •Последовательный файл
- •Файл прямого доступа
- •Другие формы организации файлов
- •Операции над файлами
- •Директории. Логическая структура файлового архива
- •Разделы диска. Организация доступа к архиву файлов.
- •Операции над директориями
- •Защита файлов
- •Контроль доступа к файлам
- •Списки прав доступа
- •Заключение
- •12. Лекция: Реализация файловой системы
- •Общая структура файловой системы
- •Управление внешней памятью
- •Методы выделения дискового пространства
- •Выделение непрерывной последовательностью блоков
- •Связный список
- •Индексные узлы
- •Управление свободным и занятым дисковым пространством
- •Учет при помощи организации битового вектора
- •Учет при помощи организации связного списка
- •Размер блока
- •Структура файловой системы на диске
- •Монтирование файловых систем
- •Связывание файлов
- •Кооперация процессов при работе с файлами
- •Примеры разрешения коллизий и тупиковых ситуаций
- •Hадежность файловой системы
- •Целостность файловой системы
- •Порядок выполнения операций
- •Журнализация
- •Проверка целостности файловой системы при помощи утилит
- •Управление "плохими" блоками
- •Производительность файловой системы
- •Кэширование
- •Оптимальное размещение информации на диске
- •Реализация некоторых операций над файлами
- •Системные вызовы, работающие с символическим именем файла Системные вызовы, связывающие pathname с дескриптором файла
- •Связывание файла
- •Удаление файла
- •Системные вызовы, работающие с файловым дескриптором
- •Функции ввода-вывода из файла
- •Современные архитектуры файловых систем
- •Заключение
- •13. Лекция: Система управления вводом-выводом
- •Физические принципы организации ввода-вывода
- •Общие сведения об архитектуре компьютера
- •Структура контроллера устройства
- •Опрос устройств и прерывания. Исключительные ситуации и системные вызовы
- •Прямой доступ к памяти (Direct Memory Access – dma)
- •Логические принципы организации ввода-вывода
- •Структура системы ввода-вывода
- •Систематизация внешних устройств и интерфейс между базовой подсистемой ввода-вывода и драйверами
- •Функции базовой подсистемы ввода-вывода
- •Блокирующиеся, неблокирующиеся и асинхронные системные вызовы
- •Буферизация и кэширование
- •Spooling и захват устройств
- •Обработка прерываний и ошибок
- •Планирование запросов
- •Алгоритмы планирования запросов к жесткому диску
- •Строение жесткого диска и параметры планирования
- •Алгоритм First Come First Served (fcfs)
- •Алгоритм Short Seek Time First (sstf)
- •Алгоритмы сканирования (scan, c-scan, look, c-look)
- •Заключение
- •14. Лекция: Сети и сетевые операционные системы
- •Для чего компьютеры объединяют в сети
- •Сетевые и распределенные операционные системы
- •Взаимодействие удаленных процессов как основа работы вычислительных сетей
- •Основные вопросы логической организации передачи информации между удаленными процессами
- •Понятие протокола
- •Многоуровневая модель построения сетевых вычислительных систем
- •Проблемы адресации в сети
- •Одноуровневые адреса
- •Двухуровневые адреса
- •Удаленная адресация и разрешение адресов
- •Локальная адресация. Понятие порта
- •Полные адреса. Понятие сокета (socket)
- •Проблемы маршрутизации в сетях
- •Связь с установлением логического соединения и передача данных с помощью сообщений
- •Синхронизация удаленных процессов
- •Заключение
- •15. Лекция: Основные понятия информационной безопасности Введение
- •Угрозы безопасности
- •Формализация подхода к обеспечению информационной безопасности
- •Криптография как одна из базовых технологий безопасности ос
- •Шифрование с использованием алгоритма rsa
- •Теорема Эйлера
- •Заключение
- •16. Лекция: Защитные механизмы операционных систем
- •Идентификация и аутентификация
- •Пароли, уязвимость паролей
- •Шифрование пароля
- •Авторизация. Разграничение доступа к объектам ос
- •Домены безопасности
- •Матрица доступа
- •Список прав доступа. Access control list
- •Мандаты возможностей. Capability list
- •Другие способы контроля доступа
- •Смена домена
- •Недопустимость повторного использования объектов
- •Выявление вторжений. Аудит системы защиты
- •Анализ некоторых популярных ос с точки зрения их защищенности
- •NetWare, IntranetWare
- •Windows nt/2000/xp
- •Заключение
- •Список литературы
Основные вопросы логической организации передачи информации между удаленными процессами
К числу наиболее фундаментальных вопросов, связанных с логической организацией взаимодействия удаленных процессов, можно отнести следующие:
Как нужно соединять между собой различные вычислительные системы физическими линиями связи для организации взаимодействия удаленных процессов? Какими критериями при этом следует пользоваться?
Как избежать возникновения race condition при передаче информации различными вычислительными системами после их подключения к общей линии связи? Какие алгоритмы могут при этом применяться?
Какие виды интерфейсов могут быть предоставлены пользователю операционными системами для передачи информации по сети? Какие существуют модели взаимодействия удаленных процессов? Как процессы, работающие под управлением различных по своему строению операционных систем, могут общаться друг с другом?
Какие существуют подходы к организации адресации удаленных процессов? Насколько они эффективны?
Как организуется доставка информации от компьютера-отправителя к компьютеру-получателю через компьютеры-посредники? Как выбирается маршрут для передачи данных в случае разветвленной сетевой структуры, когда существует не один вариант следования пакетов данных через компьютеры-посредники?
Разумеется, степень важности этих вопросов во многом зависит от того, с какой точки зрения мы рассматриваем взаимодействие удаленных процессов. Системного программиста, в первую очередь, интересуют интерфейсы, предоставляемые операционными системами. Сетевого администратора больше будут занимать вопросы адресации процессов и выбора маршрута доставки данных. Проектировщика сетей в организации – способы соединения компьютеров и обеспечения корректного использования разделяемых сетевых ресурсов. Мы изучаем особенности строения и функционирования частей операционных систем, ответственных завзаимодействие удаленных процессов, а поэтому рассматриваемый перечень вопросов существенно сокращается.
Выбор способа соединения участников сетевого взаимодействия физическими линиями связи (количество и тип прокладываемых коммуникаций, какие именно устройства и как они будут соединять,т. е. топология сети) определяется проектировщиками сетей исходя из имеющихся средств, требуемой производительности и надежности взаимодействия. Все это не имеет отношения к функционированию операционных систем, является внешним по отношению к ним и в нашем курсе рассматриваться не будет.
В современных сетевых вычислительных комплексах решение вопросов организации взаимоисключений при использовании общей линии связи, как правило, также находится вне компетенции операционных систем и вынесено на физический уровеньорганизации взаимодействия. Ответственность за корректное использование коммуникаций возлагается на сетевые адаптеры, поэтому подобные проблемы мы тоже рассматривать не будем.
Из приведенного перечня мы с вами подробнее остановимся на решении вопросов, приведенных в пунктах 3–5.
Понятие протокола
Для описания происходящего в автономной операционной системе в лекции 2 было введено основополагающее понятие "процесс", на котором, по сути дела, базируется весь наш курс. Для того чтобы описать взаимодействие удаленных процессови понять, какие функции и как должны выполнять дополнительные частисетевых операционных систем, отвечающих за такое взаимодействие, нам понадобится не менее фундаментальное понятие –протокол.
"Общение" локальных процессовнапоминает общение людей, проживающих в одном городе. Если взаимодействующие процессы находятся под управлением различных операционных систем, то эта ситуация подобна общению людей, проживающих в разных городах и, возможно, в разных странах.
Каким образом два человека, находящиеся в разных городах, а тем более странах, могут обмениваться информацией? Для этого им обычно приходится прибегать к услугам соответствующих служб связи. При этом между службами связи различных городов (государств) должны быть заключены определенные соглашения, позволяющие корректно организовывать такой обмен. Если речь идет, например, о почтовых отправлениях, то в первую очередь необходимо договориться о том, что может представлять собой почтовое отправление, какой вид оно может иметь. Некоторые племена индейцев для передачи информации пользовались узелковыми письмами – поясами, к которым крепились веревочки с различным числом и формой узелков. Если бы такое письмо попало в современный почтовый ящик, то, пожалуй, ни одно отделение связи не догадалось бы, что это – письмо, и пояс был бы выброшен как ненужный хлам. Помимо формы представления информации необходима договоренность о том, какой служебной информацией должно снабжаться почтовое отправление (адрес получателя, срочность доставки, способ пересылки: поездом, авиацией, с помощью курьера и т. п.) и в каком формате она должна быть представлена. Адреса, например, в России и в США принято записывать по-разному. В России мы начинаем адрес со страны, далее указывается город, улица и квартира. В США все наоборот: сначала указывается квартира, затем улица и т. д. Конечно, даже при неправильной записи адреса письмо, скорее всего, дойдет до получателя, но можно себе представить растерянность почтальона, пытающегося разгадать, что это за страна или город – "кв.162"? Как видим, доставка почтового отправления из одного города (страны) в другой требует целого ряда соглашений между почтовыми ведомствами этих городов (стран).
Аналогичная ситуация возникает и при общении удаленных процессов, работающих под управлением разных операционных систем. Здесь процессы играют роль людей, проживающих в разных городах, а сетевые части операционных систем – роль соответствующих служб связи. Для того чтобыудаленные процессымогли обмениваться данными, необходимо, чтобы сетевые части операционных систем руководствовались определенными соглашениями, или, как принято говорить, поддерживали определенныепротоколы. Термин"протокол"уже встречался нам в лекции 13, посвященной организации ввода-вывода в операционных системах, при обсуждении понятия "шина". Мы говорили, что понятие шины подразумевает не только набор проводников, но и набор жестко заданныхпротоколов, определяющий перечень сообщений, который может быть передан с помощью электрических сигналов по этим проводникам, т. е. в"протокол"мы вкладывали практически тот же смысл. В следующем разделе мы попытаемся дать более формализованное определение этого термина.
Необходимо отметить, что и локальные процессыпри общении также должны руководствоваться определенными соглашениями или поддерживать определенныепротоколы. Только в автономных операционных системах они несколько завуалированы. В роли такихпротоколоввыступают специальная последовательность системных вызовов при организации взаимодействия процессов и соглашения о параметрах системных вызовов.
Различные способы решения проблем 3–5, поднятых в предыдущем разделе, по существу, представляют собой различные соглашения, которых должны придерживаться сетевые части операционных систем, т. е. различные сетевые протоколы. Именно наличиесетевых протоколовпозволяет организоватьвзаимодействие удаленных процессов.
При рассмотрении перечисленных выше проблем необходимо учитывать, с какими сетями мы имеем дело.
В литературе принято говорить о локальныхвычислительных сетях(LAN – Local Area Network)иглобальныхвычислительных сетях(WAN – Wide Area Network). Строгого определения этим понятиям обычно не дается, а принадлежность сети к тому или иному типу часто определяется взаимным расположением вычислительных комплексов, объединенных в сеть. Так, например, в большинстве работ к локальным сетям относят сети, состоящие из компьютеров одной организации, размещенные в пределах одного или нескольких зданий, а к глобальным сетям – сети, охватывающие все компьютеры в нескольких городах и более. Зачастую вводится дополнительный термин для описания сетей промежуточного масштаба –муниципальныхилигородскихвычислительных сетей(MAN – Metropolitan Area Network)– сетей, объединяющих компьютеры различных организаций в пределах одного города или одного городского района. Таким образом, упрощенно можно рассматривать глобальные сети как сети, состоящие из локальных и муниципальных сетей. А муниципальные сети, в свою очередь, могут состоять из нескольких локальных сетей. На самом деле деление сетей на локальные, глобальные и муниципальные обычно связано не столько с местоположением и принадлежностью вычислительных систем, соединенных сетью, сколько с различными подходами, применяемыми для решения поставленных вопросов в рамках той или иной сети, – с различными используемымипротоколами.