Требуется безопасно и эффективно реализовать монитор с двумя потоками: потоком-поставщиком и потоком-потребителем. Поток-поставщик должен с задержкой в одну секунду инициировать условное событие, о чём должен выводить сообщение на экран. Поток-потребитель должен это условное событие получать, о чём также должен сообщать на экране. В итоге на экране должна появляться серия чередующихся сообщений об отправлении события и его обработке. Сообщения не должны нарушать очерёдность. Ожидание события должно происходить с минимальным потреблением процессорного времени, т. е. быть практически равным нулю. Подразумевается, что условное событие может содержать несериализуемые данные (скажем, передаётся экземпляр класса по указателю).
Требуется подготовить безопасную реализацию серверного процесса,
который совмещает обработку соединений TCP/IP с обработкой сигналов
(можно выбрать, скажем, сигнал SIGHUP
).
Приложение должно:
Фактически, работа сводится к правильному вызову функции pselect()
,
но все действия должны быть выполнены в предельно безопасном виде,
исключающем любые race condition.
Требуется подготовить модуль для загрузки в ядро Linux. Модуль должен:
Makefile
для сборки;*.ko
;insmod
и выгружаться командой rmmod
;dmesg
строку «Welcome to the Tomsk State University»;dmesg
строку «Tomsk State University forever!».Модуль, подготовленный на первой части работы, следует дополнить функционалом,
который позволял бы при своей загрузке создавать файл tsulab
в каталоге /proc
.
Содержимое этого файла будет определяться индивидуальным заданием для каждого учащегося, которое он будет получать при сдаче первой части работы.