Рис Физический и логический обмен данными по сети 21 Рис Ахитектура процессов в распределенных системах
Вид материала | Документы |
- 7 Гробница и зодиак Сети I на рис 22 и рис. Ц31 представлен еще один зодиак того, 300.69kb.
- Для того чтобы проверить соединение с Интернет необходимо нажать на кнопку (см рис., 28.68kb.
- Важный параллелизм между русью-ордой и "западно-европейскими" габсбургами-новгородцами, 634.16kb.
- Урок информатики. Тема урока: Локальные и глобальные компьютерные сети. Обмен данными, 10.5kb.
- И. Д. Салмин московский инженерно-физический институт (государственный университет), 24.9kb.
- С. Н. Лукин Краткое практическое руководство, 296.48kb.
- Эксперимент – судья теории канарёв, 132.05kb.
- Рис. Сферы взаимодействия психики и личности (Управляющей психики) Рис., 2.3kb.
- Информационные услуги сети Интернет Ресурс, 111.01kb.
- При хронологическом сдвиге на 1800 лет, 684.4kb.
1.1 Место технологий РВС 5
1.1 Место технологий РВС 5
1.2 Немного истории 5
1.2 Немного истории 5
1.3 Отрасли ИТ непосредственно относящиеся и близкие к РВС 7
1.3 Отрасли ИТ непосредственно относящиеся и близкие к РВС 7
1.4 Международные проекты распределенного поиска в массивах данных 9
1.4 Международные проекты распределенного поиска в массивах данных 9
Рис.1. Понятие хоста (узла РВС) 16
1.5 Процессы (уточняет понятие программная компонента, приложение) 16
1.5 Процессы (уточняет понятие программная компонента, приложение) 16
1.6 Сетевые ОС 18
1.6 Сетевые ОС 18
Рис.2. Слои программного обеспечения компьютерной системы 18
1.7 Необходимые сведения об уровнях сетевой архитектуры 20
1.7 Необходимые сведения об уровнях сетевой архитектуры 20
Рис.3. Физический и логический обмен данными по сети 21
Рис.4. Ахитектура процессов в распределенных системах. 25
Рис.5. Основные элементы распределенной системы. 26
2.1 Синхронный, односторонний и асинхронный (отложенный вызов) 27
2.1 Синхронный, односторонний и асинхронный (отложенный вызов) 27
Рис.6. Синхронный (блокирующий) вызов 27
Рис.7. Односторонний вызов 27
Рис.8. Асинхронный (отложенный) вызов 28
2.2 Основные понятия OOA 29
2.2 Основные понятия OOA 29
2.2.1 Типы, наследование, объекты (адресация объектов), заявки, исключения 29
2.2.1 Типы, наследование, объекты (адресация объектов), заявки, исключения 29
2.2.2 Объекты, имеющие состояние 30
2.2.2 Объекты, имеющие состояние 30
2.2.3 Составные Типы данных 30
2.2.3 Составные Типы данных 30
2.2.4 Адресация объектов 31
2.2.4 Адресация объектов 31
2.3 CORBA (Common Object Request Broker Arch.) 32
2.3 CORBA (Common Object Request Broker Arch.) 32
2.3.1 Фазы жизненного цикла информационных технологий на примере CORBA 32
2.3.1 Фазы жизненного цикла информационных технологий на примере CORBA 32
2.3.2 Знакомство с IDL 35
2.3.2 Знакомство с IDL 35
2.3.3 Архитектура CORRBA 35
2.3.3 Архитектура CORRBA 35
Рис.9. Основные элементы распределенной системы в технологии CORBA. 36
2.4 Сравнение централизованных и децентрализованных РВС 40
2.4 Сравнение централизованных и децентрализованных РВС 40
Рис.10. Требования «прозрачности» в РВС (Эммерих). 40
2.5 «Прозрачность доступа» на примере проблемы Big- и Little-endian 41
2.5 «Прозрачность доступа» на примере проблемы Big- и Little-endian 41
Рис.11. Big/Little Endians 42
2.5.1 Подробнее об IDL. 42
2.5.1 Подробнее об IDL. 42
2.6 Объектная ссылка, устройство POA, протокол GIOP 46
2.6 Объектная ссылка, устройство POA, протокол GIOP 46
2.6.1 IOR 47
2.6.1 IOR 47
2.7 GIOP 49
2.7 GIOP 49
2.8 Репозиторий типов (Interface Repository) 61
2.8 Репозиторий типов (Interface Repository) 61
Рис.12. Пример отображения содержимого Репозитория Интерфейсов (IR браузер, т.н. Mao’s CORBA Brawser) 61
2.9 Message Oriented M/w (Event / Notification Service) 62
2.9 Message Oriented M/w (Event / Notification Service) 62
Типовые элементы распределенной системы 64
3.1 Проектирование интерфейсов на языке IDL. 73
3.1 Проектирование интерфейсов на языке IDL. 73
Рис.13. Пример описания интерфейса на языке IDL. 74
1.1.1. Использование предкомпилятора IDL 75
1.1.1. Использование предкомпилятора IDL 75
Рис. 1. Результат работы предкомпилятора JavaIDL 76
Рис. 2. Пример отображения интерфейса IDL на язык Java. 78
1.1.2. Реализация серванта и клиентской части приложения на уровне исходных кодов 80
1.1.2. Реализация серванта и клиентской части приложения на уровне исходных кодов 80
Рис.14. Простейший пример фрагмента клиентского кода 81
1.1.3. Компиляция исходных кодов 82
1.1.3. Компиляция исходных кодов 82
Рис.15. Схема работы CORBA Event Service 86
- Тема 1. Введение и предварительная характеристика распределенных вычислений
Этот курс имеет, в первую очередь, обзорный характер. Его основное назначение - сориентировать слушателей в становящейся все более актуальной (в последнее десятилетие) тематике разработки и практического использования различных технологий создания Распределенных Вычислительных Систем (РВС). Часто еще говорят РИВС (… информационно-вычислительных …).
Вообще говоря, вычисления в любой любой ВС Обработка и обмен данными.
Так складывается, что сотрудникам и руководителям информационных подразделений нужно уметь ориентироваться в большом наборе современных систем сетевых вычислений (параллельных, распределенных, пиринговых, Grid и т.п.)
Основное внимание уделяется не деталям отдельных технологий, а общим принципам их использования и критериям выбора конкретной технологии для решения типовых проблем создания распределенных информационно-вычислительных систем.
Моя цель - не научить программированию (НЕ КАК ДЕЛАТЬ), а рассказать о том, как это можно сделать.
Говоря об общих принципах, я имею ввиду
- характерные области применения (варианты использования) РВС;
- общие принципы программной архитектуры РВС:
- общие правила организации взаимодействия элементов РВС.
- типовые элементы РВС, выполненных по существующим стандартам;
- общие правила организации взаимодействия элементов РВС.
- характерные этапы жизненного цикла РВС
- проектирования
- программной реализации
- развертывания (установки и запуска).
- проектирования
Интуитивно понятно, что когда говорят об РВС, то имеют ввиду координированную работу нескольких компьютерах, связанных сетью. Но это слишком общее определение. Оно касается ВСЕХ сетевых технологий.
Например, вы включаете компьютер, подключенный к сети, и он не имеет фиксированного сетевого (IP) адреса. Незаметно для вас, специальная программа DHCP client находит в сети специальный DHCP сервер, который выдает вам временный IP-адрес, без которого нормальная работа в сети невозможна. Означает ли это, что любой компьютер в сети является элементом РВС?
Или, когда вы ходите по Интернету ваш браузер (клиентская программа) периодически обращается к WEB-серверам за очередной порцией HTML-разметки, чтобы отобразить текст и картинки в окне браузера – является ли это примером работы распределенной системы. А когда забираете/отправляете почту ? (Скорее нет.) А вот работа система обмена сообщениями ICQ – уже больше похожа на РВС (это можно считать наиболее распространенным примером РВС).
Какими объективными причинами вызвана необходимость РВС.
- Желание полнее использовать вычислительные ресурсы уже фактически связанные сетью.
- Организационная и территориальная распределенность коллективов при совместной работе над общей проблемой (в проектировании, в обработке данных экспериментов, при кооперативном использовании своих ресурсов).
- Повышение надежности систем за счет «прозрачной» (незаметной для пользователей) замены одних ресурсов другими однотипными (при отказах, при регламентных работах, и пр.)
- Расширение числа клиентской базы в результате предоставления возможностей удаленного доступа к своим разработкам (дистанционное обучение, сетевые игры).
- Место технологий РВС
«между» «интернетом» и «кластерами».
Ясно, что разговор об РВС был бы невозможен без возникновения компьютерных сетей.
- Немного истории
37 лет назад два компьютера впервые обменялись данными в режиме онлайн.
2 сентября 1969 года студенты из Калифорнийского университета соединили два компьютера пятиметровым кабелем и отправили по нему бессмысленный набор данных. Считается, что это была первая передача информации по компьютерной сети. Именно из этого эксперимента спустя годы появился современный интернет. First ARPANET IMP log - a record of the first message ever sent over the ARPANET; it took place at 10:30PM on October 29, 1969. (wikipedia).
Через несколько месяцев к их "сети" подключились еще два узла. Первая передача информации по этой сети между Калифорнийским и Стенфордским университетами произошла 21 ноября 1969 года. Это еще один, столь же условный, день рождения интернета.
Историки по сей день не могут решить, когда именно зародилась глобальная информационная сеть. Некоторые считают, что историю интернета следует начинать с 1962 или даже с 1958 года, другие называют 1969 год, третьи полагают, что интернет появился лишь в 1983 году. Верно одно - в эти годы происходили события, существенно важные для истории интернета.
Самой первой датой, которую обычно указывают, является 1958 год. Именно тогда по указанию президента США Дуайта Эйзенхауэра было создано агентство исследовательских проектов Министерства обороны США (Advanced Research Projects Agency of the U.S. Department of Defense, ARPA). ARPA была необычной организацией. В ней работало всего 150 человек. Задача ученых заключалась в том, чтобы распределить между различными университетами и лабораториями годовой бюджет организации, который составлял несколько миллиардов долларов.
В 1972 году появилось первое приложение - электронная почта, автором которой стал Рей Томплисон. Более чем на десять последующих лет электронная почта стала крупнейшим сетевым приложением. Для своего времени она была исключительно мощным катализатором роста всех видов потоков данных.
Термин "Internet" для обозначения сети был введен Винтоном Серфом в 1974 году. Предложенная им идея объединения различных сетей в глобальную информационную структуру - International Network, Интернет - основывалась на возможности существования множества независимых сетей произвольной архитектуры. Ядром этого объединения должна была стать ARPANET - пионерская сеть с пакетной коммуникацией
Для создания такого протокола была образована Международная сетевая рабочая группа, которую возглавил Винтон Серф. В результате в 1975 году появился Протокол управления передачей (Transmission Control Protocol - ТСР-протокол).
Настоящий расцвет интернета начался в 1992 году. Однако до поры до времени его ресурсы был доступны при помощи программного обеспечения, ориентированного лишь на пересылку файлов и неформатированного текста. В конце концов физикам Тиму Бернес-Ли и Роберту Кайо это наскучило. Они решили разработаться инфраструктуру, позволяющую братьям-физикам по всей Европе обмениваться результатами исследований через интернет в виде привычного для научных работников отформатированного и иллюстрированного текста, включающего ссылки на другие публикации.
Работая в качестве технического консультанта в Европейской лаборатории физики частиц в Женеве, Бернерс-Ли написал программу Eniquire, которая стала прообразом будущей WWW (World Wide Web, Всемирной паутины). Для воплощения в жизнь идеи форматированного текста Бернес-Ли предложил концепцию языка HTML (Hyper Text Markup Language, язык разметки гипертекста), позволившего создавать интернет-страницы.
В «популярном» общественном сознании Веб == Интернет. Более «продвинутые скажут,что Beб == Серверы + броузеры + Гипертекст + почта + аська + ... (набор популярных программ)
Не собираюсь спорить.
Я просто предлагаю договориться между нами о терминах.
Интернет - программно-аппаратная среда обеспечивающая взаимодействие между компьютерами. Интернет - коммуникационная среда ПРЕДНАЗНАЧЕННАЯ для обмена данными между хостами (узлами).
Более точно, совокупность аппаратных устройств, служебного ПО поддерживающего целостность системы (поддержка адресов, маршрутизация, передача данных между узлами и устройствами),
а также прикладных программ конечных пользователей (браузеры, почтовые клиенты, и т.п.) и разработчиков софта и контента (серверы, их поддержка и наполнение полезным содержимым).
В этой вводной лекции уместно указать сложившееся сегменты (отрасли) ИТ имеющие непосредственное отношение к теме РВС (что не означает, что все ЭТО есть РВС).
- Отрасли ИТ непосредственно относящиеся и близкие к РВС
Исторически первые сетевые приложения
Собственно в те времена и возникло понятие Клиент-Серверной архитектуры, развитие которой является одной из основных причин зарождения современной концепции РВС.
Тогда – 2-звенной затем 3-х звенной (three-tier mode) и в дальнейшем многозвенной (multi-tier architecture)
Telnet (клиент – сервер )
FTP программа передачи файлов по сети (uploading/downloading)
Почта (почтовый клиент – SMTP Сервер и POP сервер)
Первые примитивные браузеры и Web-серверы (браузер – клиентское приложение
Современные суперкомпьютеры и кластеры
Многопроцессорные вычислительные комплексы (Parr. VM (Memory), MPI (CH)
Параллельные вычисления НЕ = РВ
Почтенное семейство WEB-технологий
Практически все современные широко используемые новостные сайты, почтовые сайты, e-магазины.
Зарождающийся на глазах «новый мир Google». Позднее – подробнее. А пока достаточносказать, что широко известный термин Web-сервисы – одна из технологий РВС.
Системы обмена сообщениями
IMS (ICQ, Google Talk)
Пиринговые системы. Файлообменные сети.
Системы управления предприятием
Бухгалтерия, управление запасами (логистика), работа с клиентами, управление производством
Системы поддержки проектирования сложных технических систем
Когда необходимо организовать совместную работу групп специалистов разделенных территориально и организационно. Это характерно для всех больших международных технических и научных проектов.
От создания Airbus (Франция, Германия, Италия, Голландия + Россия)
Проект МКС
Обработка больших массивов данных
Системы распределенного обучения
Grid
Google OS.
- Международные проекты распределенного поиска в массивах данных
SETI (Search for Extra-Terrestrial Intelligence)
SETI@home is a highly successful distributed computing project that was launched by U.C. Berkeley in May 1999, and is heavily sponsored by The Planetary Society. Any individual can become involved with SETI research by downloading and running the SETI@home software package, which then runs signal analysis on a "work unit" of data recorded from the central 2.5 MHz wide band of the SERENDIP IV instrument. The results are then automatically reported back to UC Berkeley. Over 5 million computer users in more than 200 countries have signed up for SETI@home and have collectively contributed over 19 миллиардов часов of computer processing time.
BOINC (Berkeley Open Infrastructure for Network Computing)
BOINC - унифицированная архитектура распределенной обработки больших массивов данных на домашних компьютерах за счет использования «холостой» работы процессоров. Создана в University of California, Berkeley.
Изначально – была разработана для SETI@home, но применяется but intended to be useful to fields beyond SETI. This software platform is open in that it is free and open source software released under the GNU Lesser General Public License. Currently BOINC is being developed by a team based at the University of California, Berkeley led by David Anderson, the project director of SETI@home — a project which uses this software. As a "quasi-supercomputing" platform BOINC has over 375,000 active computers worldwide processing on average 374 TFLOPS as of August 8, 2006[1]
Например, используется для обработки данных астрономических наблюдений за быстро вращающимися нейтронными звездами в попытках обнаружить гравитационные волны.
Great Internet Mersenne Prime Search (GIMPS)
Числа Мерсенна (dia.org/wiki/Числа_Мерсенна)
Mn = 2n – 1.
Основной интерес представляют числа Мерсенна
Числа носят имя французского математика Марена Мерсенна, жившего в начале XVII века.
Последовательность чисел Мерсенна начинается так:
1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, ... (
Чаще - числами Мерсенна называют числа Mp с простыми индексами p. Эта последовательность начинается так:
3, 7, 31, 127, 2047, 8191, 131071, 524287, 8388607
Свойства
- Любой делитель числа Mp для простого p имеет вид 2pk + 1, где k — целое число. (Это прямое следствие малой теоремы Ферма)
- Эйлер доказал, что каждое чётное совершенное число имеет вид 2p - 1Mp, где число Мерсенна Mp является простым.
Чи́сла Мерсенна получили известность в связи с эффективным критерием простоты Люка-Лемера, благодаря которому простые чи́сла Мерсенна давно удерживают лидерство как самые больши́е известные простые чи́сла (см. ссылки).
Простые числа – важное «сырье» для современных алгоритмов шифрования и цифровой подписи (RSA, Диффи-Хелмана и проч.)
Последовательность простых чисел Мерсенна и их показателей начинается так:
Mp: 3, 7, 31, 127, 8191, 131071, 524287, 2147483647, 2305843009213693951, 618970019642690137449562111, ..
p: 2, 3, 5, 7, 13, 17, 19, 31, 61, 89, ... (Последовательность A000043 из Энциклопедии целочисленных последовательностей)
На данный момент самым большим (всего 43-им !!!) известным простым числом (найденным в рамках проекта GIMPS) является число Мерсенна M30.402.457 = 230.402.457 − 1, найденное в декабре 2005 го́да Всего известно 43 простых числа́ Мерсенна, причём порядковые номера с уверенностью установлены только у первых 39-ти (т.е. – возможно что какие-то числа были пропущены).
Распределенное суммирование
Рассмотрим задачу вычисления суммы N чисел {x1, x2, x3, …, xN} . На обычном «однопроцессорном» компьютере эта задача требует выполнения N-1 операций сложения.
// x – определен выше как массив чисел float[] x; x.length = N
float res;
for (int i = 0, res = 0.; i < N; i++)
res += x[i];
N-1 операция, время - *(N-1)
Предположим, что в нашем распоряжении имеется достаточное количество «сумматоров», способных выполнять операцию сложения двух чисел, и доступных для «удаленного» вызова таких операций.
Процедура вычисления суммы в таком случае может быть записана следующим образом
public static float DistrSum (float[] x, CalcOperations[] calcs) {
int N = x.length; // Number of summands
// ResHolder[] xHolder;
while (N > 1) {
int n;
// xHolder = new ResHolder[N/2];
for (n = 0; n < N/2; n++) { // храним промежуточные значения сумм в том
// же массиве
x[n] = calcs[n].add(x[2*n], x[2*n+1]);
// xHolder[n] = calcs[n].ami_add(x[2*n], x[2*n+1]); // асинхронный вызов функции add
}
// Цикл синхронизации (требует асинхронного вызова команд калькулятора)
// for (n = 0; n < N/2; n++)
// x[n] = xHolder[n].getValue();
// Или
//int k = -1;
//while (k < N/2) {
// for (n = 0; n < N/2; n++)
// if (xHolder[n].poll()) {
// x[n] = xHolder[n].getValue();
k++;
//}
//};
if ( 2*n < N) {// N – нечетное вида 2*n + 1
x[n] = x[N-1];
// x[n] = xHolder[N-1].getValue();
n++;
}
N = n;
}
return x[0];
}
// …
public interface CalcOperations
{
float add(int a, int b);
float sub(int a, int b);
float mult(int a, int b);
float div(int a, int b) throws DivisionByZero;
}
Пусть S(n) – трудоемкость для n элементов массива.
S(1) = 0;
S(2) = 1; (X1+X2)
S(3) = 2 ( (X1+X2) + X3).
S(4) = 3 ( (X1+X2) + (X3+X4))
…
S(n) <= S([n/2]) + 1
Кормен, Райвест, Штайн. Алгоритмы Построение и анализ.
S(N) оценивается как C*log2(N). Общее время ~ log2(N)**(1+t), где t – время передачи данных в долях от времени выполнения одной операции.
Вопрос – почему имеет смысл группировать попарно, а не, скажем по-трое ?
Технические возможности, предлагаемые ИТ, оказали и продолжают оказывать огромное влияние на развитие теории и «практики» вычислительных алгоритмов. Следующие два примера
Решение задачи Коши с помощью формулы Тейлора.
Бахвалов, Жидков, Кобельков. Численные Методы.
Будем рассматривать задачу Коши для системы ОДУ, в которой правая часть не зависит явно от времени:
Точное значение решения в момент времени может быть представлено в виде ряда Тейлора (заметьте, что речь идет о вычислении функции синтеза общего решения X(xo,t):
где
Выражения для вычисления производных, входящих в формулу (10), имеют вид:
Рекурсивное вычисление производных осуществляется символьно, и полученные символьные выражения хранятся для последующего использования, тем самым хранится информация о целом пучке траекторий. Эти символьные выражения используются при решении следующих задач, которые могут быть оформлены как отдельные вычислительные процедуры:
- получение траектории, исходящей из точки (). Для этого достаточно взять в качестве коэффициентов разложения в формуле (10) значения .
- оценка близости двух различных траекторий;
- оценка точности полученного приближенного решения;
- оценка радиуса сходимости ряда.
Отметим, что существует большой класс задач, в которых символьное дифференцирование правых частей выполняется достаточно просто (например, когда правые части являются многочленами n переменных или дробно-рациональными функциями). Также отметим, что вычисления могут быть эффективно распараллелены на 2-х уровнях:
- для каждого производные компоненты могут вычисляться независимо от других :
- вычисление может вестись независимо для всех
Решение системы ОДУ.
Для того, чтобы дать (более или менее) формальное определение мне понадобится ввести некоторое количество базовых понятий, без чего провести классификацию всего существующего зоопарка сетевых технологий – очень трудно.
Кто является элементом РВС компьютеры, подключенные к сети (хосты) или программы, запущенные на хостах? Что такое программа (исполняемый файл, или нечто иное) ? Чем распределенное приложение отличается от «обычной» монолитной программы, которые вы привыкли запускать.
Например в книге «Конструирование распределенных объектов» Эммерих, (2002) дается следующее определение: РВС состоит из компонентов, которые расположены на объединенных сетью хостах и взаимодействуют по сети через унифицированное ППО таким образом, что все это внешне выглядит единым вычислительным средством.
Здесь много непонятных слов. В дальнейшем будет дано разъяснение и приведено несколько иное уточненное определение.
- Понятие хоста (узла РВС)
В итоге РВС может быть представлена как совокупность таких пунктирных блоков, связанных сетью. НАРИСОВАТЬ.
Остановимся пока на этой картинке и уточним несколько важных понятий, без чего трудно перейти к уточнению этого определения. Кто такие эти сетевые ОС, что такое процессы, как они взаимодействуют с OC, что такое стек сетевых протоколов…
- Процессы (уточняет понятие программная компонента, приложение)
Например стандарт POSIX (Portable Operating System Interface for *niX) дает следующее определение процесса. Процесс – это адресное пространство вместе с выполняемыми в нем потоками управления, а также системными ресурсами, которые этим потокам требуются.
Современные многозадачные ОС, обеспечивают «одновременное» выполнение нескольких самых разных процессов на одной машине.
Часто, для простоты, предлагается рассматривать процесс как абстракцию, характеризующую программу во время выполнения. Это не совсем корректно. Понятие процесса характеризует некоторую совокупность набора исполняющихся команд, ассоциированных с ним ресурсов (выделенная для исполнения память или адресное пространство, стеки, используемые файлы и устройства ввода-вывода и т. д.) и текущего момента его выполнения (значения регистров, программного счетчика, состояние стека и значения переменных), находящуюся под управлением операционной системы.
Не существует взаимно-однозначного соответствия между процессами и программами, обрабатываемыми вычислительными системами.
Как будет показано далее, в некоторых операционных системах для работы определенных программ может организовываться более одного процесса или один и тот же процесс может исполнять последовательно несколько различных программ. Более того, даже в случае обработки только одной программы в рамках одного процесса нельзя считать, что процесс представляет собой просто динамическое описание кода исполняемого файла, данных и выделенных для них ресурсов. Процесс находится под управлением операционной системы, поэтому в нем может выполняться часть кода ее ядра (не находящегося в исполняемом файле!), как в случаях, специально запланированных авторами программы (например, при использовании системных вызовов), так и в непредусмотренных ситуациях (например, при обработке внешних прерываний).
Процессы = ?? Компоненты, приложения. Когда программа запущена – синонимы.
Пока нет – компоненты, это набор файлов – результатов компиляции
W - *.exe, *.dll *nix – исп., *.so Java - *.class
Процессы рождаются и «умирают» по командам пользователей или OC. TaskManager в Windows; команда ps в *nix.
Процессы могут быть многопоточными (multi-threaded), но и в этом случае существует некоторый главный (порождающий) поток. Указать на пунктирный характер выполнения потоков (ограниченные аппаратные ресурсы выделяются отдельным потокам отдельными интервалами времени). Управление выполнением процессов и потоков – прерогатива ОС.
Современный GUI – кольца обработчиков событий, вызванных действиями пользователя и изменениями состояния внутренних переменных процесса.
Для наших целей удобно представить следующую логическую структуру процесса в ходе его выполнения (блоки, выделяемые процессу в оперативной памяти)
исполняемый код (возможна динамическая подгрузка фрагментов кода из DLL или SO)
куча (heap) – область памяти, где хранятся данные переменные;
стек – специальная область памяти, используемая при вызове процедур.
НАРИСОВАТЬ
- Сетевые ОС
Современная ОС – жизненная среда обитания всех процессов запущенных на машине.
- Слои программного обеспечения компьютерной системы
Операционная система как виртуальная машина (абстракция диска, файловой системы, памяти и пр. аппаратных ресурсов)
Операционная система как менеджер ресурсов (управляет доступом приложений >> ресурсам)
Операционная система как защитник пользователей и программ (друг от друга).
Операционная система как постоянно функционирующее ядро. Это программа, постоянно работающая на компьютере и взаимодействующая со всеми прикладными программами.
Можно выделить шесть основных функций, которые выполняли классические операционные системы в процессе эволюции:
- Планирование заданий и использования процессора (обеспечение многозадачности).
- Обеспечение программ средствами коммуникации и синхронизации (обмен данными между программами в пределах одного хоста).
- Управление памятью.
- Управление файловой системой.
- Управление вводом-выводом (включая отправку/получение данных из сети!) .
- Обеспечение безопасности
Если исключить архитектуру мэйнфреймов, то можно провести следующую (условную) классификацию сетевых многозадачных OC.
Антимонопольный процесс против American Telephone and Telegraph (AT&T) в 1949 году запретил AT&T продажей каких бы то ни было компьютерных решений, и рекомендовалось ограничиться телефоном и телеграфом. Именно поэтому исследовательское подразделение AT&T, Bell Labs, с тех пор прибыли само по себе не приносило: все создаваемые компьютерные технологии свободно лицензировались всем желающим и созданная ею OC Unix (идейный прародитель всех современных широко распространенных OC)
Многие из лицензиатов (в основном, конечно же, университеты) создавали слегка или сильно модифицированные версии для собственных нужд.
Семейство *nix (AT&T + Sun Microsystems) | Linux | Windows | |
Unix (~1970) (Belle Labs AT&T) *nix – различные варианты модификации открытого исходного кода. (80–90 Unix Wars) | Начиная с 90-x | 80 – MS-DOS (НЕ многозадачная, и очень слабо сетевая Win95 – фактически первая более или менее полноценная сетевая OC от MS . | |
*nix | Sun OS (Solaris) Java !!! |
Одной из "веток" стал разработанный в Беркли "берклиевский комплект ПО" (Berkeley Software Distribution, BSD), по прежнему распространявшийся свободно и с исходниками. Возможно, именно этот факт повлиял на DARPA при выборе - кому бы дать денег для разработки протокола TCP/IP. Дали. Разработали (4.2BSD, август 1983 года). Этот фактор (совместно со многими другими) повлиял на огромную популярность и быстрое распространение BSD. Ну а Билл Джой, с которого начиналась эта версия Unix, тем временем создал собственную фирму под названием "Солнышко" (Sun Microsystems). Сыгравшей огромную роль в развитии концепции РВС
В начале 1980-х годов в результате очередного антимонопольного судебного процесса AT&T была разделена на несколько подразделений, в результате чего у корпорации оказались развязаны руки (в смысле получения прибыли от торговли компьютерами). И вновь - тяжело предположить, как бы сложилась судьба Unix без этого события: с одной стороны, агрессивный маркетинг AT&T способствовал быстрому и эффективному распространению ОС; с другой - новая стратегия лицензирования (без исходного кода) положила начало разделению разработки Unix на несколько разных независимых веток и многолетнему противостоянию этих веток (так называемые unix wars). Это фактически и было причиной того, что Линус Торнвальд начал разрабатывать собственную POSIX *nix систему . Параллельно MS захватила огромный рынок настольных машин.
- Необходимые сведения об уровнях сетевой архитектуры
ссылка скрыта
В сети производится множество операций, обеспечивающих передачу данных от компьютера к компьютеру. Пользователя не интересует, как именно это происходит, ему необходим доступ к приложению или компьютерному ресурсу, расположенному в другом компьютере сети. В действительности же вся передаваемая информация проходит много этапов обработки, проходя через уровни архитектуры сетевой ОС.
Прежде всего, она разбивается на блоки, каждый из которых снабжается управляющей информацией. Полученные блоки оформляются в виде сетевых пакетов,
потом эти пакеты кодируются,
передаются с помощью электрических или световых сигналов по сети в соответствии с выбранным методом доступа,
затем из принятых пакетов вновь восстанавливаются заключенные в них блоки данных, блоки соединяются в данные, которые и становятся доступны другому приложению. Это, конечно, упрощенное описание происходящих процессов.