Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

№9. Архитектура фон Неймана – основные признаки.

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

Принято считать, что первый электронный компьютер ENIAC был изготовлен в США в 1946 г. (если мы на минуточку забудем, что уже в 1941 году цифровая машина Z1 и Z2 Конрада Цузе расчитывала траекторию ракет обстреливающих Лондон). Блестящий анализ сильных и слабых сторон проекта ENIAC был дан в отчете Принстонского института перспективных исследований "Предварительное обсуждение логического конструирования электронного вычислительного устройства" (июнь 1946 г.). Этот отчет, составленный выдающимся американским математиком Джоном фон Нейманом и его коллегами по Принстонскому институту Г. Голдстайном и А. Берксом, представлял проект нового электронного компьютера. Идеи, высказанные в этом отчете, известные под названием "Неймановских Принципов", оказали серьезное влияние на развитие компьютерной техники.

Сущность "Неймановских Принципов" состояла в следующем:

Двоичная система счисления - компьютеры на электронных элементах должны работать не в десятичной, а в двоичной системе счисления;

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

НЕ нашли? Не то? Что вы ищете?

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

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

4.  В компьютере используется параллельный принцип организации вычислительного процесса (операции над двоичными кодами осуществляются одновременно над всеми разрядами).

В Советском Союзе работы по созданию электронных компьютеров были начаты несколько позже. Первый советский электронный компьютер был изготовлен в Киеве в 1953 г. Он назывался МЭСМ (малая электронная счетная машина), а его главным конструктором был академик Сергей Лебедев, автор проектов компьютеров серии БЭСМ (большая электронная счетная машина).

Самой важной отличительной чертой модели фон Неймана был и остается принцип единой линейной памяти, которая адресуется последовательными адресами и в которой команды неотличимы от данных. Структура ЭВМ фон Неймана приведена на рис. 3.2.

Память Процессорное устройство

 

Рис. 3.2 Модель фон Неймана

Представления данных как чисел и соответствующий характер команд с самого начала определили выбор архитектуры, ориентированной на числовую обработку. Обычно в этих ЭВМ данные представляются в виде скалярных данных, векторов и матриц. Числа в ЭВМ представляются как целые.

Таким образом, ЭВМ с архитектурой фон Неймана, это ЭВМ с управлением потоком команд. Принято считать, что ВМ с архитектурой фон Неймана присущи следующие особенности:

1. единая, последовательно адресуемая память (обычные скалярные однопроцессорные системы, при этом наличие конвейера не меняет дела);

2. память является линейной и одномерной (одномерная – имеет вид вектора слов, память состоит из ячеек фиксированной длины и имеет линейную структуру адресации); 3. отсутствует явное различие между командами и данными;

4. ход выполнения вычислительного процесса определяется только централизованными и последовательными командами или, другими словами, управление потоком команд (выбрать адрес команды – выбрать данные – произвести действие и т. д.);

5. назначение данных не является их неотъемлемой, составной частью, назначение данных определяется логикой программы.

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

Однако на определенном этапе развития компьютерной техники было обнаружено ряд недостатков классической двоичной системы счисления. Первым из них является так называемая "проблема представления отрицательных чисел". Как известно, отрицательные числа непосредственно не могут быть представлены в классической двоичной системе счисления, использующей только две двоичные цифры 0 и 1, без дополнительных "ухищрений". Основным "ухищрением" является использование специальных кодов для представления отрицательных чисел - обратного или дополнительного.

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

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

№36. Анализ производительности ЭВМ, пути развития.

Увеличение производительности ЭВМ, за счет чего?

