По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Все мы любим компьютеры. Они могут делать столько удивительных вещей. За пару десятилетий компьютеры произвели самую настоящую революцию почти во всех аспектах человеческой жизни. Они могут справляться с задачами различной степени сложности, просто переворачивая нули и единицы. Просто удивительно, как такое простое действие может привести к такому уровню сложности. Но я уверен, что вы все знаете, что такой сложности нельзя добиться (практически нельзя) простым случайным переворачиванием чисел. Но за этим стоит определенные логические рассуждения. Есть правила, которые определяют, как это все должно происходить. В данной статье мы обсудим эти правила и увидим, как они управляют «мышлением» компьютера. Что такое булева алгебра? Это правила, о которых я упоминал выше, описываются некой областью математики, называемой булевой алгеброй. В своей книге 1854 года британский математик Джордж Буль предложил использовать систематический набор правил для работы со значениями истинности. Эти правила положили математическую основу для работы с логическими высказываниями. А эти основы привели к развитию булевой алгебры. Для того, чтобы понять, что из себя представляет булева алгебра, сначала мы должны понять сходства и различия между ней и другими формами алгебры. Алгебра в целом занимается изучением математических символов и операций, которые можно выполнять над этими символами. Эти символы сами по себе ничего не значат. Они обозначают некую величину. Именно эти величины и придают ценность этим символам, и именно с этими величинами и выполняются операции. Булева алгебра также имеет дело с символами и правилами, позволяющими выполнять различные операции над этими символами. Разница заключается в том, что эти символы что-то значат. В случае обычной алгебры символы обозначают действительные числа. А в булевой алгебре они обозначают значения истинности. На рисунке ниже представлен весь набор действительных чисел. Набор действительных чисел включает натуральные числа (1, 2, 3, 4, …), положительные целые числа (все натуральные числа и 0), целые числа (…, -2, -1, 0, 1, 2, 3, …) и т.д. Обычная алгебра имеет дело со всем этим набором чисел. Для сравнения, значения истинности состоят из набора, который включает в себя только два значения: True и False. Здесь я хотел бы отметить, что мы можем использовать любые другие символы для обозначения этих значений. Например, в информатике, как правило, эти значения обозначают через 0 и 1 (0 используется в качестве False, 1 – в качестве True). Вы также можете сделать это более оригинальным способом, обозначая значения истинности какими-то другими символами, например, кошки и собаки или бананы и апельсины. Суть здесь в том, что смысл этих значений останется неизменным, как бы вы их не обозначили. Но убедитесь, что вы не меняете символы в процессе выполнения операций. Теперь вопрос в том, что если (True и False), (0 и 1) – это просто обозначения, то что же они пытаются обозначить? Смысл, лежащий в основе значений истинности, исходит из области логики, где значения истинности используются для того, чтобы определить, является ли высказывание «Истинным» (True) или «Ложным» (False). Здесь значения истинности обозначают соответствие высказывания истине, то есть показывают, является ли высказывание истинным или ложным. Высказывание – это просто некоторое утверждение, что-то вроде «Все кошки милые». Если приведенное выше высказывание верно, то мы присваиваем ему значение истинности «Истина» (True) или «1», в противном случае мы присваиваем ему значение истинности «Ложь» (False) или «0». В цифровой электронике значения истинности используются для обозначения состояний электронных схем «включено» и «выключено». Подробнее об этом мы поговорим позже в этой же статье. Логические операции и таблицы истинности Как и в обычной алгебре, в булевой алгебре также можно применять операции к значениям для получения некоторых результатов. Однако эти операции не похожи на операции в обычной алгебре, поскольку, как мы уже упоминали ранее, булева алгебра работает со значениями истинности, а не с действительными числами. В булевой алгебре есть три основные операции. OR: OR или "ИЛИ", также известная как дизъюнкция. Эта операция выполняется над двумя логическими переменными. Результатом операции OR будет 0, если оба операнда равны 0, иначе будет 1. Для того, чтобы более наглядно продемонстрировать принцип работы этой операции, визуализируем ее с помощью таблицы истинности. Таблицы истинности дают нам хорошее представление о том, как работают логические операции. Также это удобный инструмент для выполнения логических операций. Операция OR: Переменная 1 Переменная 2 Результат 0 0 0 0 1 1 1 0 1 1 1 1 AND: AND или "И", также известная как конъюнкция. Эта операция выполняется над двумя логическими переменными. Результатом операции AND будет 1, если оба операнда равны 1, иначе будет 0. Таблица истинности выглядит следующим образом. Операция AND: Переменная 1 Переменная 2 Результат 0 0 0 0 1 0 1 0 0 1 1 1 NOT: NOT или "НЕ", также известное как отрицание. Эта операция выполняется только над одной переменной. Если значение переменной равно 1, то результатом этой операции будет 0, и наоборот, если значение переменной равно 0, то результатом операции будет 1. Операция NOT: Переменная 1 Результат 0 1 1 0 Булева алгебра и цифровые схемы Булева алгебра после своего появления очень долго оставалась одним из тех понятий в математике, которые не имели какого-то значительного практического применения. В 1930-х годах Клод Шеннон, американский математик, обнаружил, что булеву алгебру можно использовать в схемах, где двоичные переменные могут обозначать сигналы «низкого» и «высокого» напряжения или состояния «включено» и «выключено». Эта простая идея создания схем с помощью булевой алгебры привела к развитию цифровой электроники, которая внесла большой вклад в разработку схем для компьютеров. Цифровые схемы реализуют булеву алгебру при помощи логических элементов – схем, обозначающих логическую операцию. Например, элемент OR будет обозначать операцию OR. То же самое относится и к элементам AND и NOT. Наряду с основными логическими элементами существуют и логические элементы, которые можно создать путем комбинирования основных логических элементов. NAND: элемент NAND, или "И-НЕ", образован комбинацией элементов NOT и AND. Элемент NAND дает на выходе 0, если на обоих входах 1, в противном случае – 1. Элемент NAND обладает свойством функциональной полноты. Это означает, что любая логическая функция может быть реализована только с помощью элементов NAND. Элемент NAND: Вход 1 Вход 2 Результат 0 0 1 0 1 1 1 0 1 1 1 0 NOR: элемент NOR, или "ИЛИ-НЕ", образован комбинацией элементов NOT и OR. Элемент NOR дает на выходе 1, если на обоих входах 0, в противном случае – 0. Элемент NOR, как и элемент NAND, обладает свойством функциональной полноты. Это означает, что любая логическая функция может быть реализована только с помощью элементов NOR. Элемент NOR: Вход 1 Вход 2 Результат 0 0 1 0 1 0 1 0 0 1 1 0 Большинство цифровых схем построены с использованием элементов NAND и NOR из-за их функциональной полноты, а также из-за простоты изготовления. Помимо элементов, рассмотренных выше, существуют также особые элементы, которые служат для определенных целей. Вот они: XOR: элемент XOR, или "исключающее ИЛИ", - это особый тип логических элементов, который дает на выходе 0, если оба входа равны 0 или 1, в противном случае – 1. Элемент XOR: Вход 1 Вход 2 Результат 0 0 0 0 1 1 1 0 1 1 1 0 XNOR: элемент XNOR, или "исключающее ИЛИ-НЕ", - это особый тип логических элементов, который дает на выходе 1, когда оба входа равны 0 или 1, в противном случае – 0. Элемент XNOR: Вход 1 Вход 2 Результат 0 0 1 0 1 0 1 0 0 1 1 1 Заключение Итак, на этом мы можем закончить обсуждение булевой алгебры. Надеюсь, что к текущему моменту у вас сложилась неплохая картина того, что же такое булева алгебра. Это, конечно, далеко не все, что вам следует знать о булевой алгебре. В ней есть множество понятий и деталей, которые мы не обсудили в данной статье.
img
Почитать лекцию №18 про модель Recursive Internet Architecture (RINA) можно тут. Итерационная модель также выводит концепции сетевых протоколов, ориентированных на соединение и без установления соединения, снова на свет. Протоколы, ориентированные на соединение, перед отправкой первого бита данных устанавливают сквозное соединение, включая все состояния для передачи значимых данных. Состояние может включать в себя такие вещи, как требования к качеству обслуживания, путь, по которому будет проходить трафик через сеть, конкретные приложения, которые будут отправлять и получать данные, скорость, с которой данные могут отправляться, и другая информация. Как только соединение установлено, данные могут быть переданы с минимальными издержками. Сервисы без установления соединения, с другой стороны, объединяют данные, необходимые для передачи данных, с самими данными, передавая оба в одном пакете (или блоке данных протокола). Протоколы без установления соединения просто распространяют состояние, необходимое для передачи данных по сети, на каждое возможное устройство, которому могут потребоваться данные, в то время как модели, ориентированные на установление соединения, ограничивают состояние только теми устройствами, которые должны знать об определенном потоке пакетов. В результате сбои в работе одного устройства или канала в сети без установления соединения можно устранить, переместив трафик на другой возможный путь, а не переделав всю работу, необходимую для построения состояния, для продолжения передачи трафика из источника в пункт назначения. Большинство современных сетей построены с использованием бесконтактных транспортных моделей в сочетании с ориентированными на подключение моделями качества обслуживания, контроля ошибок и управления потоками. Эта комбинация не всегда идеальна; например, качество обслуживания обычно настраивается по определенным путям, чтобы соответствовать определенным потокам, которые должны следовать этим путям. Такая трактовка качества обслуживания как более ориентированного на соединение, чем фактические управляемые потоки трафика, приводит к сильным разрывам между идеальным состоянием сети и различными возможными режимами сбоев.
img
У каждого из нас, наверное, есть родственник (бабушка, брат, племянник или еще кто-то), который говорил так быстро, что вы не могли понять слова, которое он говорил? Некоторые компьютерные программы тоже "говорят" слишком быстро. Рисунок 1 иллюстрирует это. На рисунке: В момент времени 1 (T1) отправитель передает около четырех пакетов на каждые три, которые может обработать приемник. Приемник имеет пяти-пакетный буфер для хранения необработанной информации; в этом буфере находятся два пакета. В момент времени Т2 отправитель передал четыре пакета, а получатель обработал три; буфер в приемнике теперь содержит три пакета. На этапе T3 отправитель передал четыре пакета, а получатель обработал три; буфер в приемнике теперь содержит четыре пакета. На этапе T4 отправитель передал четыре пакета, а получатель обработал три; буфер в приемнике теперь содержит пять пакетов. Следующий переданный пакет будет отброшен получателем, потому что в буфере нет места для его хранения, пока получатель обрабатывает пакеты, чтобы их можно было удалить. Что необходимо, так это своего рода петля обратной связи, чтобы сказать передатчику замедлить скорость, с которой он посылает пакеты, как показано на рисунке 3. Этот тип обратной связи требует либо неявной сигнализации, либо явной сигнализации между приемником и передатчиком. Неявная передача сигналов используется более широко. При неявной сигнализации передатчик предполагает, что пакет не был принят на основании некоторых наблюдений о потоке трафика. Например, получатель может подтвердить получение некоторого более позднего пакета, или получатель может просто не подтвердить получение определенного пакета, или получатель может не отправлять что-либо в течение длительного периода времени (в терминах сети). При явной сигнализации получатель каким-то образом напрямую сообщает отправителю, что определенный пакет не был получен. Windowing Windowing в сочетании с неявной передачей сигналов, безусловно, является наиболее широко используемым механизмом управления потоками в реальных сетях. Windowing по существу состоит из следующего: Передатчик отправляет некоторое количество информации получателю. Передатчик ждет, прежде чем решить, правильно ли была получена информация или нет. Если получатель подтверждает получение в течение определенного периода времени, передатчик отправляет новую информацию. Если получатель не подтверждает получение в течение определенного периода времени, передатчик повторно отправляет информацию. Неявная сигнализация обычно используется с Windowing протоколами, просто не подтверждая получение конкретного пакета. Явная сигнализация иногда используется, когда получатель знает, что он сбросил пакет, когда полученные данные содержат ошибки, данные получены не по порядку или данные иным образом повреждены каким-либо образом. Рисунок 3 иллюстрирует простейшую Windowing схему-окно с одним пакетом. В одиночном окне пакета (также иногда называемом ping pong) передатчик отправляет пакет только тогда, когда получатель подтвердил (показанный на рисунке как ack) получение последнего переданного пакета. Если пакет не получен, получатель не подтвердит его. При отправке пакета отправитель устанавливает таймер, обычно называемый таймером повторной передачи; как только этот таймер активируется (или истекает), отправитель предполагает, что получатель не получил пакет, и отправляет его повторно. Как долго должен ждать отправитель? Существует несколько возможных ответов на этот вопрос, но по существу отправитель может либо ждать фиксированное количество времени, либо установить таймер на основе информации, полученной из предыдущих передач и условий сети. Простой (и наивной) схемой было бы Измерьте промежуток времени между отправкой пакета и получением подтверждения, называемый временем обратного пути (RTT- Round Trip Time, хотя обычно пишется в нижнем регистре, поэтому rtt). Установите таймер повторной передачи на это число плюс небольшое количество времени буфера, чтобы учесть любую изменчивость в RTT на протяжении нескольких передач. Кроме того, получатель может получить две копии одной и той же информации: A передает пакет и устанавливает таймер его повторной передачи B получает пакет, но Не может подтвердить получение, потому что он находится вне памяти или испытывает высокую загрузку процессора или какое-то другое состояние. Отправляет подтверждение, но оно отбрасывается сетевым устройством. Таймер повторной передачи в точке A истекает, поэтому отправитель передает другую копию пакета. B получает эту вторую копию той же информации Как получатель может обнаружить дублированные данные? Для получателя представляется возможным сравнить полученные пакеты, чтобы увидеть, есть ли дублирующаяся информация, но это не всегда будет работать - возможно, отправитель намеревался отправить одну и ту же информацию дважды. Обычный метод обнаружения дублирующейся информации заключается в включении некоторого вида порядкового номера в передаваемые пакеты. Каждому пакету присваивается уникальный порядковый номер при его создании отправителем; если получатель получает два пакета с одинаковым порядковым номером, он предполагает, что данные дублированы, и отбрасывает копии. Окно размером 1, или ping pong, требует одного кругового перехода между отправителем и получателем для каждого набора передаваемых данных. Это, как правило, приводит к очень низкой скорости передачи. Если рассматривать сеть, как о сквозном железнодорожном пути, а каждый пакет-как об одном вагоне поезда, то наиболее эффективное использование пути и самая быстрая скорость передачи данных будут тогда, когда путь всегда полон. Это физически невозможно, однако, в случае сети, потому что сеть используется многими наборами отправителей и получателей, и всегда есть сетевые условия, которые помешают использованию сети достичь 100%. Существует некоторый баланс между повышением эффективности и скорости отправки более одного пакета за один раз, а также мультиплексированием и "безопасностью" отправки меньшего количества пакетов за один раз (например, одного). Если правильная точка баланса может быть вычислена каким-то образом, схема управления потоком с фиксированным окном может хорошо работать. Рисунок 4 иллюстрирует это. На рисунке 4, предполагаемое фиксированное окно с тремя пакетами: При T1, T2 и T3 A передает пакеты; A не нужно ждать, пока B что-либо подтвердит, чтобы отправить эти три пакета, так как размер окна установлен на 3. В момент T4 B подтверждает эти три пакета, что позволяет A передать другой пакет. При T5 B подтверждает этот новый пакет, даже если это только один пакет. B не нужно ждать, пока A передаст еще три пакета, чтобы подтвердить один пакет. Это подтверждение позволяет A иметь достаточный бюджет для отправки еще трех пакетов. При T5, T6 и T7 A отправляет еще три пакета, заполняя свое окно. Теперь он должен ждать, пока B не подтвердит эти три пакета, чтобы отправить больше информации. На этапе T8 B подтверждает получение этих трех пакетов. В схемах управления окнами, где размер окна больше одного, существует четыре вида подтверждений, которые приемник может отправить передатчику: Положительное подтверждение: приемник подтверждает получение каждого пакета в отдельности. Например, если порядковые номера 1, 3, 4 и 5 были получены, приемник подтвердит получение этих конкретных пакетов. Отправитель может сделать вывод, какие пакеты не получил приемник, отметив, какие порядковые номера не были подтверждены. Отрицательное подтверждение: приемник отправляет отрицательное ack для пакетов, которые, по его мнению, отсутствуют или были повреждены при получении. Например, если порядковые номера 1, 3, 4 и 5 были получены, приемник может сделать вывод, что порядковый номер 2 отсутствует, и отправить отрицательное ack для этого пакета. Выборочное подтверждение: по сути, это сочетание положительного и отрицательного подтверждения, как указано выше; приемник отправляет как положительные, так и отрицательные подтверждения для каждой последовательности полученной информации. Кумулятивное подтверждение: подтверждение получения порядкового номера подразумевает получение всей информации с более низкими порядковыми номерами. Например, если порядковый номер 10 подтвержден, подразумевается информация, содержащаяся в порядковых номерах 19, а также информация, содержащаяся в порядковом номере 10 Третий оконный механизм называется управлением потоком скользящего окна. Этот механизм очень похож на фиксированный механизм управления потоком окон, за исключением того, что размер окна не является фиксированным. При управлении потоком со скользящим окном передатчик может динамически изменять размер окна при изменении сетевых условий. Приемник не знает, какого размера окно, только то, что отправитель передает пакеты, и время от времени приемник подтверждает некоторые или все из них, используя один из механизмов подтверждения, описанных в предыдущем списке. Механизмы скользящих окон добавляют еще один интересный вопрос к вопросам, уже рассмотренным в других механизмах управления окнами: какого размера должно быть окно? Простое решение позволяет просто вычислить rtt и установить размер окна, кратный rtt. Были предложены более сложные решения; Negotiated Bit Rates (Согласование Bit Rates) Другое решение, которое чаще используется в сетях с коммутацией каналов, а не в сетях с коммутацией пакетов, заключается в том, чтобы отправитель, получатель и сеть согласовывали скорость передачи битов для любого конкретного потока. Широкий спектр возможных скоростей передачи данных был разработан для ряда различных сетевых технологий. Возможно, "наиболее полный набор" предназначен для асинхронного режима передачи данных (ATM)-но данные сети ATM вы скорее всего найдете в ближайшем Музее истории сетей, потому что ATM редко развертывается в производственных сетях. Битовые скорости ATM являются: Постоянная скорость передачи (Constant Bit Rate -CBR): отправитель будет передавать пакеты (или информацию) с постоянной скоростью; следовательно, сеть может планировать с учетом этой постоянной нагрузки на полосу пропускания, а приемник может планировать с учетом этой постоянной скорости передачи данных. Этот битрейт обычно используется для приложений, требующих синхронизации времени между отправителем и получателем. Переменная скорость передачи (Variable Bit Rate -VBR): отправитель будет передавать трафик с переменной скоростью. Эта скорость обычно согласовывается с несколькими другими частями информации о потоке, которые помогают сети и получателю планировать ресурсы, включая: Пиковая скорость или максимальная скорость передачи пакетов в секунду, которую планирует передать отправитель Устойчивая скорость или скорость, с которой отправитель планирует передавать данные в обычном режиме Максимальный размер пакета или наибольшее количество пакетов, которые отправитель намеревается передать за очень короткий промежуток времени Доступная скорость передачи (Available Bit Rate -ABR): отправитель намеревается полагаться на способность сети доставлять трафик с максимальной отдачей, используя некоторую другую форму управления потоком, такую как метод скользящего окна, для предотвращения переполнения буфера и настроить передаваемый трафик на доступную полосу пропускания.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59