Ответ1: Файловая система zfs (Zettabyte File System)



Скачать 104.13 Kb.
Дата05.09.2014
Размер104.13 Kb.
ТипДокументы
Ответ1:

Файловая система ZFS (Zettabyte File System). Была создана в 2004 году в Sun Microsystems для операционной системы Solaris.

Эта файловая система поддерживает большие объёмы данных, объединяет концепции файловой системы и менеджера логических дисков (томо́в) и физических носителей, инновационную структуру данных на дисках, легковесные файловые системы (lightweight filesystems), а также простое управление томами хранения данных. ZFS является проектом с открытым исходным кодом и лицензируется под CDDL (Common Development and Distribution License).



Основное преимущество ZFS — это её полный контроль над физическими и логическими носителями. Зная, как именно расположены данные на дисках, ZFS способна обеспечить высокую скорость доступа к ним, контроль их целостности, а также минимизацию фрагментации данных. Это позволяет динамически выделять или освобождать дисковое пространство на одном или более носителях для логической файловой системы. Кроме того, имеет место переменный размер блока, что лучшим образом влияет на производительность, параллельность выполнения операций чтения-записи, а также 64-разрядный механизм использования контрольных сумм, сводящий к минимуму вероятность разрушения данных.

Максимальные возможности

ZFS это 128-битная файловая система, что позволяет ей хранить в 18 миллиардов (18.4 × 1018) раз больше данных, чем нынешние 64-битные системы. ZFS спроектирована так, чтобы её ограничения были настолько малы, что они никогда не встретятся на практике. Как заявил руководитель проекта Бонвик, «заполнение 128-битных файловых систем превысит квантовые возможности хранения данных на Земле. Вы не сможете заполнить и хранить 128-битный объём, не вскипятив при этом океан.

»

Некоторые теоретические пределы в ZFS:


  • 248 — Количество снимков (snapshot) в любой файловой системе (2 × 1014)

  • 248 — Количество файлов в любой индивидуальной файловой системе (2 × 1014)

  • 16 эксабайт (264 byte) — Максимальный размер файловой системы

  • 16 эксабайт (264 byte) — Максимальный размер одного файла

  • 16 эксабайт (264 byte) — Максимальный размер любого атрибута

  • 3 × 1023 петабайт — Максимальный размер любого пула хранения (zpool)

  • 256 — Количество атрибутов файла (фактически ограничивается 2 48 на количество файлов в файловой системе ZFS)

  • 256 — Количество файлов в директории (реально ограничен 2 48 на количество файлов в файловой системе ZFS)

  • 264 — Количество устройств в любом zpool

  • 264 — Количество zpool’ов в системе

  • 264 — Число файловых систем в zpool

Пример того, насколько велики эти цифры: если бы 1000 файлов создавались каждую секунду, то потребовалось бы около 9000 лет для достижения предела количества файлов.

Пулы хранения


В отличие от традиционных файловых систем, которые располагаются на одном устройстве и, следовательно, при использовании более чем на одном устройстве для них требуется менеджер томов, ZFS строится поверх виртуальных пулов хранения данных, называемых zpool. Пул построен из виртуальных устройств (vdevs), каждое из которых является либо физическим устройством, либо зеркалом (RAID 1) одного или нескольких устройств, либо (RAID Z) — группой из двух или более устройств. Емкость всех vdevs затем доступна для всех файловых систем в zpool.

Для ограничения пространства, доступного конкретной файловой системе, может быть установлена квота. Кроме того, возможно использование дискового резервирования — это гарантирует, что всегда будет оставаться некоторый доступный объём для конкретной файловой системы.



Ответ2:

Парадигма -- набор теорий, стандартов и методов, которые совместно представляют собой способ организации научного знания, -- иными словами, способ видения мира. По аналогии с этим принято считать, что парадигма в программировании -- способ концептуализации, который определяет, как следует проводить вычисления, и как работа, выполняемая компьютером, должна быть структурирована и организована.

Объектно-ориентированный язык программирования (ОО-язык) — язык, построенный на принципах объектно-ориентированного программирования.

В основе концепции объектно-ориентированного программирования лежит понятие объекта — некоей субстанции, которая объединяет в себе поля (данные) и методы (выполняемые объектом действия).

