Бакалавриат
2024/2025
Операционные системы
Статус:
Курс по выбору (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Кто читает:
Департамент программной инженерии
Где читается:
Факультет компьютерных наук
Когда читается:
2-й курс, 3, 4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Легалов Александр Иванович
Язык:
русский
Кредиты:
5
Программа дисциплины
Аннотация
В лекционной части курса рассматриваются фундаментальные принципы построения и особенности проектирования современных операционных систем. Теоретическое изложение не привязано к конкретной операционной системе. Практическая часть курса показывает, как изложенные теоретические положения реализуются в операционной системе Linux.
Цель освоения дисциплины
- Освоение студентами знаний в области построения и функционирования современных операционных систем.
- Осмысленное применение полученных знаний при изучении других дисциплин
Планируемые результаты обучения
- Знать историю эволюции вычислительных систем, основные функции, выполняемые современными операционными системами, принципы их внутреннего построения
- Знать концепцию нитей исполнения и их отличие от обычных процессов
- Знать концепцию процессов в операционных системах
- Знать логические основы взаимодействия процессов
- Знать организацию управления виртуальной памятью и использующиеся при этом алгоритмы
- Знать организацию управления устройствами ввода-вывода на уровне как технического, так и программного обеспечения, основные функции подсистемы ввода-вывода
- Знать основные алгоритмы планирования процессов
- Знать основные механизмы синхронизации в операционных системах и способы их применения для решения задач синхронизации
- Знать основные принципы построения памяти в вычислительных системах и простейшие механизмы управления памятью
- Знать основные проблемы безопасности операционных систем и подходы к их решению
- Знать понятия файла, файловой системы, операции над ними и основные принципы управления файловыми системами
- Знать принципы сетевого взаимодействия вычислительных систем и построения работы сетевых частей операционных систем
- Знать программные алгоритмы организации взаимодействия процессов и предъявляемые к ним требования
- Уметь использовать семафоры для синхронизации работы процессов и нитей исполнения
- Уметь использовать системные вызовы для работы с файловой системой
- Уметь обрабатывать сигналя, приходящие процессам, использовать сигналы для синхронизации работы процессов
- Уметь организовывать взаимодействие процессов через потоковые средства связи и очереди сообщений
- Уметь организовывать корректное взаимодействие процессов через разделяемую память и нитей исполнения через глобальные переменные
- Уметь пользоваться командами командного интерпретатора операционной системы Linux
- Уметь порождать новые нити исполнения и правильно завершать их функционирование
- Уметь порождать новые процессы, запускать новые программы и правильно завершать их функционирование
Содержание учебной дисциплины
- Введение в дисциплину
- Процессы в операционной системе
- Кооперация процессов
- Планирование процессов
- Простейшие схемы управления памятью
- Виртуальная память
- Файлы и файловые системы
- Система управления вводом-выводом.
- Сети и сетевые операционные системы
- Проблемы безопасности операционных систем
Элементы контроля
- Индивидуальное задание № 1. Применение каналов при обработке строк символовРазработка программы, осуществляющей взаимодействие между процессами посредством каналов.
- Индивидуальное задание №2. Взаимодействие параллельных процессов и их синхронизацияРазработка приложения, осуществляющего взаимодействие и синхронизацию параллельных процессов с использованием семафоров и других базовых синхропримитивов ОС.
- Индивидуальное задание №3. Разработка многопоточного приложения с использованием синхропримитивовСоздание многопоточного приложения, осуществляющего корректное взаимодействие потоков посредством использования методов синхронизации, имеющихся в изучаемой ОС.
- Индивидуальное задание №4. «Сетевые взаимодействия с применением транспортных протоколов TCP и UDPРазработка клиент–серверного приложения, в котором сервер (или серверы) и клиенты обеспечивают совместно решение поставленной задачи используя различные сетевые протоколы и методы их применения.
- Выполнение домашних заданийВыполнение домашних заданий, выдаваемых по материалам, рассмотренным в лекционном курсе и на семинарах.
- Текущая работа на семинарахПосещение семинаров и работа на них.
- Итоговый экзамен по дисциплинеДопуск к итоговому экзамену определяется в соответствии с регламентом, представленным в формуле оценки.
Промежуточная аттестация
- 2024/2025 4th module0.08 * Выполнение домашних заданий + 0.15 * Индивидуальное задание № 1. Применение каналов при обработке строк символов + 0.15 * Индивидуальное задание №2. Взаимодействие параллельных процессов и их синхронизация + 0.15 * Индивидуальное задание №3. Разработка многопоточного приложения с использованием синхропримитивов + 0.15 * Индивидуальное задание №4. «Сетевые взаимодействия с применением транспортных протоколов TCP и UDP + 0.2 * Итоговый экзамен по дисциплине + 0.12 * Текущая работа на семинарах