Бакалавриат
2020/2021
Операционные системы
Статус:
Курс обязательный (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Кто читает:
Департамент программной инженерии
Где читается:
Факультет компьютерных наук
Когда читается:
2-й курс, 3, 4 модуль
Формат изучения:
без онлайн-курса
Преподаватели:
Карнов Алексей Александрович,
Карпов Владимир Ефимович,
Кричанов Михаил Юрьевич,
Чиликин Дмитрий Сергеевич
Язык:
русский
Кредиты:
4
Контактные часы:
60
Программа дисциплины
Аннотация
В лекционной части курса рассматриваются фундаментальные принципы построения и особенности проектирования современных операционных систем. Теоретическое изложение не привязано к конкретной операционной системе. Практическая часть курса показывает, как изложенные теоретические положения реализуются в операционной системе Linux.
Цель освоения дисциплины
- Освоение студентами знаний в области построения и функционирования современных операционных систем.
- Осмысленное применение полученных знаний при изучении других дисциплин
Планируемые результаты обучения
- Знать историю эволюции вычислительных систем, основные функции, выполняемые современными операционными системами, принципы их внутреннего построения
- Уметь пользоваться командами командного интерпретатора операционной системы Linux
- Знать концепцию процессов в операционных системах
- Уметь порождать новые процессы, запускать новые программы и правильно завершать их функционирование
- Знать логические основы взаимодействия процессов
- Знать концепцию нитей исполнения и их отличие от обычных процессов
- Знать программные алгоритмы организации взаимодействия процессов и предъявляемые к ним требования
- Знать основные механизмы синхронизации в операционных системах и способы их применения для решения задач синхронизации
- Уметь порождать новые нити исполнения и правильно завершать их функционирование
- Уметь организовывать взаимодействие процессов через потоковые средства связи и очереди сообщений
- Уметь использовать семафоры для синхронизации работы процессов и нитей исполнения
- Уметь организовывать корректное взаимодействие процессов через разделяемую память и нитей исполнения через глобальные переменные
- Знать основные алгоритмы планирования процессов
- Знать основные принципы построения памяти в вычислительных системах и простейшие механизмы управления памятью
- Знать организацию управления виртуальной памятью и использующиеся при этом алгоритмы
- Знать понятия файла, файловой системы, операции над ними и основные принципы управления файловыми системами
- Уметь использовать системные вызовы для работы с файловой системой
- Знать организацию управления устройствами ввода-вывода на уровне как технического, так и программного обеспечения, основные функции подсистемы ввода-вывода
- Уметь обрабатывать сигналя, приходящие процессам, использовать сигналы для синхронизации работы процессов
- Знать принципы сетевого взаимодействия вычислительных систем и построения работы сетевых частей операционных систем
- Знать основные проблемы безопасности операционных систем и подходы к их решению
Содержание учебной дисциплины
- Введение в дисциплинуЦели и задачи курса. Понятие о вычислительном комплексе. Системное программное обеспечение и операционные системы. Краткая история эволюции вычислительных систем. Взаимное влияние software и hardware. Автономные, сетевые и распределенные операционные системы. Классификация автономных операционных систем по их назначению и структуре. Знакомство с операционной системой UNIX. Системные вызовы и библиотека libc. Понятия login и password. Упрощенное устройство файловой системы в UNIX. Полные имена файлов. Текущая директория. Относительные имена файлов. Домашняя директория пользователя. Команда man – универсальный справочник. Команды cd и ls. Перенаправление стандартного ввода и стандартного вывода. Простейшие команды работы с файлами – cat, cp, mkdir, mv, rm. Шаблоны имен файлов. Пользователь и группа. Системные вызовы getuid() и getgid(). Команды chown и chgrp. Права доступа к регулярному файлу и к директории. Команда chmod. Маска создания файлов. Команда umask. Редактирование файлов, компиляция и запуск программ.
- Процессы в операционной системеПонятие процесса. Процесс и программа. Состояния процесса. Управляющий блок процесса и его контекст. Операции над процессами. Переключение контекста. Понятие процесса в UNIX, его контекст. Идентификация процесса. Краткая диаграмма состояний процессов в UNIX. Иерархия процессов. Системные вызовы getpid() и getppid(). Создание процесса в UNIX. Системный вызов fork(). Завершение процесса. Функция exit(). Параметры функции main() в языке C. Переменные среды и аргументы командной строки. Изменение пользовательского контекста процесса. Семейство функций для системного вызова exec().
- Кооперация процессовВзаимодействующие и независимые процессы. Категории средств связи. Установление и завершение связи. Прямая и косвенная адресация. Информационная валентность процессов и средств коммуникации. Симплексная, дуплексная и полудуплексная связь. Потоки ввода вывода и сообщения. Буферизация данных. Надежность обмена информацией. Нити исполнения и их отличие от процессов. Interleaving, race condition и взаимоисключе-ния. Условия Бернстайна. Понятие критической секции процесса. Программные алгоритмы организации взаимодействия процессов и предъявляемые к ним требования. Семафоры, мониторы Хора и сообщения, их эквивалентность. Понятие потока ввода-вывода в операционной системе UNIX. Работа с файлами через системные вызовы и через функции стандартной библиотеки. Файловый дескриптор. Наследование файловых дескрипторов при системных вызовах fork() и exec(). Системные вызовы open(), read(), write(), close(). FIFO и pipe. Системные вызовы pipe(), mknod(), функция mkfifo(). Особенности системных потоковых вызовов при работе с FIFO и pipe. Преимущества и недостатки потокового обмена данными. IPC в UNIX. Пространство имен. Адресация в System V IPC. Функция ftok(). Дескрипторы System V IPC. Разделяемая память. Системные вызовы shmget(), shmat(), shmdt(), shmctl(). Команды ipcs и ipcrm. Нить исполнения (thread) в UNIX, ее идентификатор. Функция pthread_self(). Создание и завершение нити исполнения. Функции pthread_create(), pthread_exit(), pthread_join(). Семафоры в UNIX. Отличие операций над UNIX семафорами от классических операций. Системные вызовы semget(), semop(), semctl(). Понятие о POSIX семафорах. Очереди сообщений в UNIX. Системные вызовы msgget(), msgsnd(), msgrcv(), msgctl(). Понятие мультиплексирования. Мультиплексирование сообщений. Модель взаимодействия процессов клиент–сервер. Неравноправность клиента и сервера.
- Планирование процессовУровни планирования процессов. Критерии планирования и требования к алгоритмам планирования. Параметры планирования. Вытесняющее и невытесняющее планирование. Алгоритмы планирования: FCFS, RR, SJF, гарантированное планирование, приоритетное планирование, многоуровневые очереди, многоуровневые очереди с обратной связью.
- Простейшие схемы управления памятьюИерархия памяти. Принцип локальности. Символьное, логическое и физическое адресное пространства памяти. Проблема разрешения адресов. Связывание адресов. Простейшие схемы управления памятью: схема с фиксированными разделами, схема с переменными разделами. Внешняя и внутренняя фрагментации. Проблема размещения больших программ. Сегментная, страничная и сегментно-страничная организации памяти. Таблицы сегментов и страниц.
- Виртуальная памятьОрганизация больших таблиц страниц. Ассоциативная память. Понятие о виртуальной памяти. Исключительные ситуации при работе с памятью. Стратегии управления страничной памятью: выборки, размещения и замещения страниц. Алгоритмы замещения страниц: FIFO, OPT, LRU и другие. Трэшинг (thrashing). Алгоритм границ. Модель рабочего множества.
- Файлы и файловые системыИмена, структура, типы и атрибуты файлов. Операции над файлами. Директории. Операции над директориями. Защита файлов. Методы выделения дискового пространства: непрерывная последовательность блоков, связный список, связный список с индексацией, индексные узлы. Управление свободным и занятым дисковым пространством: битовый вектор, связный список. Разделы носителя информации (partitions) в UNIX. Логическая структура файловой системы и типы файлов в UNIX. Организация файла на диске в UNIX на примере файловой системы s5fs. Понятие индексного узла (inode). Организация директорий (каталогов) в UNIX. Понятие суперблока. Указатель текущей позиции в файле. Системная таблица файлов и таблица индексных узлов открытых файлов. Операции над файлами и директориями. Понятие жестких и мягких связей. Системные вызовы и команды для выполнения операций над файлами и директориями: chmod, chown, chgrp, open(), creat(), read(), write(), close(), stat(), fstat(), lstat(), ftruncate(), lseek(), link(), symlink(), unlink(). Функции для изучения содержимого директорий opendir(), readdir(), rewinddir(), closedir(). Понятие о файлах, отображаемых в память (memory mapped файлах). Системные вызовы mmap(), munmap(). Понятие виртуальной файловой системы. Монтирование файловых систем в UNIX.
- Система управления вводом-выводом.Общие сведения об архитектуре компьютера. Структура контроллера устройства. Опрос устройств и прерывания. Исключительные ситуации и системные вызовы. Прямой доступ к памяти (Direct Memory Access – DMA). Структура системы ввода-вывода. Систематизация внешних устройств и интерфейс между базовой подсистемой ввода-вывода и драйверами. Функции базовой подсистемы ввода-вывода. Блокирующиеся, не блокирующиеся и асинхронные системные вызовы. Буферизация и кэширование. Spooling и захват устройств. Обработка прерываний и ошибок. Планирование запросов. Алгоритмы планирования запросов к жесткому диску: FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK. Блочные и символьные устройства в UNIX. Понятие драйвера. Блочные, символьные драйверы, драйверы низкого уровня. Файловый интерфейс к драйверам. Коммутатор устройств. Старший и младший номер устройства. Понятие сигнала в UNIX. Способы возникновения сигналов и виды их обработки. Понятия группы процессов, сеанса, лидера группы, лидера сеанса, управляющего терминала сеанса, текущей и фоновой групп процессов. Системный вызов kill() и команда kill(). Особенности получения терминальных сигналов текущей и фоновой группой процессов. Получение сигнала SIGHUP процессами при завершении лидера сеанса. Системный вызов signal(). Установка собственного обработчика сигнала. Сигналы SIGUSR1 и SIGUSR2. Использование сигналов для синхронизации процессов. Понятие о надежности сигналов.
- Сети и сетевые операционные системыПричины объединения компьютеров в сети. Сетевые и распределенные операционные системы. Взаимодействие удаленных процессов как основа работы вычислительных сетей. Многоуровневая модель построения сетевых вычислительных систем. Семейства и стеки протоколов. Эталонная модель OSI/ISO. Удаленная адресация и разрешение адресов. Понятие о DNS. Локальная адресация. Понятие порта. Полные адреса. Понятие сокета (socket). Фиксированная, виртуальная и динамическая маршрутизация. Связь с установлением логического соединения и передача данных с помощью сообщений.
- Проблемы безопасности операционных системКлассификация угроз. Формализация подхода к обеспечению информационной безопасности. Классы безопасности. Политика безопасности. Криптография как одна из базовых технологий безопасности ОС. Шифрование с симметричными и ассиметричными ключа-ми. Правило Кирхгофа. Алгоритм RSA. Идентификация и аутентификация. Пароли, уязвимость паролей. Авторизация. Разграничение доступа к объектам ОС. Домены безопасности. Матрица доступа. Недопустимость повторного использования объектов. Аудит, учет использования системы защиты.
Элементы контроля
- Работа на семинаре (Опракт)
- Контрольная работа (Окр)
- Экзамен (Оэкз)Экзамен письменный, совмещен с письменной контрольной за 3-й модуль. Экзамен проходит с прокторингом через Examus в системе Moodle. Студенты получают задание, решают на бумаге, в конце загружают фотографии/сканы решений. Продолжительность экзамена 1.5 астрономических часа (вместе со временем, необходимым для загрузки решений). Во время экзамена разрешено смотреть в условия задач, использовать любые подготовленные рукописные материалы (конспекты лекций, шпаргалки) и писать на листах бумаги, которые были чистыми до начала экзамена. При решении задач категорически запрещается использовать любые печатные тексты, в том числе распечатки презентаций лекций, ксерокопии, фотографии, сканы, сторонние интернет-ресурсы. Допустимо использование простых калькуляторов. Если у студента случилось не более 2-х обрывов связи общей продолжительностью менее пяти минут, он может продолжить написание экзамена (дополнительное время при этом не предоставляется). Если случился большее количество обрывов связи, или их суммарная продолжительность превысит 5 минут, то считается, что студент пропустил экзамен. В этом случае ему выставляется неявка на экзамен, и он пересдает его как при обычной неявке.
Промежуточная аттестация
- Промежуточная аттестация (4 модуль)Оценка Опракт выставляется преподавателем по итогам работы на практических занятиях. Каждая практическая задача при полном правильном и своевременном решении оценивается в определенное количество баллов от 5 до 25. Баллы за полностью правильное решение определяются преподавателями и утверждаются лектором. Процент суммарно набранных баллов за все занятия от максимально возможного количества баллов определяет десятибалльную оценку Опракт за практические знания студента по следующей таблице: отлично (10) - более 88% отлично (9) - от 78% до 88% включительно отлично (8) - от 68% до 78% включительно хорошо (7) - от 58% до 68% включительно хорошо (6) - от 48% до 58% включительно удовлетворительно (5) - от 38% до 48% включительно удовлетворительно (4) - от 28% до 38% включительно неудовлетворительно (3) - от 18% до 28% включительно неудовлетворительно (2) - от 8% до 18% включительно неудовлетворительно (1) - от 0 до 8% включительно неудовлетворительно (0) - нет сданных задач Контрольная работа и письменный экзамен длительностью 2 академических часа состоят из 4-6 контрольных вопросов по теории с различными баллами от 2 до 18 за полностью правильный ответ для каждого вопроса, в зависимости от сложности. Перечень контрольных вопросов для контрольной работы, письменного экзамена и баллы за полностью правильный ответ утверждаются лектором. За каждый контрольный вопрос из контрольной работы и письменного экзамена студент получает от 0 до максимального балла в зависимости от полноты представленного ответа (решения). Критерии проставления баллов утверждаются на заседании учебно-методической комиссии кафедры. Процент суммарно набранных баллов от максимально возможного количества определяет десятибалльные оценки за контрольную работу Окр и за письменный экзамен Оэкз по вышеприведенной таблице. Общая оценка за теоретические знания Отеор выводится как (Окр+Оэкз)/2 - без округления. Окончательная оценка Орез строится как среднее гармоническое между теорией и практикой Орез = 2*Опракт*Отеор/(Опракт+Отеор). При этом, если результирующая оценка лежит в диапазоне от 0 до 4, то округление производится в большую сторону - в пользу студента. Если результирующая оценка лежит в диапазоне от 4 до 10, то округление производится по стандартным математическим правилам - в сторону ближайшего целого.