• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2019/2020

Операционные системы

Статус: Курс обязательный (Программная инженерия)
Направление: 09.03.04. Программная инженерия
Когда читается: 2-й курс, 3, 4 модуль
Формат изучения: Full time
Язык: русский
Кредиты: 4

Программа дисциплины

Аннотация

В лекционной части курса рассматриваются фундаментальные принципы построения и особенности проектирования современных операционных систем. Теоретическое изложение не привязано к конкретной операционной системе. Практическая часть курса показывает, как изложенные теоретические положения реализуются в операционной системе 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. Идентификация и аутентификация. Пароли, уязвимость паролей. Авторизация. Разграничение доступа к объектам ОС. Домены безопасности. Матрица доступа. Недопустимость повторного использования объектов. Аудит, учет использования системы защиты.
Элементы контроля

Элементы контроля

  • неблокирующий Работа на семинаре (Опракт)
  • неблокирующий Контрольная работа (Окр)
  • неблокирующий Экзамен (Оэкз)
Промежуточная аттестация

Промежуточная аттестация

  • Промежуточная аттестация (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, то округление производится по стандартным математическим правилам - в сторону ближайшего целого.
Список литературы

Список литературы

Рекомендуемая основная литература

  • Основы операционных систем : курс лекций: учеб. пособие для вузов, Карпов В. Е., Коньков К. А., 2019

Рекомендуемая дополнительная литература

  • Операционные системы. Т.1: Основы и принципы, Дейтел Х. М., Дейтел П. Д., 2009
  • Современные операционные системы, Таненбаум Э., 2012