Московский Государственный Университет им.М.В.Ломоносова
Кафедра "Теоретическая информатика"

Рабочая учебная программа

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

Направление -
Специализация -
Шифр учебного плана -
Выпускающая кафедра - Теоретическая информатика
Форма обучения - очная


Часов всего по дисциплине - 72
Дисциплина: обязательная
Цикл дисциплин -
Семестр -

 

Программа составлена: в.н.с, доцент, к.ф.-м.н. Леонов А.Г.
c.н.с., к.ф.-м.н. Борисенко В.В.

Москва 2014

Рабочая учебная программа составлена в соответствии с требованиями Государственного образовательного стандарта РФ (ГОС) по направлению (или специальности) 552800 "Информатика и вычислительная техника".

Всего часов 72
Ауд./С.Р (А/С) 72/36
Лекц. (А/С) 36/
Пр.зан. (А/С) 36/36
Контр.работа(А/С) 4/
Форма контроля экзамен

1. Цель и задачи дисциплины, ее место в учебном процессе

1.1. Цель преподавания дисциплины

Познакомить студентов с основами построения, функционирования и использования современных операционных систем.

1.2. Задачи изучения дисциплины

Изучение основ проектирования, функционирования и использования операционных систем (ОС), их архитектур и применяемых алгоритмов. Знакомство с современными ОС: MS Windows, ОС типа Unix (Free BSDI, Linux), MacOS, ОС реального времени, ОС мобильных устройств (Android, iOS), встраиваемых ОС.

1.3. Перечень тем и разделов предшествующих дисциплин, освоение которых необходимо для изучения данной дисциплины

Базовый курс программирования в объеме не менее 144 часов на языках класса С, С++, С#, Java.

2. Содержание дисциплины

2.1. Наименования разделов и тем, их содержание в развернутом виде, объем в часах лекционных занятий, указания лабораторных, практических занятий, индивидуальных занятий, литературы, ТСО, обучающих и контрольных программ (36 часов).

2.1.1. Устройство компьютера. Процессор, память, внешние устройства, общая шина. Регистры процессора и алгоритм его работы. Стек и его аппаратная реализация. Прерывания: асинхронные и синхронные, механизм обработки прерывания. Таймер. Поддержка многозадачности, виртуальная память. (4 часа.)

2.1.2. Что такое операционная система? Краткая история ОС. Классификация ОС. Серверные операционные системы. Операционные системы для персональных компьютеров. Операционные системы реального времени. Встроенные операционные системы. Мобильные ОС. Требования к ОС. (2 часа.)

2.1.3. Понятия операционной системы. Архитектура ОС. Ядро и вспомогательные модули ОС. Микроядерная ОС. Аппаратная зависимость и переносимость ОС. Графический (оконный) интерфейс. (2 часа.)

2.1.4. Управление памятью. Алгоритмы распределения памяти. Виртуальная память. Сегментно-страничное распределение памяти. (2 часа.)

2.1.5. Процессы и потоки (нити), распараллеливание задач. Планирование процессов и потоков и разделение времени. Синхронизация процессов и потоков. Средства синхронизации: семафоры, события, мьютексы, критические секции. (4 часа.)

2.1.6. Принципы ввода-вывода. Контроллеры устройств. Программный ввод-вывод. Управляемый прерываниями ввод-вывод. Драйверы устройств. (2 часа.)

2.1.7. Файлы. Доступ к файлам. Каталоги. Иерархические файловые системы. (4 часа.)

2.1.8. Взаимодействие (обмен данных) между процессами (IPC). Разделяемая память (shared memory), программные каналы (pipe). Создание детских процессов, функции fork, exec, system, CreateProcess и т.п. (2 часа.)

2.1.9. Компьютерные сети, классификация по размеру, типу передачи, роли узлов в сети. Сети с коммутацией каналов и коммутацией пакетов. Понятие протокола. Уровневая модель протоколов ISO/OSI. Стек протоколов TCP/IP сети Internet: адресация в Internet, система доменных имен и сервис DNS. Наиболее популярные протоколы прикладного уровня. (4 часа.)