Например, объект «человек» может иметь поля «имя», «фамилия» и иметь методы «есть» и «спать». Соответственно, мы можем использовать в программе операторы Человек. Имя:="Иван" и Человек. Есть (пища).

В современных ОО языках используются методы:



  • Наследование. Создание нового класса объектов путем добавления новых элементов (методов). В данный момент ОО языки позволяют выполнять множественное наследование, т. е. объединять в одном классе возможности нескольких других классов.

  • Инкапсуляция. Сокрытие деталей реализации, которое (при грамотном использовании) позволяет вносить изменения в части программы безболезненно для других её частей, что существенно упрощает сопровождение и модификацию ПО.

  • Полиморфизм. При полиморфизме некоторые части (методы) родительского класса заменяются новыми, реализующими специфические для данного потомка действия. Таким образом, интерфейс классов остаётся прежним, а реализация методов с одинаковым названием и набором параметров различается. С понятием «Полиморфизм» тесно связано понятие «Позднего связывания».

  • Типизация. Позволяет устранить многие ошибки на момент компиляции, операции проводятся только над объектами подходящего типа.

Функциона́льное программи́рование — раздел дискретной математики и парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании (то есть тех, чей единственный результат работы заключается в возвращаемом значении, или другими словами, вычисление которых не имеет побочного эффекта). Противопоставляется парадигме императивного программирования, в которой исполнителю программы предписывается последовательность выполняемых действий, в то время, как в функциональном программировании способ решения задачи описывается при помощи зависимости функций друг от друга (в том числе возможны рекурсивные зависимости), но без указания последовательности шагов.

На практике отличие математической функции от понятия «функции» в императивном программировании заключается в том, что императивные функции взаимодействуют и изменяют уже определённые данные. Таким образом, в императивном программировании, при вызове одной и той же функции с одинаковыми параметрами можно получить разные данные на выходе, из-за влияния на функцию внешних факторов. А в функциональном языке при вызове функции с одними и теми же аргументами мы всегда получим одинаковый результат в обоих случаях, входные данные не могут измениться, выходные данные зависят только от них

Одной из близких парадигм программирования является логическое программирование, в котором программа представляет собой множество пар (логическое условие, новые факты). В логическом программировании, также как и в функциональном программировании, программист остается в неведении о методах, применяемых при вычислении, и последовательности исполнения элементарных действий. Большая часть ответственности за эффективность вычислений в логическом и функциональном программировании перекладывается на «плечи» транслятора используемого языка программирования.

Функциональное и логическое программирование являют собой части т. н. «декларативного программирования», т. е. такого стиля программирования, при использовании которого в программах описывается способ решения поставленной задачи, а не предписываются шаги для получения результата.

В качестве основных свойств функциональных языков программирования обычно рассматриваются следующие:


  • краткость и простота;

Программы на функциональных языках обычно намного короче и проще, чем те же самые программы на императивных языках.


  • строгая типизация;

В функциональных языках большая часть ошибок может быть исправлена на стадии компиляции, поэтому стадия отладки и общее время разработки программ сокращаются. Вдобавок к этому строгая типизация позволяет компилятору генерировать более эффективный код и тем самым ускорять выполнение программ.

  • модульность;

Механизм модульности позволяет разделять программы на несколько сравнительно независимых частей (модулей) с чётко определёнными связями между ними. Тем самым облегчается процесс проектирования и последующей поддержки больших программных систем. Поддержка модульности не является свойством именно функциональных языков программирования, однако поддерживается большинством таких языков.

  • функции — объекты вычисления;

В функциональных языках (равно как и вообще в языках программирования и математике) функции могут быть переданы другим функциям в качестве аргумента или возвращены в качестве результата. Функции, принимающие функциональные аргументы, называются функциями высших порядков или функционалами.

  • чистота (отсутствие побочных эффектов);

В чистом функциональном программировании оператор присваивания отсутствует, объекты нельзя изменять и уничтожать, можно только создавать новые путем декомпозиции и синтеза существующих. О ненужных объектах позаботится встроенный в язык сборщик мусора. Благодаря этому в чистых функциональных языках все функции свободны от побочных эффектов.

  • отложенные (ленивые) вычисления.