А почему суперкомпьютеры считают так быстро? Вариантов ответа может быть несколько, среди которых два имеют явное преимущество: развитие элементной базы и использование новых решений в архитектуре компьютеров. Попробуем разобраться, какой из этих факторов оказывается решающим для достижения рекордной производительности. Обратимся к известным историческим фактам. На одном из первых компьютеров мира - EDSAC, появившемся в 1949 году в Кембридже и имевшем время такта 2 микросекунды (2*10-6 секунды), можно было выполнить 2*n арифметических операций за 18*n миллисекунд, то есть в среднем 100 арифметических операций в секунду. Сравним с одним вычислительным узлом современного суперкомпьютера Hewlett-Packard V2600: время такта приблизительно 1.8 наносекунды (1.8*10-9 секунд), а пиковая производительность около 77 миллиардов арифметических операций в секунду. Что же получается? Более чем за полвека производительность компьютеров выросла почти в 800 миллионов раз. При этом выигрыш в быстродействии, связанный с уменьшением времени такта с 2 микросекунд до 1.8 наносекунд, составляет лишь около 1000 раз. Откуда же взялось остальное? Ответ очевиден - использование новых решений в архитектуре компьютеров. Основное место среди них занимает принцип параллельной обработки команд и данных, воплощающий идею одновременного (параллельного) выполнения нескольких действий.

Параллельные системы

Итак, пути повышения производительности ВС заложены в ее архитектуре. С одной стороны это совокупность процессоров, блоков памяти, устройств ввода/вывода ну и конечно способов их соединения, т. е. коммуникационной среды. С другой стороны, это собственно действия ВС по решению некоторой задачи, а это операции над командами и данными. Вот собственно и вся основная база для проведения параллельной обработки. Параллельная обработка, воплощая идею одновременного выполнения нескольких действий, имеет несколько разновидностей: суперскалярность, конвейеризация, SIMD – расширения, Hyper Threading, многоядерность. В основном эти виды параллельной обработки интуитивно понятны, поэтому сделаем лишь небольшие пояснения. Если некое устройство выполняет одну операцию за единицу времени, то тысячу операций оно выполнит за тысячу единиц. Если предположить, что есть, пять таких же независимых устройств, способных работать одновременно, то ту же тысячу операций система из пяти устройств может выполнить уже не за тысячу, а за двести единиц времени. Аналогично система из N устройств ту же работу выполнит за 1000/N единиц времени. Подобные аналогии можно найти и в жизни: если один солдат вскопает огород за 10 часов, то рота солдат из пятидесяти человек с такими же способностями, работая одновременно, справятся с той же работой за 12 минут (параллельная обработка данных), да еще и с песнями (параллельная обработка команд).

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

Суперскалярность. Как и в предыдущем примере, только при построении конвейера используют несколько программно-аппаратных реализаций функциональных устройств, например два или три АЛУ, три или четыре устройства выборки.

Hyper Threading. Перспективное направление развитие современных микропроцессоров, основанное на многонитевой архитектуре. Основное препятствие на пути повышения производительности за счет увеличения функциональных устройств – это организация эффективной загрузки этих устройств. Если сегодняшние программные коды не в состоянии загрузить работой все функциональные устройства, то можно разрешить процессору выполнять более чем одну задачу (нить), чтобы дополнительные нити загрузили – таки все ФИУ (очень похоже на многозадачность).

Многоядерность. Можно, конечно, реализовать мультипроцессирование на уровне микросхем, т. е. разместить на одном кристалле несколько процессоров (Power 4). Но если взять микропроцессор вместе с памятью как ядра системы, то несколько таких ядер на одном кристалле создадут многоядерную структуру. При этом в кристалле интегрируются функции (например, интерфейсы сетевых и телекоммуникационных систем) для выполнения которых обычно используются наборы микросхем (процессоры Motorola MPC8260, Power 4).

По каким же направлениям идет реализация высокопроизводительной вычислительной техники в настоящее время? Основных направлений четыре.

1. Векторно-конвейерные компьютеры. Конвейерные функциональные устройства и набор векторных команд - это две особенности таких машин. В отличие от традиционного подхода, векторные команды оперируют целыми массивами независимых данных, что позволяет эффективно загружать доступные конвейеры, т. е. команда вида A=B+C может означать сложение двух массивов, а не двух чисел. Характерным представителем данного направления является семейство векторно-конвейерных компьютеров CRAY куда входят, например, CRAY EL, CRAY J90, CRAY T90 (в марте 2000 года американская компания TERA перекупила подразделение CRAY у компании Silicon Graphics, Inc.).

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