2.1.10. Пограммирование сетевых приложений с использованием интерфейса BSDI-сокетов. (4 часа.)

2.1.11. Типы мультипроцессорных операционных систем. Синхронизация и планирование в мультипроцессорах. Многомашинные системы, кластеры. Коммуникационное программное обеспечение. Распределенная память совместного доступа. Распределенные системы. Сетевые службы и протоколы. (2 часа.)

2.1.12. Основы криптографии. Симметричные и асимметричные алгоритмы кодирования. Кодирование с открытым ключом, электронная подпись. Схема RSA кодирования с открытым ключом. Генерация больших простых чисел, вероятностный тест простоты Рабина. Алгоритмы факторизации целых чисел. (4 часа.)

2.2. Практические и семинарские занятия, их содержание и объем в часах (36 часов)

2.2.1. Устройство компьютера. Стек, обратная польская запись, стековый вычислитель. Способы организации памяти в прикладных программах: статическая, стековая, динамическая память. Соглашения о вызовах подпрограмм и функций. Ассемблер. (4 часа.)

2.2.2. Командный язык операционной системы. Командные оболочки в операционных системах Unix и MS Windows. Аргументы командной строки, перенаправление ввода-вывода, выполнение задач в конвейере. Имена файлов, пути к файлам и способы их задания в ОС Unix и MS Windows. Получение информации о текущих процессах, файлах, написание простейших скриптов (bat-файлов). (4 часа.)

2.2.3. Распараллеливание задач с помощью процессов и с помощью нитей. Примеры параллельных программ в Unix и MS Windows. Использование объектов синхронизации - мьютексов, семафоров, событий, примеры программ на C/C++. (6 часов.)

2.2.4. Обнаружение и устранение взаимоблокировок. Задача об обедающих философах. Читатели и писатели. Алгоритм банкира для одного и нескольких видов ресурсов. (4 часа.)

2.2.5. Реализация файловой системы. Структура файловой системы Реализация файлов. Организация дискового пространства. Надежность файловой системы. Файловая система MS-DOS. Файловая система UNIX V7. Файловая система NTFS. (4 часа.)

2.2.6. Шифрование с секретным ключом. Шифрование с открытым ключом, схема RSA. Цифровая подпись. Способы генерации больших простых чисел и алгоритмы факторизации целых чисел. (4 часа.)

2.2.7. Компьютерные сети и сетевое программирование. Стек протоколов TCP/IP сети Internet. Программирование простейших сетевых задач с помощью интерфейса BSDI-сокетов. Пример - реализация простейшего файлового сервера. (6 часов.)

2.2.8. Графический (оконный) интерфейс в операционных системах Unix и MS Windows. Обработка событий, использование объектно-ориентированного интерфейса (обработчики событий как виртуальные методы классов). Языки и библиотеки для поддержки оконного программирования: C++ библиотеки MFC, QT и др., языки Java и C#, примеры программ. Реализация трехмерной графики с помощью библиотеки OpenGL. (4 часа.)

3. Самостоятельная работа

3.1. Проработка конспекта лекций (18 часов)

3.2. Подготовка к практическим занятиям (18 часов)

4. Список вопросов и задач к экзамену. Контрольная работа (коллоквиум)

