Задание 1. "MBR - табблица разделов"
Выполнить анализ таблицы разделов, расположенной в первом секторе  на жестком диске Вашего компьютера (основная загрузочная запись, MBR).
Написать на языке программирования (на Ваш выбор) программу, выполняющую следующие действияЖ
1. считывающую первsй сектор диска или 512 байтов из файла, содержащего образ MBR.
  использовать вместо чения непосредственно с винчестера чтение из прилагаемых файлов
  mbr001, mbr002 и т.д. 
2. переместить курсор файла в позицию 1BE(шестнадцатеричное значение)
3. четырежды выполнить считывание элементов записи о первичных разделах диска
4. вывести значения индикатора загрузки, индикатора системы, начальный блок м размер каждого первичного раздела
   Значения кодов системного индикатора можно взять из прилагаемого файла  "SYSTEMS".
5. Привести текст программы с комментариями и ее вывод для каждого из прилагаемых файлов.

Ответить на следующие вопросы:
 каков размер указателя (курсора) файла в Вашей ОС
 Каков максимальный размер жесткого диска, на котором MBR позволит использовать всю емкость носителя?
 Чем определяется этот максимальный размер?
 Когда использование таблиц GPT не оправдано?
 
Задание 2. "Плоская файловая система"

Разработать модель плоской файловой системы (без вложенных каталогов), в которой все файлы располагаются
только в смежных блоках на диске.
Сделать программную реализацию операций:
1 - создание файлов (односимвольная команда m с параметрами)

m filename size fillpattern, где size- размер в блоках, fillpattern- шаблон заполнения файла.
Примеры выполнения команды:
m file1 1000 1
m file2 34 0
m file3 12 100

2 - удаление файла (односимвольная команда d с единственным параметром - именем файла.
Пример использования:
d file2
3 - вывод оглавления файловой системы (однобуквенная команда l без параметров).
Пример использования:
l
вывод оглавления файловой системы
file1       0 1000
file2    1000   34
file3    1034   12
<EMPTY>  1034 9000

после операции "d file2"

file1       0 1000
<EMPTY>  1000   34
file3    1034   12
<EMPTY>  1034 9000

Рассмотерть возможность реализации двух стратегий планирования вновь создаваемого файла:
А) с выбором места размещения в наибольшем свободном участке диска.
Б) с выбором первого подошедшего по размеру участка.


Задание 3. "Процессы и простое межпроцессное взаимодействие"
1. Написать программу, порождающую заданное в качестве параметра в командной строке количество
своих копий (N), каждая из которых порождает N-1 процесс-копий, и так далее. После порождения копий программа
переходит в бесконечный цикл ожидания сигналов (например, при помощи цикла for (;;); ).
Программа должна содержать обработчики сигналов SIGALRM и SIGUSR1 согласно описанию управляющей программы (см. далее).
2. Написать прогамму, управляющую созданным множеством процессов при помощи посылки им сигналов при помощи
односимвольных команд:
l xxx ,- вывести список процессов, порожденных процессом с pid xxx, включая всех наследников процесса, для этого
каждый процесс содержит обработчик сигнала SIGALRM, реализующий алгоритм:
SIGALRM - вывести на консоль свой pid и послать SIGALRM дочерним процессам
k xxx ,- завершить все процессы-наследники процесса с pid xxx, для чего процессу с pid=xxx посылается
сигнал SIGUSR1, а каждый из процессов содержит обработчик сигнала SIGUSR1, реализующий алгоритм:
SIGUSR1 - послать SIGUSR1 дочерним процессам, вывести на консоль сообщение о завершении работы с указанием своего pid,
дождаться при помощи wait завршения дочерних процессов, вызвать exit для завршения.
3. Привести текст обеих программ
4. Ответить на следующие вопросы
 Сколько процессов входит в порожденное множество
 Каково максимальное число, которое можно передать в качестве параметра корневой программе в Вашей ОС?
 Какой командой оболочки bash можно завршить сразу все порожденные процессы?

Источники и вспомогательные материалы:
Задание 1.
  файлы mbr001,mbr002, mbr003, mbr004, - образы загрузочных записей.
  файл SYSTEMS - значения системного индикатора для разных типов раздела
  
Задание 2
 man - справочная информация по командам оболочки и функциям языка (open, read, write, lseek).
 Терренс Чан. Системное программирование на C++ для UNIX. BHV, Киев, 1997 г.(или любое издание).
 
Задание 3
 Терренс Чан. Системное программирование на C++ для UNIX. BHV, Киев, 1997 г.(или любое издание).





