Архитектура операционной системы UNIX


         

в процессе выполнения программы, представленной


27. Что произойдет в процессе выполнения программы, представленной на ? Поясните свой ответ.
main() { char *endpt; char *sbrk(); int brk();
endpt = sbrk(0); printf("endpt = %ud после sbrk\n", (int) endpt);
while (endpt--) { if (brk(endpt) == -1) { printf("brk с параметром %ud завершилась неудачно\n",endpt); exit(); } } }

Рисунок 7.38
28. Библиотечная подпрограмма malloc увеличивает область данных процесса с помощью функции brk, а подпрограмма free освобождает память, выделенную подпрограммой malloc. Синтаксис вызова подпрограмм: ptr = malloc(size); free(ptr);
где size - целое число без знака, обозначающее количество выделяемых байт памяти, а ptr - символьная ссылка на вновь выделенное пространство. Прежде чем появиться в качестве параметра в вызове подпрограммы free, указатель ptr должен быть возвращен подпрограммой malloc. Выполните эти подпрограммы.
29. Что произойдет в процессе выполнения программы, представленной на ? Сравните результаты выполнения этой программы с результатами, предусмотренными в системном описании.
main() { int i; char *cp; extern char *sbrk();
cp = sbrk(10); for (i = 0; i < 10; i++) *cp++ = 'a' + i; sbrk(-10); cp = sbrk(10); for (i = 0; i < 10; i++) printf("char %d = '%c'\n",i,*cp++); }

Рисунок 7.39. Пример программы, использующей подпрограмму sbrk
30. Каким образом командный процессор shell узнает о том, что файл исполняемый, когда для выполнения команды создает новый процесс? Если файл исполняемый, то как узнать, создан ли он в результате трансляции исходной программы или же представляет собой набор команд языка shell? В каком порядке следует выполнять проверку указанных условий?
31. В командном языке shell символы ">>" используются для направления вывода данных в файл с указанной спецификацией, например, команда: run >>outfile открывает файл с именем "outfile" (а в случае отсутствия файла с таким именем создает его) и записывает в него данные. Напишите программу, в которой используется эта команда.
main() { exit(0); }
<

Содержание  Назад  Вперед