Однако есть и решающий "минус", сводящий многие "плюсы" на нет. Дело в том, что межпроцессорное взаимодействие в компьютерах этого класса идет намного медленнее, чем происходит локальная обработка данных самими процессорами. Именно поэтому написать эффективную программу для таких компьютеров очень сложно, а для некоторых алгоритмов иногда просто невозможно. К данному классу можно отнести компьютеры Intel Paragon, IBM SP1, Parsytec, в какой-то степени IBM SP2 и CRAY T3D/T3E, хотя в этих компьютерах влияние указанного минуса значительно ослаблено. К этому же классу можно отнести и сети компьютеров, которые все чаще рассматривают как дешевую альтернативу крайне дорогим суперкомпьютерам.

3. Параллельные компьютеры с общей памятью. Вся оперативная память таких компьютеров разделяется несколькими одинаковыми процессорами. Это снимает проблемы предыдущего класса, но добавляет новые - число процессоров, имеющих доступ к общей памяти, по чисто техническим причинам нельзя сделать большим. В данное направление входят многие современные многопроцессорные SMP-компьютеры или, например, отдельные узлы компьютеров HP Exemplar и Sun StarFire.

4. Кластерные системы. Последнее направление, строго говоря, не является самостоятельным, а скорее представляет собой комбинации предыдущих трех. Из нескольких процессоров (традиционных или векторно-конвейерных) и общей для них памяти сформируем вычислительный узел. Если полученной вычислительной мощности не достаточно, то объединим несколько узлов высокоскоростными каналами. Подобную архитектуру называют кластерной, и по такому принципу построены CRAY SV1, HP Exemplar, Sun StarFire, NEC SX-5, последние модели IBM SP2 и другие. Именно это направление является в настоящее время наиболее перспективным для конструирования компьютеров с рекордными показателями производительности.

Использование параллельных вычислительных систем

К сожалению, чудеса в жизни редко случаются. Гигантская производительность параллельных компьютеров и супер-ЭВМ с лихвой компенсируется сложностями их использования. Начнем с самых простых вещей. У вас есть программа и доступ, скажем, к 256-процессорному компьютеру. Что вы ожидаете? Да ясно что: вы вполне законно ожидаете, что программа будет выполняться в 256 раз быстрее, чем на одном процессоре. А вот как раз этого, скорее всего, и не будет.

Закон Амдала и его следствия

Предположим, что в вашей программе доля операций, которые нужно выполнять последовательно, равна f, где 0<=f<=1 (при этом доля понимается не по статическому числу строк кода, а по числу операций в процессе выполнения). Крайние случаи в значениях f соответствуют полностью параллельным (f=0) и полностью последовательным (f=1) программам. Так вот, для того, чтобы оценить, какое ускорение S может быть получено на компьютере из 'p' процессоров при данном значении f, можно воспользоваться законом Амдала: S<=1/(f+(1-f)/p)

Если 9/10 программы исполняется параллельно, а 1/10 по-прежнему последовательно, то ускорения более, чем в 10 раз получить в принципе невозможно вне зависимости от качества реализации параллельной части кода и числа используемых процессоров.

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

s = 0

Do i = 1, n

s = s + a(i)

End Do

(можно тоже самое на любом другом языке)

