Лабораторная работа № 5
1. UNIX. Разработать программу, реализующую мониторинг состояния процессов UNIX, включающую следующие функции:
int init(...); // инициализация мониторинга
int display(...); // отображение состояния всех подключенных процессов
int attach(pid_t pid, ...); // подключение нового процесса
int detach(pid_t pid, ...); // отключение процесса
int setstate(pid_t pid, ...); // изменение информации о состоянии процесса
Схема мониторинга является асимметричной и подразумевает наличие выделенного процесса-монитора и остальных процессов, добровольно подключающихся к нему. Подключение к монитору и передача ему информации производится по инициативе самих процессов, подлежащих мониторингу. Функции init() и display() используются процессом-монитором, функции attach(), detach(), setstate() – процессами, подключающимися к монитору. Результат работы каждой функции представить наглядно, например, в виде вывода оповестительной информации.
Ограничения:
реализация схемы мониторинга должна использовать одну область разделяемой памяти размером до 4Kb и не более одного семафора;
каждому процессу, подключающемуся к монитору, выделяется фиксированный участок области разделяемой памяти, в котором сохраняется информация, передаваемая процессами через функции setstate();
максимальное число процессов подлежащих мониторингу – 64;
функция display() отображает информацию из всей области разделяемой памяти, реализация должна допускать использование метода display() как самим процессом-монитором, так и любыми процессами, подключенными к монитору.
2. Ответить на контрольные вопросы:
для чего предназначена функция ftok()? Насколько необходимым является ее применение в программе, использующей механизмы IPC в UNIX?
каким образом определяется адрес, по которому происходит подключение сегмента разделяемой памяти в UNIX?
опишите назначение и алгоритм работы с мьютексами в Windows.
Лабораторная работа № 6
1. UNIX. Разработать программу, осуществляющую взаимодействие с терминалом через специальный файл устройства /dev/tty. Программа должна выполнять следующие операции при нажатии отдельных клавиш:
переключение между каноническим (строковым) и неканоническим (символьным) режимами работы терминала;
очистку экрана
Комбинации клавиш, используемые для выполнения перечисленных операций, должны задаваться в конфигурационном файле программы перед ее запуском или переназначаться во время ее работы.
2. Ответить на контрольные вопросы:
каков алгоритм системного вызова fork() в UNIX?
для чего нужны приоритеты процессов в Windows?
опишите реализацию приоритетов в Windows.
Лабораторная работа № 7
1. X Window. Выполнить компиляцию и запуск программы из примера 5. Для загрузки на сервер использовать исходный bitmap-файл.
2. WINAPI. Создать оконное приложение, имеющее в рабочей области главного окна поле ввода текста (EDIT) и кнопку (BUTTON). В поле ввода вводится строка состоящая только из цифр и знака «+». По нажатию кнопки, например, в окне сообщения (message box) выводится информация о сумме чисел из поля ввода. Таким образом, это будет простейший строчный калькулятор, умеющий только складывать. Если строка не введена или содержит какие-либо символы, отличные от цифр и знака «+» должно появляться окно сообщения с информацией об этом.
3. Ответить на контрольные вопросы:
предложите несколько способов загрузки цветного изображения из файла операционной системы X-клиента в окно на экране X-сервера средствами библиотеки Xlib (UNIX);
какие действия обычно выполняет функция WinMain?
что такое оконная процедура? Для чего она предназначена? Кто ее вызывает в процессе работы приложения? (Windows)
для чего служит цикл обработки сообщений? Откуда приложение извлекает очередное сообщение? Каким образом и кем сообщения создаются? (Windows)