1.                  СТРУКТУРА КУРСА

1.1.            Лекции: 2 час у/л и 6 час

1.2.            Лабораторные работы: 12 час

1.3.            Контрольная работа

1.4.            Зачет

 

2.                  СОДЕРЖАНИЕ ДИСЦИПЛИНЫ

2.1.            Лекционные занятия, их содержание.

2.1.1.   Установочная лекция. Перечень изучаемых тем:

2.1.1.1.        Операционные системы и среды. Понятие операционной системы (ОС). Понятия вычислительного процесса и ресурса. Диаграмма состояний процесса. Реализация понятия последовательного процесса в ОС. Процессы и потоки.

2.1.1.2.        Управление задачами и памятью в ОС. Планирование и диспетчеризация процессов и задач. Стратегии планирования. Дисциплины диспетчеризации. Диспетчеризация задач с использованием динамических приоритетов.

2.1.1.3.        Архитектура ОС и интерфейсы прикладного программирования (API). Интерфейс прикладного программирования. Примеры программирования в различных API ОС.

2.1.1.4.        Программирование в Linux. Компиляторы и библиотеки. Функции вызова порожденных процессов fork, execl, получения их идентификаторов getpid, управления их приоритетами getpriority, setpriority, ожидания их завершения waitpid, принудительного их завершения kill, получения возвращаемых значений WEXITSTATUS.

2.1.1.5.        Средства межпроцессной коммуникации (IPC) в Unix (SysV). Взаимные исключения и условные переменные. Блокировки чтения - записи. Семафоры. Почтовые ящики. Очереди сообщений.

2.1.2.   Архитектура ОС и интерфейсы прикладного программирования (API). Интерфейс прикладного программирования. Примеры программирования в различных API ОС. (2 час.)

2.1.3.   Программирование в Linux. Компиляторы и библиотеки. Многозадачное программирование. Функции вызова порожденных процессов fork, execl, получения их идентификаторов getpid, управления их приоритетами getpriority, setpriority, ожидания их завершения waitpid, принудительного их завершения kill, получения возвращаемых значений WEXITSTATUS. (2 час.)

2.1.4.   Многопоточное программирование и средства межпоточной коммуникации Unix (SysV). Взаимные исключения и условные переменные. (2 час.)

 

2.2.            Лабораторные занятия, их содержание.

2.2.1.   Многозадачное и многопоточное программирование в Windows. (Выполняется в виде контрольной работы)

2.2.1.1. В соответствии с вариантом задания написать и отладить программу, реализующую порожденный процесс:

Задание 1. Подсчет количества вхождений указанного символа во всех файлах текущего каталога. Обработка файла - в порожденном процессе (потоке).

Задание 2. Поиск указанной строки в указанном файле. Обработка одной строки - в порожденном процессе (потоке).

Задание 3. Умножение матрицы на вектор. Обработка одной строки матрицы - в порожденном процессе (потоке).

Задание 4. Свертка сигнала с импульсной характеристикой фильтра. Обработка одного отсчета сигнала - в порожденном процессе (потоке).

Задание 5. Поиск пары простых чисел p и q (отличающихся на 2 порядка) для заданного порядка n=p*q. Поиск каждого из них - в порожденном процессе (потоке).

Задание 6. Выбор открытого ключа RSA для заданной пары простых чисел p и q из нескольких диапазонов. Обработка каждого диапазона - в порожденном процессе (потоке).

Задание 7. Разложение на простые множители p и q заданного числа n перебором простых чисел в нескольких диапазонах. Обработка каждого диапазона - в порожденном процессе (потоке).

Задание 8. Подбор подстановочного кода при заданном зашифрованном и открытом сообщении. Проверка каждого варианта подстановки - в порожденном процессе (потоке).

Задание 9. Warcraft. Заданное количество юнитов добывают золото равными порциями из одной шахты, задерживаясь в пути на случайное время, до ее истощения. Работа каждого юнита - в порожденном процессе (потоке).

Задание 10.   Винни-Пух и пчелы. Заданное количество пчел добывают мед равными порциями, задерживаясь в пути на случайное время. Винни-Пух потребляет мед порциями заданной величины за заданное время и столько же времени может прожить без питания. Работа каждой пчелы - в порожденном процессе (потоке).

2.2.1.2. Написать и отладить программу, реализующую родительский процесс, вызывающий и отслеживающий состояние порожденных процессов (ждущий их завершения или уничтожающий их, в зависимости от варианта).

2.2.1.3. Написать и отладить программу, реализующую родительский процесс, вызывающий и отслеживающий состояние порожденных потоков (ждущий их завершения или уничтожающий их, в зависимости от варианта).

2.2.2.   Ознакомление с операционной системой, со структурой файловой системы и основными командами работы с файлами и каталогами ОС Unix/Linux.

2.2.2.1. Ознакомиться с процедурами входа в систему, выполнения основных команд, получения подсказки, создания и редактирования текстовых файлов. Освоить работу с файловым менеджером Midnight Commander.

2.2.2.2. Создать структуру каталогов, соответствующую варианту индивидуального задания. Черными линиями представлена вложенность файлов/подкаталогов в каталоги. Синими линиями представлены ссылки. Красными линиями - символические ссылки. Стрелка на красной линии указывает на целевой файл ссылки.

Вариант 1.

Вариант 6.

Вариант 2.

Вариант 7.

Вариант 3.

Вариант 8.

Вариант 4.

Вариант 9.

Вариант 5.

Вариант 10.

2.2.2.3. Изучить команды изменения прав доступа и владения chmod и chown.

2.2.2.4. Изучить работу и ключи команды ps - получения сведений о процессах в операционной системе.

2.2.3.   Многозадачное программирование в Linux.