По своей природе он строго последователен, так как на i-й итерации цикла требуется результат с (i-1)-й и все итерации выполняются одна за одной. Имеем 100% последовательных операций, а значит и никакого эффекта от использования параллельных компьютеров. Вместе с тем, выход очевиден. Поскольку в большинстве реальных программ (вопрос: а почему в большинстве, а не во всех?) нет существенной разницы, в каком порядке складывать числа, выберем иную схему сложения. Сначала найдем сумму пар соседних элементов: a(1)+a(2), a(3)+a(4), a(5)+a(6) и т. д. Заметим, что при такой схеме все пары можно складывать одновременно! На следующих шагах будем действовать абсолютно аналогично, получив вариант параллельного алгоритма. Казалось бы в данном случае все проблемы удалось разрешить. Но представьте, что доступные вам процессоры разнородны по своей производительности. Значит будет такой момент, когда кто-то из них еще трудится, а кто-то уже все сделал и бесполезно простаивает в ожидании. Если разброс в производительности компьютеров большой, то и эффективность всей системы при равномерной загрузке процессоров будет крайне низкой. Но пойдем дальше и предположим, что все процессоры одинаковы. Проблемы кончились? Опять нет! Процессоры выполнили свою работу, но результат-то надо передать другому для продолжения процесса суммирования... а на передачу уходит время... и в это время процессоры опять простаивают... Словом, заставить параллельную вычислительную систему или супер-ЭВМ работать с максимальной эффективность на конкретной программе это, прямо скажем, задача не из простых, поскольку необходимо тщательное согласование структуры программ и алгоритмов с особенностями архитектуры параллельных вычислительных систем.

Заключительный вопрос. Как вы думаете, верно ли утверждение: чем мощнее компьютер, тем быстрее на нем можно решить данную задачу? Заключительный ответ. Нет, это не верно. Это можно пояснить простым бытовым примером. Если один землекоп выкопает яму 1м*1м*1м за 1 час, то два таких же землекопа это сделают за 30 мин - в это можно поверить. А за сколько времени эту работу сделают 60 землекопов? За 1 минуту? Конечно же нет! Начиная с некоторого момента они будут просто мешаться друг другу, не ускоряя, а замедляя процесс. Так же и в компьютерах: если задача слишком мала, то мы будем дольше заниматься распределением работы, синхронизацией процессов, сборкой результатов и т. п., чем непосредственно полезной работой.

№37. Архитектура «клиент-сервер».

Клиент-сервер (англ. Сlient/Server) — сетевая архитектура, в которой устройства являются либо клиентами, либо серверами. Клиентом (front end) является запрашивающая машина (обычно ПК), сервером (back end) — машина, которая отвечает на запрос. Оба термина (клиент и сервер) могут применяться как к физическим устройствам, так и к программному обеспечению.

В сетях с выделенными серверами (рис. 8) используются специальные варианты сетевых ОС, которые оптимизированы для работы в роли серверов и называются серверными ОС. Пользовательские компьютеры в таких сетях работают под управлением клиентских ОС.


Рис. 8 Сеть с выделенным сервером.

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

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

Однако слишком узкая специализация некоторых серверных ОС является одновременно и их слабой стороной. Так, отсутствие в NetWare 4 универсального интерфейса программирования и средств защиты приложений, не позволившее использовать эту ОС в качестве среды для выполнения приложений, приводит к необходимости применения в сети других серверных ОС в тех случаях, когда требуется выполнение функций, отличных от файлового сервиса и сервиса печати. Поэтому разработчики многих серверных операционных систем отказываются от функциональной ограниченности и включают в состав серверных ОС все компоненты, позволяющие задействовать их в качестве универсальных серверов и даже клиентских ОС. Такие серверные ОС снабжаются развитым графическим пользовательским интерфейсом и поддерживают универсальный API. Это сближает их с одноранговыми операционными системами, но существует несколько отличий, которые позволяют отнести их именно к классу серверных ОС:

·  поддержка мощных аппаратных платформ, в том числе мультипроцессорных;

·  поддержка большого числа одновременно выполняемых процессов и сетевых соединений;

·  включение в состав ОС компонентов централизованного администрирования сети (например, справочной службы или службы аутентификации и авторизации пользователей сети);

·  более широкий набор сетевых служб.

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