4.1. Вопросы билетов

  1. Устройство компьютера: процессор, память, общая шина, внешние устройства. Регистры процессора и алгоритм его работы. Стек и его аппаратная реализация. Прерывания, таймер. Способы работы с внешними устройствами. Поддержка многозадачности, виртуальная память.
  2. Серверные операционные системы. Операционные системы для персональных компьютеров. Операционные системы реального времени. Встроенные операционные системы. Мобильные ОС.
  3. Понятия операционной системы. Архитектура ОС. Ядро и вспомогательные модули ОС, графический интерфейс. Микроядерная ОС. Аппаратная зависимость и переносимость ОС.
  4. Планирование процессов и потоков (нитей). Механизм прерываний. Распараллеливание задач с помощью процессов и потоков (нитей).
  5. Синхронизация процессов и потоков (нитей). Объекты синхронизации: семафоры (события), мьютексы, критические секции.
  6. Алгоритмы распределения памяти. Виртуальная память. Страничное распределение памяти.
  7. Принципы ввода-вывода. Программный ввод-вывод. Управляемый прерываниями ввод-вывод. Драйверы устройств.
  8. Файловые системы. Иерархические каталоговые системы.
  9. Мультипроцессорные операционные системы. Многомашинные системы, кластеры.
  10. Компьютерные сети, их классификация. Понятие протокола, уровневая модель описания и реализации протоколов.
  11. Стек сетевых протоколов TCP/IP сети Internet. Адресация в сети Internet и способы установления соединения в протоколе TCP. Интерфейс BSDI-сокетов. Наиболее популярные протоколы прикладного уровня в Internet.
  12. Основы криптографии. Симметричные и асимметричные алгоритмы кодирования. Схема кодирования с открытым ключом RSA. Электронная подпись. Генерация и взлом ключей: алгоритмы нахождения борльших простых чисел и алгоритмы факторизации.
  13. Графический (оконный) интерфейс в ОС типа Unix и MS Windows. Общие принципы разработки графических прикладных программ. Выгоды объектно-ориентированного программирования и использования объектно-ориентированных языков. Основные библиотеки классов для поддержки оконного программирования для языка C++. Наиболее популярные объектно-ориентированные языки. Трехмерная графика и принципы библиотеки OpenGL.

4.2. Список задач

  1. Задача читателей и писателей.
  2. Задача про обедающих философов.
  3. Алгоритм банкира для одного и нескольких видов ресурсов.
  4. Алгоритм управления памятью с помощью битовых массивов.
  5. Алгоритм управления памятью с помощью связных списков.
  6. Алгоритмы замещения страниц.
  7. Алгоритмы шифрования с секретным ключом.
  8. Алгоритм шифрования с открытым ключом RSA.
  9. Принцип построения алгоритма цифровой подписи.
  10. Написание универсального Internet-клиента с использованием интерфейса BSDI-сокетов.
  11. Реализация простейшего файлового сервера и клиента с использованием сетевого протокола TCP и интерфейса сокетов.
  12. Простейшие оконные программы (рисование графика функции, калькулятор, часы).

4.3. Контрольная работа (коллоквиум)

  1. Устройство компютера. Регистры процессора и алгоритм его работы. Аппаратная реализация стека. Прерывания.
  2. Виртуальная память и ее страничная организация.
  3. Файловые системы Unix и MS Windows. Каталоги, относительные и абсолютные пути к файлам. Типы файлов и модификаторы доступа.
  4. Командный интерфейс операционной системы Unix и MS Windows. Запуск и прерывание процессов, получение информации о них. Перенаправление ввода/вывода и исполнение процессов в конвейере.
  5. Процессы и потоки (нити), распараллеливание задач. Способы создания процессов и нитей. Объекты синхронизации: семафоры, мьютексы; критические секции.

5. Учебно-методические материалы по дисциплине

5.1. Обязательная литература

  1. Таненбаум, Эндрю С. Современные операционные системы. 3-е издание - СПб.: Изд. Питер, 2010
  2. Олифер В.Г., Олифер Н.А. Сетевые операционные системы — СПб.: Питер, 2009.

5.2. Рекомендуемая литература

  1. Олифер В.Г., Олифер Н.А. Сетевые операционные системы С-Пб.: Питер, 2009.
  2. Дейтел П.Дж., Дейтел Х.М., Чофнес Д.Р. Операционные системы. Основы и принципы - М.: Бином, 2007.
  3. Робачевский А.М. Операционная система UNIX. - С-Пб: BHV - Санкт-Петербург, 2007.
  4. Таненбаум, Эндрю С. Операционные системы. Разработка и реализация. - СПб. Питер, 2006.
  5. Галатенко В. А. Программирование в стандарте POSIX. Курс лекций; Интернет-университет информационных технологий - Москва, 2004. - 560 c.