Операционная система Linux. Докторов А.Е. - 13 стр.

UptoLike

Составители: 

mount /dev/hda5 /usr
содержимое файловой системы, лежащей на разделе, которому соответст-
вует файлдырка, становится доступно в виде дерева, растущего из ката-
лога /usr. Если до монтирования, в /usr были какието файлы и подкатало-
ги, принадлежащие корневой файловой системе, они становятся недос-
тупны до выполнения соответствующей команды umount. Все устройства,
файловые системы которых могут быть смонтированы, в виде файла
дырки можно увидеть в каталоге /dev, например, для устройства CDROM
это будет /dev/cdrom. Точки монтирования, то есть каталоги, в которые
будут монтироваться файловые системы, расположены в каталоге /mnt,
например, /mnt/cdrom. Список всех файловых систем, которые монтиру-
ются по ходу начальной загрузки, обычно лежит в файле /etc/fstab. Обра-
тите внимание в этом файле на тип каждой из файловых систем. Напри-
мер, содержимое файла fstab может выглядеть так.
Помимо дисковых файловых систем (hda могут быть разделами од-
ного и того же диска) здесь можно встретить файловые системы в памяти
(временные sys или proc представление структуры процессов в виде
дерева каталогов). Некоторые устройства (например, CDROM) помечены
noauto в знак того, что при старте их монтировать не надо. Запись в fstab
служит только напоминанием, какое именно устройство какой точке
монтирования соответствует.
В командной строке проведите монтирование устройств. Найдите,
куда монтируется devx_301.sfs.
12
программы мы указываем ее полное имя с путем от корневого каталога
/bin/cat (аргумент с индексом 0). Первое слово в командной строке должно
совпадать с именем запускаемой программы. Второе слово в командной
строке это имя файла, содержимое которого распечатывается. */
(void) execle("/bin/cat", "/bin/cat", "l.c", 0, envp);
/* Это сообщение печатается только при возникновении ошибки */
printf("Error on program start\n ");
exit(l);
return 0;
}
Задание: модифицируйте программу, созданную при выполнении
задания, использующую вызов fork() с разным поведением процессов ре-
бенка и родителя, так, чтобы порожденный процесс запускал на исполне-
ние новую (любую) программу.
4. Межпроцессное взаимодействие через канал pipe.
Наиболее простым способом для передачи информации с помощью
потоковой модели между различными процессами или даже внутри одно-
го процесса в операционной системе UNIX является pipe (канал, труба,
конвейер). Pipe имеет и другое название именованный канал. Прочитан-
ная информация немедленно из него удаляется и не может быть прочитана
повторно. Pipe представляет собой область памяти, недоступную пользо-
вательским процессам напрямую. Она зачастую организована в виде
кольцевого буфера (хотя существуют и другие виды организации). По бу-
феру при операциях чтения и записи перемещаются два указателя, соот-
ветствующие входному и выходному потокам. При этом выходной указа-
тель никогда не может перегнать входной и наоборот. Для создания ново-
го экземпляра такого кольцевого буфера внутри операционной системы
используется системный вызов pipe(). Прототип системного вызова
#include <unistd.h>
int pipe(int *fd);
29