В традиционных языках программирования (например, C++) вызов функции приводит к вычислению всех аргументов. Этот метод вызова функции называется вызов-по-значению. Если какой-либо аргумент не использовался в функции, то результат вычислений пропадает, следовательно, вычисления были произведены впустую. В каком-то смысле противоположностью вызова-по-значению является вызов-по-необходимости (ленивые вычисления). В этом случае аргумент вычисляется, только если он нужен для вычисления результата.

Ответ3:

Оригинальная постановка задачи, предложенная Э. Дийкстрой, звучит следующим

образом. За круглым столом расставлены пять стульев, на каждом из которых сидит определенный философ (Фi) (рис. 2.5). В центре стола - большое блюдо спагетти, а на столе лежат пять вилок (B1..B5) - каждая между двумя соседними тарелками. Каждый философ может находиться только в двух состояниях - либо он размышляет, либо ест спагетти. Начать думать философу ничто не мешает. Но чтобы начать есть, философу нужны две вилки : одна в правой руке, другая в левой. Закончив еду, философ кладет вилки слева и справа от своей тарелки и опять начинает размышлять до тех пор, пока снова не проголодается.

Рис.2.5.Задача об обедающих философах



 

Существует множество различных формулировок данной задачи, в одной из которых философы интерпретируются как процессы, а вилки как ресурсы. Задача "обедающие философы" удобна для изучения тупиковых ситуаций в системах параллельных процессов.

В представленной задаче имеются две опасные ситуации : ситуация голодной смерти и ситуации голодания отдельного философа. Ситуация голодной смерти возникает в случае, когда философы одновременно проголодаются и одновременно попытаются взять, например, свою левую вилку. В данном случае возникает тупиковая ситуация, так как никто из них не может начать есть, не имея второй вилки.

Одним из общих методов избежания тупиков является введение ограничений на число параллельно выполняющихся процессов и ужесточение режима использования ресурсов. Например, тупиковую ситуацию голодной смерти можно избежать, если наложить следующее условие использования вилок - "философу разрешается взять две необходимые для еды вилки в том случае, если они обе свободны". В качестве другого приема, позволяющего избежать данную тупиковую ситуацию, является ограничение числа одновременно сидящих за столом философов (например, до четырех). Для этого, однако, необходимо скорректировать условие задачи и предположить, что стол расположен в столовой, при входе в которую находится швейцар, следящий за числом философов в столовой.

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

Решение задачи "Обедающие философы", использующее семафоры

(предполагается количество философов, равное 5)

#define LEFT (i+4)%5

#define RIGHT (i+1)%5

#define THINKING 0 // Состояния философов

#define HUNGRY 1

#define EATING 2

int State[5]; //Массив состояний философов

Semaphore Access=1; //Управление доступом к критическим данным

Semaphore S[5]={0,0,0,0,0};//Для ожидания освобождения ресурсов

void Philosopher( int i ){ // i – номер философа от 0 до 4

while( true ){

think(); // Размышляем

take_forks(i); // Берем 2 вилки или блокируемся

eat(); // Обедаем

put_forks(i); // Кладем на стол обе вилки

}

}



void take_forks( int i){

P(Access); // Захватываем доступ к критическим данным

State[i] = HUNGRY; // Изменяем свое состояние

test(i); // Пытаемся взять две вилки

V(Access); // Освобождаем доступ к критическим данным

P(S[i]); // Блокируемся, если не удалось взять вилки

}

void put_forks( int i){



P(Access); // Захватываем доступ к критическим данным

State[i] = THINKING; // Изменяем свое состояние

test(LEFT); // Пытаемся накормить соседа слева

test(RIGHT); // Пытаемся накормить соседа справа

V(Access); // Освобождаем доступ к критическим данным

}

void test( int i ){



if(state[i]==HUNGRY&&state[LEFT]!=EATING&&state[RIGHT]!=EATING){

State[i] = EATING; // Изменяем состояние

V(S[i]); // Разрешаем перейти к еде

}

}


Семафор Access используется для защиты массива состояний философов State[5].