·  файл-сервер, узел сети, выполняющий централизованное хранение данных и обеспечивающий разделяемый доступ к ним, служащий для управления передачей, файлов и позволяющие пересылать информацию большого объема, (не обязательно текстовую, но и графическую);

·  серверы печати (или принт-серверы), служащие для включения в состав сети принтера, доступного для использования пользователям со всех рабочих станций сети, в NetWare – служебная программа (или специализированный микроконтроллер) для вывода заданий из очередей на принтеры;

·  коммуникационные (связные) серверы, предназначенные для управления и установления связи между компьютерами в сети, обеспечивает разделяемый доступ к коммуникационным средствам – модемам, портам Х.25 и т. д.;

·  почтовые серверы в системе электронной почты, служащие для пересылки и приема электронных писем;

·  архивные серверы, предназначенные для архивирования данных и резервного копирования информации в больших многосерверных сетях;

·  Web-серверы под управлением определенных ОС (для Microsoft Internet Information Server - Windows NT/2000, для Apache – Linux или Unix);

·  серверы удаленного доступа, которые предоставляют коммутируемое соединение;

·  прокси-серверы служат промежуточным звеном между рабочими станциями пользователей и Internet;

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

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

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

Администрирование.

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

Управление безопасностью.

Сети клиент-сервер обладают большей безопасностью, чем одноранговые. Чтобы зарегистрироваться в сети, пользователь должен знать учетную запись и пароль, созданные на сервере. Когда пользователь успешно зарегистрировался, он получает доступ ко всем ресурсам, на которые ему выделили право. При этом от него не требуется помнить многочисленные имена и пароли для разных компьютеров, как в рабочей группе Windows NT Workstation или Windows 2000 Professional. Сеть клиент-сервер предоставляет пользователю доступ к ресурсам на основе аутентификации пользователя и прав доступа.

Информационные системы созданные на основе классической архитектуры клиент/сервер (называемые двухзвенными системами или системами с "толстым" клиентом) состоят из сервера баз данных (содержащего сгенерированные тем или иным способом таблицы, индексы, базы данных и другие объекты) и одного или нескольких клиентских приложений. Эти приложения являются достаточно сложным программным продуктом и нуждаются в полнофункциональной ОС (например Windows 2000 Professional). В ряде случаев клиентские приложения для доступа к источникам данных используют вызовы функций прикладных интерфейсов серверных СУБД, в частности библиотеки, например Borland Database Engin (BDE).

Соответственно подобное клиентское приложение требует наличия на компьютере конечного пользователя клиентской части используемой серверной СУБД (наличия лицензии на ее использование) и присутствия в оперативной памяти набора динамически загружаемых библиотек как из клиентской части, так и из BDE (либо иной заменяющей ее библиотеки), таких, как драйверы баз данных, библиотеки. Это усложняет технические требования, предъявляемые к аппаратной части клиентской рабочей станции, и в конечном итоге приводит к удорожанию всей системы в целом.

