Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_Распределённые ОС.docx
Скачиваний:
0
Добавлен:
30.09.2026
Размер:
1 Мб
Скачать
☆

3 Лекция (15.02.2024)

Я Вам сегодня буду рассказывать про синхронизацию процессов. У нас есть распределённая система, в центре композиции которой находится switch, используется 568 стандарт, топология – звезда.

Главным аппаратом синхронизации процесса является Fred.

Если у нас есть просто shared memory, то ОС не даёт процессам друг на друга наползти и использовать чужие буфера.

Но есть процессы, которые работают не под ОС. Они сами «разбираются со всем». Такие процессы и есть вся обработка Web’а.

Заполнение буферов происходит при помощи процесса, который называется consumer.

Считывание данных из буферов происходит при помощи процесса, который называется castoma.

Consumer и castoma работают, не обращаясь к ОС. Но в данной ситуации возникают две проблемы: когда надо заполнять буфера и когда надо считывать данные из них? Но они решаемы. В первом случае заполнять буфера надо после того, как они очистились. Во втором случае – когда они заполнились.

Буфера бывают двух видов: fixed size и variable. Fixed size буфера работают медленно, но надёжно. Variable буфера имеют более сложное программирование, но они работают быстрее.

Есть процессы, которые производят параллельные действия (ты туда записывай, я тут считываю). Такие действия относятся к race condition. У каждой ОС race condition делается по-своему.

Поэтому, основным вопросом синхронизации процессов является вопрос работы Fred’ами. Есть также проблема, называемая Critical Section. Проблема заключается в том, что любой процесс, бывает, входит в состояние, когда он сам меняет свои цепочки Pointer’ов. У него изменились параметры, буфера, он произвёл запись и считывание и никто другой не сможет зайти в критическую секцию. За данной процедурой «незахода» будет следить ОС. Это называется mutual exclusion.

А что делать, если ядро попало в критическую секцию и при этом нужно переключиться на другой процесс?

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

4 Лекция (22.02.2024)

В прошлый раз мы с Вами обсуждали синхронизацию процессов и их проблемы. На самом деле, здесь есть ещё пару моментов, на которые нужно обратить внимание:

  1. Проблема синхронной передачи синхронных протоколов, которая требует синхронизации времени и передачи данных за одно и то же время.

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

  3. Вопросы адресации в распределенной системе, включая необходимость логического адреса и номера порта.

  4. Вопросы, связанные с топологией физической сети и сегментацией сети.

  5. Необходимость разобраться с адресами и маршрутами, даже при работе в сегменте коммутатора.

В разных сетевых окружениях используются разные системы адресации, включая IPX, IP и BIAO. Это означает, что в зависимости от окружения может потребоваться использование конкретного метода для определения и использования адресов.

IP-адреса обычно предоставляются операторами связи. Это связано с тем, что операторы связи собирают плату за предоставление услуг связи, включая предоставление IP-адресов.

В 1969 году, в ответ на запуск первого советского спутника в 1957 году, была создана компьютерная сеть ARPANET (Advanced Research Projects Agency Network) министерством обороны США. Целью данной сети была передача данных между различными узлами.

Помимо этого, были созданы первые маршрутизаторы, предназначенные для передачи данных между различными сегментами сети, и роутеры с помощью ПО. Но роутеры из-за создания их с помощью ПО сделало их относительно медленными.

Чтобы решить данную ситуацию, компания Intel внесла свой вклад, создав Daisy Channel, что позволило соединить два адаптера и ускорить передачу данных.

Первые аппаратные роутеры были созданы значительно позже. CISCO начал работу над этим, но столкнулся с проблемами в создании микросхемной базы. Лишь в 90-е годы произошёл прорыв в этом направлении, когда компания IBM продала CISCO свои заводы по производству микросхем. Впоследствии, были введены первые сети коммутации пакетов, что позволило разделить передачу данных на маленькие кусочки и передавать их по отдельности.

В 1972 году Рей Томлинсон создал первую структурированную систему электронной почты для передачи сообщений. Также, в 1972 году был создан протокол TCP, который стал основой для многих других протоколов. В 1983 году была создана совокупность протоколов TCP/IP. Все эти протоколы, включая TCP/IP, были созданы на основе SDLC (технологии IBM 60-х годов).

С 1983 года TCP/IP был включен в состав операционных систем UNIX, что способствовало его распространению.

Также, в 1983 году была создана специальная сеть MilNet (Military Network), которая впоследствии отделилась от ARPANET и до сих пор существует как сеть военных США.

В ответ на растущее количество узлов и сетей была создана система имён DNS (Domain Name System), которая стала основой для именования и идентификации узлов в сети.

К осени 2009 года в интернете было уже 100 тысяч узлов и очень быстрые каналы передачи данных. Появились каналы, которые называются T1 с пропускной способностью 1,5 мб/с.

В 1989-1990 годах было предложено назвать систему передачи данных интернетом. Это было связано с появлением большого количества узлов и быстрой связи между ними.

В 1990 году появился провайдер, который предоставлял услуги подключения к интернету. Он назывался The World.

Бернесс Ли предложил идею о том, что данные, которые раскиданы по 100 000 узлам, не нужно структурировать. Вместо этого были созданы система ссылок (URL), специальный протокол передачи (HTTP) и редактор (HTML) для заполнения данных на этих узлах.

Позднее были созданы специальные точки подключения к интернету, которые называются NAPs (Network Access Points), представляющие собой места, где операторы связи могут подключаться к интернету и первые браузеры, которые могли обращаться к узлам интернета.

Через некоторое время возникла необходимость в системе адресации для этих узлов и в 1992 году было решено использовать протокол IP для адресации.

В 1992 году протокол IP был выбран в качестве основного датаграммного протокола адресации. Это означает, что данные отправляются и забываются, без ожидания подтверждений.

В протоколе IP есть различные поля, такие как версия, опции, данные и другие.

Адресация IP осуществляется с помощью 32-битных адресов, которые назначаются устройствам, имеющим доступ к интернету. Эту адресацию задает специальный центр, называемый InterNIC. Затем эти адреса передаются различным организациям, таким как RIPE в Европе, которые в свою очередь раздают эти IP-адреса провайдерам.

Адреса IP делятся на классы. Класс «А» используется для больших сетей с большим количеством узлов, класс «B» - для средних сетей, класс «C» - для маленьких сетей, а классы «D» и «E» зарезервированы для определенных целей, таких как широковещательные сообщения и специальные нужды.

Существует технология, которая позволяет множеству устройств использовать один общедоступный IP-адрес. Она называется NAT (Network Address Translation).

Некоторые адреса IP зарезервированы для специальных целей. Например, адрес 127.0.0.0 используется для тестирования сетевого соединения на самом устройстве (loopback адрес).

Адрес, состоящий из всех единиц, используется для широковещательных сообщений (broadcast).

Когда компьютер включается и подключается к сети, он должен объявить о своем присутствии, сообщив свой MAC-адрес и IP-адрес. Этот процесс называется инициализацией.

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

Если у станции нет диска, где можно записать адрес, используются специальные протоколы, такие как BOOTP, RARP и DHCP.

Протокол DHCP (Dynamic Host Configuration Protocol) позволяет автоматически назначать IP-адреса устройствам в сети на определенный период времени. Это особенно полезно в больших сетях, где ручное назначение адресов было бы неэффективным.