2.2.3.1. Ознакомиться с опциями компилятора gcc, методикой отладки программ.

2.2.3.2. Для вариантов заданий из лабораторной работы №1 написать и отладить программу, реализующую порожденный процесс.

2.2.3.3. Для вариантов заданий из лабораторной работы №1 написать и отладить программу, реализующую родительский процесс, вызывающий и отслеживающий состояние порожденных процессов (ждущий их завершения или уничтожающий их, в зависимости от варианта).

2.2.3.4. Для вариантов заданий из лабораторной работы №1 написать и отладить программу, реализующую родительский процесс, вызывающий и отслеживающий (синхронизирующий через файлы) состояние порожденных процессов - функций (ждущий их завершения или уничтожающий их, в зависимости от варианта).

2.2.4.   Многопоточное программирование в Linux.

2.2.4.1. Для вариантов заданий из лабораторной работы №1 написать и отладить программу, реализующую родительский процесс, вызывающий и отслеживающий состояние порожденных потоков (ждущий их завершения или уничтожающий их, в зависимости от варианта).

2.2.4.2. Организовать управление потоками и их синхронизацию через глобальные переменные с использованием мьютексов.

 

 

3.                  УЧЕБНО-МЕТОДИЧЕСКИЕ МАТЕРИАЛЫ ПО ДИСЦИПЛИНЕ

3.1.            Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. - СПб.: Питер, 2002. – 736 с.

3.2.            Кейлингерт П. Элементы операционных систем. Введение для пользователей /Пер. с англ. - М.: Мир, 1985. - 295 с.

3.3.            Олифер Н.А., Олифер В.Г. Сетевые операционные системы. - СПб.: Питер, 2001.- 560 с.

3.4.            Эпплман Д. Windows API и Visual Basic. - М: «Русская редакция», 1999. –926 с.

3.5.            Робачевский А.М. Операционная система UNIX. - СПб.: BHV, 1997. - 528 с.

3.6.            Стахнов А.А. Операционная система LINUX. - СПб.: BHV, 2002. - 528 с.

3.7.            ОС QNX: Обзор системы. -  http://www.swd.ru/qnx/support/literature/sysarch/index.html

3.8.            QNX Realtime Platform Русский Портал. - http://qnx.org.ru/

3.9.            Эндрюс Г. Р. Основы многопоточного, параллельного и распределенного программирования. - М.: Вильямс, 2003. - 512 с.

3.10.        Хоар Ч. Взаимодействующие последовательные процессы. - М.: Мир, 1989. - 264 с.

3.11.        Стивенс У. UNIX: взаимодействие процессов. - СПб.: Питер, 2002. - 264 с.

3.12.        Материалы по дисциплине «Системное программное обеспечение. - http://gun.cs.nstu.ru/ssw

 

4.                  КОНТРОЛИРУЮЩИЕ МАТЕРИАЛЫ

4.1.            Вопросы к зачету по дисциплине.

 

1.     Системное программное обеспечение – состав и назначение

2.     Операционная система – определение и основные функции

3.     Понятие операционной среды

4.     Понятия вычислительного процесса и ресурса

5.     Состояния процесса

6.     Реализация последовательного процесса в ОС

7.     Процессы и потоки

8.     Понятие управления задачами. Стратегии планирования

9.     Дисциплины диспетчеризации. Понятие и классификация

10. Основные дисциплины диспетчеризации

11. Вытесняющие и не вытесняющие алгоритмы диспетчеризации

12. Качество диспетчеризации и гарантии обслуживания

13. Диспетчеризация задач с использованием динамических приоритетов

14. Основные принципы построения операционных систем

15. Микроядерные и монолитные операционные системы

16. Требования, предъявляемые к ОС реального времени

17. Принципы построения интерфейсов операционных систем

18. Интерфейс прикладного программирования

19. Реализация функций API на разных уровнях

20. Платформенно-независимый интерфейс POSIX

21. Основные понятия системы UNIX: виртуальная машина, пользователь, суперпользователь

1.     Основные понятия системы UNIX: оболочки, процессы

2.     Функционирование системы UNIX: Выполнение процессов, Подсистема ввода/вывода, Перенаправление ввода/вывода

3.     Функционирование системы UNIX: Структура файловой системы

4.     Функционирование системы UNIX: Защита файлов

5.     Межпроцессные коммуникации в UNIX: Сигналы, Семафоры

6.     Межпроцессные коммуникации в UNIX: Программные каналы, Очереди сообщений

7.     Межпроцессные коммуникации в UNIX: Разделяемая память, Вызовы удаленных процедур (RPC)

8.     Особенности ОС Linux

9.     Программирование в Linux: статус процессов, ветвление процессов

10. Программирование в Linux: синхронизация процессов функциями wait и waitpid

11. Программирование в Linux: запуск функций и программ

12. Программирование в Linux: управление приоритетами и уничтожение процессов

13. Программирование в Linux: создание и ожидание потоков

14. Программирование в Linux: Завершение потока, особенности главного потока

15. Программирование в Linux: Жизненный цикл потока

16. Программирование в Linux: Атрибуты потоков

17. Взаимные исключения: установка и снятие блокировки

18. Взаимные исключения: Блокировка и ожидание

19. Условные переменные: ожидание и сигнализация

20. Условные переменные: время ожидания и широковещательная передача

21. Атрибуты взаимных исключений и условных переменных

22. Получение и сброс блокировки чтения-записи

23. System V IPC: Ключи типа key_t, функция ftok, Структура ipc_perm

24. System V IPC: Создание и открытие каналов IPC

25. System V IPC: Разрешения IPC

26. System V IPC: Повторное использование идентификаторов

27. Семафоры System V IPC: создание и инициализация

28. Семафоры System V IPC: управление

29. Семафоры System V IPC: использование