Задание для контр. раб._Операцтонные системы

advertisement
Преамбула
Все работы выполняются в UNIX-подобных операционных системах, - Linux, FreeBSD,
MacOS, OpenSolaris, QNX. В случае недоступности таковых, установить самостоятельно на
виртуальную машину Oracle VirtualBox (свободная загрузка с сайта Oracle), выбрать и
скачать дистрибутив ОС можно на сайте www.distrowatch.com.
Необходимые утилиты и компиляторы при необходимости установить дополнительно.
Справки по используемым функциям и утилитам и электронные варианты учебников
прилагаются в архиве.
Выбор варианта — по формуле: остаток от деления на 3 суммы всех цифр номера зачетной
книжки плюс единица .
Задание 1. "ПРОЦЕССЫ И СИГНАЛЫ"
Написать на языке "C" или "C++" программу, создающую древовидное множество процессов. Каждый из созданных процессов должен иметь обработчик сигналов SIGALRM и
SIGUSR1. При получении сигнала SIGALRM процесс должен выводить свой идентификатор pid на экран, при получении сигнала SIGUSR1 процесс должен завершаться и посылать
такой же сигнал своим потомкам. Использовать системные функции fork(), signal() и kill().
Вариант 1.1. «Вымирающие поколнения»
Первый процесс порождает 4 новых, каждый из которых - по 3, их потомки - по 2, а
следующее поколение - только по одному процессу.
Вариант 1.2. «квадрат потомков»
Первый процесс порождает 3 новых, каждый из которых - по одному, их потомки - тоже по
одному, следующее поколение - тоже только по одному процессу, после чего порождения
новых процессов не происходит.
Вариант 1.3. «двоичное дерево»
Первый процесс порождает 2 новых, каждый из которых - по 2, их потомки - по 2, а
следующее поколение процессов не порождает.
Задание 2. "ОБОЛОЧКА bash"
Необходимо написать скрипт на языке оболочки bash.
В этой программе необходимо реализовать выполнение повторяющихся действий над множеством файлов, расположенных в заданном каталоге и во вложенных в него каталогах,
используя рекурсивный обход.
Используемые понятия и знания:
 Основные конструкции языка оболочки.
 Проверка типа файла, проверка успешности завершенной команды,
 Выбор действия по суффиксу файла.
Вариант 2.1. "Распаковка файлов"
Программа должна распаковывать файлы, архивированные без пароля следующими
средствами:
 утилитой tar,- суффиксы файлов: .tar;
 утилитой gzip,- суффиксы файлов: .gz;
 утилитой tar+gzip,- суффиксы файлов: .tar.gz, .tgz;
 утилитой bzip2,- суффиксы файлов: .bz2, bz;
 утилитой tar+bzip2,- суффиксы файлов: .tar.bz2, tbz2, .tbz;
 утилитой zip,- суффиксы файлов: .zip;
 утилитой rar,- суффиксы файлов: .rar;
 утилитой 7z,- суффиксы файлов: .7z, .xz.
При неудаче во время распаковки исходные архивы сохраняются, при успешной
операции - удаляются. Использовать утилиты rar, unzip, bzip2, tar, gzip, 7z.
Вариант 2.2. "Приведение файлов изображений к одинаковому размеру"
Для оформления web-страниц часто требуются изображения фиксированного размера.
Программа должна все графические файлы преобразовать к заданному размеру, скажем,
иметь размер 640x400 пикселей или быть вписанным в прямоугольник такого размера.
Возможные типы входных файлов и их суффиксы:
 формат jpeg, суффиксы,- .jpg, .jpeg
 формат bitmap, суффиксы,- .bmp
 формат gif, суффиксы,- .gif
 формат tiff, суффиксы,- .tiff, .tif
 формат png, суффиксы,- .png
Выходной файл должен быть в формате jpeg,
Использовать утилиту convert из пакета ImageMagick.
Вариант 2.3. "Перекодирование файлов"
Используя для определения кодировки, используемой в файлах утилиту "enca",
выполнить перекодировку всех текстовых (не двоичных!) файлов в UTF-8. Для
перекодирования используется утилита iconv.
Возможные типы входных файлов и их суффиксы:
 текстовой формат, суффиксы,- .lst, .txt;
 формат гипертекстовой разметки, суффиксы,- .htm, .css, .xml;
 формат исходного кода программы, суффиксы,- .pl, .cxx, .c++, .java;
 без суффикса (по выводу enca).
Задание 3. Сетевые утилиты,проверка доступности удаленных компьютеров
Утилита ping позволяет используя протокол ICMP получить сведения о состоянии
удаленного компьютера (хоста), - включен или выключен.
Написать программу (предпочтительно на bash), выполняющую следующее:
прочитав список хостов из файла "hosts.txt", расположенного в домашнем каталоге
пользователя, проверять состояние хостов каждую минуту и отображать их актуальность в
виде таблицы в окне терминала.
Вариант 3.1.
Формат входного файла:
В каждой строке указано имя хоста и через пробел его IP-адрес;
в выходной таблице отображаются только включенные компьютеры.
Вариант 3.2.
Формат входного файла:
В каждой строке указано имя хоста и через пробел его IP-адрес;
в выходной таблице отображаются все компьютеры, включенные выделяются цветом.
Вариант 3.3.
Формат входного файла:
В каждой строке указано имя хоста и через пробел его IP-адрес;
в выходной таблице отображается список всех компьютеров,
рядом с именем каждого ставится знак "+" или "-".
Download