Семафоры S[5] используются для оповещения философа о возможности взять две

вилки и начать обед. Отметим, что момент начала обеда определяется не философом,

желающим обедать, а философом, завершившим обедать.


Можно предположить следующие типичные недостатки, присущие различным

решениям задачи об обедающих философах:


- если все философы проголодались, взяли левую вилку и не желают ее отдавать, то

они все будут ожидать правые вилки в течение бесконечного времени; предложенное

решение не допускает возникновения подобной ситуации;
- если имеется голодный философ, то его непосредственные соседи могут по

очереди блокировать его левую и правую вилку таким образом, что в каждый момент

времени хотя бы одна из необходимых ему вилок занята – в результате возможно

голодание отдельного философа; предложенное решение допускает возможность

такого голодания.
Имеется простое расширение предложенного решения на случай, когда каждый

поток может использовать произвольное множество ресурсов. Для этого, во-первых,

необходимо добавить массив признаков занятости ресурсов и описания множеств

ресурсов, затребованных каждым потоком, во-вторых, при освобождении ресурсов

поток должен просматривать все потоки, ожидающие освобождения ресурсов, и в случае, если запросы одного или нескольких потоков могут быть удовлетворены,

резервировать за ними ресурсы и разрешать им продолжить выполнение.


Подобное решение будет лишено первого недостатка (по причине того, что все

потоки требуют все необходимые им ресурсы сразу, а впоследствии их все



возвращают), но будет подвержено второму, как и оригинальное решение.

Похожие:

Ответ1: Файловая система zfs (Zettabyte File System) iconЛабораторная работа №9 Теоретическая часть: Файловая система и права доступа Особенности файловых систем семейства fat
Обе файловые системы разработаны в компании Microsoft. Файловая система fat официально появилась в первой версии ос ms-dos. Файловая...
Ответ1: Файловая система zfs (Zettabyte File System) iconФайловая система
Файловая система NetWare значительно отличается от файловых систем ос общего назначения следующими ключевыми свойствами
Ответ1: Файловая система zfs (Zettabyte File System) iconФайловая система
Файловая система это часть операционной системы, назначение которой состоит в том, чтобы обеспечить пользователю удобный интерфейс...
Ответ1: Файловая система zfs (Zettabyte File System) iconТрадиционная файловая система s5 Типы файлов
Файловая система unix s5 поддерживает логическую организацию файла в виде последовательности байтов. По функциональному назначению...
Ответ1: Файловая система zfs (Zettabyte File System) iconКонспект урока. Файл и файловая система. Цели урока: Обучающая: познакомить с понятиями файл, папка, файловая система, имя файла, путь к файлу. Развивающая
Учитель приветствует учеников, проверяет их готовность к уроку, сообщает тему и
Ответ1: Файловая система zfs (Zettabyte File System) iconКонтрольная работа Какая современная файловая система позволяет хранить самые большие файлы. За счет каких особенностей она может обеспечить работу с ними? В какой операционной системе она используется?
Позволяет хранить файл размеров в 16 эксабайт. Изначально была разработана в Sun Microsystems для операционной системы Solaris. Поскольку...
Ответ1: Файловая система zfs (Zettabyte File System) iconРаспределенная файловая система dfs osf
Распределенная файловая система dfs osf предназначена для обеспечения прозрачного доступа к любому файлу, расположенному в любом...
Ответ1: Файловая система zfs (Zettabyte File System) iconЛабораторная работа «Шифрованная файловая система Cryptoloop. Шифрованный сетевой канал ppp-ssh» 1 Описание 1 Шифрованная файловая система Cryptoloop
Начиная с ядра ос linux версии 6, программный интерфейс Cryptoapi был встроен в ядро системы, в результате чего отпала необходимость...
Ответ1: Файловая система zfs (Zettabyte File System) iconПул построен из виртуальных устройств
Поcкольку код zfs является открытым, порты для других ос могут производиться без участия Sun. Zfs это 128-битная фс, имеющая максимальный...
Ответ1: Файловая система zfs (Zettabyte File System) iconФайловая система hpfs
Эта система была разработана, чтобы преодолеть некоторые недостатки fat, к числу которых относятся
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org