
Языки программирования / Литература по C++ / Лабораторная работа №5 (ОС и СП - 4)
.pdf
Основы многозадачности. Процессы в Linux
Лабораторная работа # 5

1
«Операционные системы и системное программирование» (4 семестр)
ЛАБОРАТОРНАЯ РАБОТА № 5
ОСНОВЫ МНОГОЗАДАЧНОСТИ. ПРОЦЕССЫ В LINUX
Цель работы:
изучить базовые термины и концепции, связанные с многозадачностью;
ознакомиться с основами создания, обработки и управления процессами в рабочей среде Linux;
закрепить навыки создания и управления процессами.
Изучаемые вопросы:
основы многозадачности (multitasking) и мультипрограммирования;
мультипрограммирование в системах пакетной обработки, в системах разделения времени и в системах реального времени;
мультипроцессорная обработка;
понятие процесса, структура процесса, идентификатор процесса, планирование про-
цессов;
диаграмма состояния процесса; время выполнения процесса;
понятие очереди обработки процессов; подходы, используемые для обработки очере-
дей: квантование, приоритет, смешанный;
таблица процессов и их просмотр;
создание и способы запуска новых процессов;
замена и дублирование образа процесса;
ожидание выполнения процесса;
типы процессов: порождающие (родительские), порождѐнные (дочерние) процессы,
процессы-зомби и процессы-демоны;
приоритет процесса.
Постановка задачи:
1) Основное задание (0 – 90 баллов): необходимо написать программу, которая ре-
ализует следующие возможности:
вывод списка выполняемых текущим пользователем процессов, а также про-
цессов, выполняемых другими пользователями и системных процессов (или всех процессов в системе);
® 2011-2012 учебный год. Кафедра <ПОВТ и АС>, ФИТР, БНТУ.

2
«Операционные системы и системное программирование» (4 семестр)
запуск новых процессов (можно свои программы из предыдущих лаборатор-
ных работ) по выбору пользователя и ожидания результата их выполнения;
установка приоритетов для соответствующих запускаемых процессов, а также привязку к процессору для дочерних процессов.
2) Дополнительное задание (91 - 100 баллов): написать программу-фильтр, кото-
рая читает из стандартного ввода и пишет в свой стандартный вывод, выполняя при этом по-
лезное преобразование.
3)Название программы должно быть осмысленным. Все дополнительные функции должны быть вынесены в отдельный файл. Все параметры и файлы передаются программам как аргументы.
4)Должна быть предусмотрена обработка ошибок, которые могут возникнуть в ре-
зультате работы программы.
5)Во время работы программы должны выводить на экран исходные и конечные
данные.
6)Предусмотреть использования различных способов запуска процессов.
7)Для выполнения работы необходимо использовать инструментальные средства
(gcc, gdb, objdump, ...) и среду разработки приложений под Linux. Также разрешается приме-
нить для написания программ интегрированные среды разработки (IDE, рекомендуется
Eclipse, NetBeans, Qt).
8) При написании кода необходимо придерживаться соответствующего стиля разра-
ботки программ на языке программирования C/C++ (см. папку Coding Convention).
Best of luck with it, and remember to HAVE FUN while you’re learning :)
Victor Ivanchenko
® 2011-2012 учебный год. Кафедра <ПОВТ и АС>, ФИТР, БНТУ.