2-й курс. Операционные системы. Материалы семинаров и домашнее задание.
ФУПМ
Домашний проект
ФУПМ: проектное домашнее задание 3-го семестра (задача 1). Разбор аргументов командной строки, порождение процессов, замена пользовательского контекста, реализация перенаправления ввода/вывода,
ожидание порождённых процессов, перечисление файлов в директориях, обход директорий, сопоставление с образцом, получение информации о порождённых процессах.
Перед любой попыткой сдачей задания мне, чтобы не терять нашего с вами времени, прошу убедиться, что ваша Microsha удовлетворяет следующим требованиям:
- Скомпилирована с ключами c++ -fsanitize=address -g
- Корректно выполняются следующие команды:
- ls -l
- ls -l *
- ls -l /*
- ls -l /*/*
- ls -l /*/*.h (должна быть диагностика)
- ls -l /usr/include/*.h (кроме MacOS)
- cat > a (вводите abcdef)
- cat < a
- cat < a > b
- ls -lR / | more (после нажатия на q должно быть выдано приглашение)
- ls -lR / (через несколько секунд CTRL/C. Должно быть выдано приглашение)
- cat a | cat | cat | cat | cat
- cat < a | cat | cat | cat | cat | cat > b
- cat < a < b (должна быть диагностика)
- cat > c > d (должна быть диагностика)
- cat < a | cat > b | cat (должна быть диагностика)
- CTRL/D (программа должна аккуратно завершиться)
- команды cd, pwd, time, echo, set
Большая просьба: не пытаться убедить меня в том, что "а у меня всё работает!", если что-то
из вышеперечисленного дало неверный результат.
Ключи компиляции -fsanitize=address и запуск проекта под valgrind для окончательной сдачи обязательны.
Общая оценка за проект определяется как по выполненной работе, так и по качеству исходного кода.
Представьте, что код писался несколькими людьми и попробуйте взглянуть на него со стороны вашего коллеги, которому сказали добавить возможности в вашу программу.
Задачи на multithreading
Задачи 2 и 3 на параллельные вычислительные потоки.
Если вы хорошо напишете задачу 2, то сами этой программой будете пользоваться в будущем, она на параллельный
поиск в множестве файлов некой информации.
Задача 3 — математическое моделирование группы объектов. Много-много потоков (нитей)
и много примитивов синхронизации для их взаимодействия.