Выходом из этой ситуации является создание систем с так называемым "тонким" клиентом, в частности, с клиентом, не содержащим в своем составе BDE и клиентскую часть серверной СУБД. В этом случае функциональность, связанная с доступом к данным (а нередко и какая-либо иная функциональность), возлагается на другое приложение, называемое обычно сервером приложений, и являющееся клиентом серверной СУБД. В свою очередь, клиентские приложения обращаются не непосредственно к серверной СУБД, а к серверу приложений, являющемуся для них источником данных, при этом собственно клиентская часть серверной СУБД и библиотеки типа BDE на рабочей станции, где используется такое клиентское приложение, присутствовать не обязаны. Вместо них используется одна-единственная динамически загружаемая библиотека. Таким образом, созданная информационная система становится трехзвенной, а сервер приложений является средним звеном в цепи "тонкий клиент - сервер приложений - сервер баз данных". Клиентские операционные системы в сетях с выделенными серверами обычно освобождаются от серверных функций, что значительно упрощает их организацию. Разработчики клиентских ОС уделяют основное внимание пользовательскому интерфейсу и клиентским частям сетевых служб. Наиболее простые клиентские ОС поддерживают только базовые сетевые службы, обычно файловую и службу печати. В то же время существуют так называемые универсальные клиенты, которые поддерживают широкий набор клиентских частей, позволяющих им работать практически со всеми серверами сети. Многие компании, разрабатывающие сетевые ОС, выпускают две версии одной и той же операционной системы. Одна версия предназначена для работы в качестве серверной ОС, а другая — для работы на клиентской машине. Эти версии чаще всего основаны на одном и том же базовом коде, но отличаются набором служб и утилит, а также параметрами конфигурации, в том числе устанавливаемыми по умолчанию и не поддающимися изменению. Например, операционная система Windows NT выпускалась в версии для рабочей станции — Windows NT Workstation — и в версии для выделенного сервера — Windows NT Server. Оба эти варианта операционной системы включают клиентские и серверные части многих сетевых служб. Так, ОС Windows NT Workstation, кроме выполнения функций сетевого клиента, может предоставлять сетевым пользователям файловый сервис, сервисы печати, удаленного доступа и другие, а, следовательно, может служить основой для одноранговой сети. С другой стороны, ОС Windows NT Server содержит все необходимые средства, которые позволяют задействовать компьютер в качестве клиентской рабочей станции. Под управлением ОС Windows NT Server локально запускаются прикладные программы, которые могут потребовать выполнения клиентских функций ОС при появлении запросов к ресурсам других компьютеров сети. Windows NT Server имеет такой же развитый графический интерфейс, как и Windows NT Workstation, что позволяет с равным успехом применять эти ОС для интерактивной работы пользователя или администратора. Однако версия Windows NT Server имеет больше возможностей для предоставления ресурсов своего компьютера другим пользователям сети, так как может выполнять более широкий набор функций, поддерживает большее количество одновременных соединений с клиентами, реализует централизованное управление сетью, имеет более развитые средства защиты. Поэтому рекомендуется применять Windows NT Server в качестве ОС для выделенных серверов, а не клиентских компьютеров.

№42. Основные принципы построения систем ввода/вывода.

Функционирование любой вычислительной системы обычно сводится к выполнению двух видов работы: обработке информации и операций по осуществлению ее ввода-вывода. Содержание понятий «обработка информации» и «операции ввода-вывода» зависит от того, с какой точки зрения мы смотрим на них. С точки зрения программиста, под «обработкой информации» понимается выполнение команд процессора над данными, лежащими в памяти независимо от уровня иерархии – в регистрах, кэше, оперативной или вторичной памяти. Под «операциями ввода-вывода» программист понимает обмен данными между памятью и устройствами, внешними по отношению к памяти и процессору, такими как магнитные ленты, диски, монитор, клавиатура, таймер. С точки зрения операционной системы «обработкой информации» являются только операции, совершаемые процессором над данными, находящимися в памяти на уровне иерархии не ниже, чем оперативная память. Все остальное относится к «операциям ввода-вывода». Чтобы выполнять операции над данными, временно расположенными во вторичной памяти, операционная система, сначала производит их подкачку в оперативную память, и лишь затем процессор совершает необходимые действия.

Данная лекция будет посвящена второму виду работы вычислительной системы – операциям ввода-вывода. Мы разберем, что происходит в компьютере при выполнении операций ввода-вывода, и как операционная система управляет их выполнением. При этом для простоты будем считать, что объем оперативной памяти в вычислительной системе достаточно большой, т. е. все процессы полностью располагаются в оперативной памяти, и поэтому понятие «операция ввода-вывода» с точки зрения операционной системы и с точки зрения пользователя означает одно и то же. Такое предположение не снижает общности нашего рассмотрения, так как подкачка информации из вторичной памяти в оперативную память и обратно обычно строится по тому же принципу, что и все операции ввода-вывода.

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

Физические принципы организации ввода-вывода

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4