Добро пожаловать на наш сайт!

Сайт посвящен компьютерам, софту, программированию и вообще информационным технологиям.

Надеямся Вам у нас понравится.

 
 

Меню сайта

 
Архитектура ОС UNIX

Что произойдет, если несколько процессов будут одновременно вести последовательное считывание данных из одного и того же файла?














Рисунок 5.36. Чтение большой порции данных в маленький буфер

6. Рассмотрим программу, приведенную на Рисунке 5.36. Что произойдет в результате выполнения программы? Обоснуйте ответ. Что произошло бы, если бы объявление массива buf было вставлено между объявлениями двух других массивов размером 1024 элемента каждый? Каким образом ядро устанавливает, что прочитанная порция данных слишком велика для буфера?
*7. В файловой системе BSD разрешается фрагментировать последний блок файла в соответствии со следующими правилами:
• Свободные фрагменты отслеживаются в структурах, подобных суперблоку;
• Ядро не поддерживает пул ранее выделенных свободных фрагментов, а разбивает на фрагменты в случае необходимости свободный блок;
• Ядро может назначать фрагменты блока только для последнего блока в файле;
• Если блок разбит на несколько фрагментов, ядро может назначить их различным файлам;
• Количество фрагментов в блоке не должно превышать величину, фиксированную для данной файловой системы;
• Ядро назначает фрагменты во время выполнения системной функции write.
Разработайте алгоритм, присоединяющий к файлу фрагменты блока. Какие изменения должны быть сделаны в индексе, чтобы позволить использование фрагментов? Какие преимущества с системной точки зрения предоставляет использование фрагментов для тех файлов, которые используют блоки косвенной адресации? Не выгоднее ли было бы назначать фрагменты во время выполнения функции close вместо того, чтобы назначать их при выполнении функции write?
*8. Вернемся к обсуждению, начатому в главе 4 и касающемуся расположения данных в индексе файла. Для того случая, когда индекс имеет размер дискового блока, разработайте алгоритм, по которому остаток данных файла переписывается в индексный блок, если помещается туда.

Hosted by uCoz