Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Билет 25

.docx
Скачиваний:
13
Добавлен:
28.06.2021
Размер:
19.71 Кб
Скачать

Билет 25.1 Понятие модульного программирования. Цель и принципы.

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

Модуль характеризуют:

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

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

  3. логическая независимость - результат работы программного модуля зависит только от исходных данных, но не зависит от работы других модулей;

  4. слабые информационные связи с другими программными модулями - обмен информацией между модулями должен быть по возможности минимизирован;

  5. обозримый по размеру и сложности программный элемент.

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

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

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

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

Билет 25.2

Коротко дайте формат сегмента протокола TCP. Что содержится в поле ACK? Коротко дайте суть процедуры трехстороннего рукопожатия. SEQ выбирается ОС случайно? Применяется адаптивный timeout или нет?

Коротко дайте формат сегмента протокола TCP.

Формат сегмента TCP:

· Source port – порт источника – определяет процесс

· Destination port –порт назначения – определяет процесс

· Sequential Number (SEQ) – номер первого байта данных, с которого начинается сообщение

· Acknowledgment (ACK) –номер следующего байта данных, который источник пакета предполагает получить

· Offset– смещение (количество слов в заголовке)

· Flags – флаги:

o URG – адрес, с которого начинается какая-то важная информация

o PUSH – указатель на немедленную отсылку пакета (без буферизации)

o RESET – переустановить соединение (включает URG)

o SYN – начало соединения

o FIN – конец передачи

· Window –размер окна

· CRC – контрольная сумма

· Options– опции (максимальный размер сегмента TCP)

На производительность TCP влияют значения таймаутов. Таймаут связан с временем двойного пробега (RTT). Большой таймаут – большое ожидание при ошибке, Маленький таймаут – ненужная повторная передача. Придумали алгоритм адаптивного таймаута. CISCO использует алгоритм KARN. Суть алгоритма: вычисляется среднее время RTT, умножается на определённый коэффициент (в KARN равен 2). Необходимо не только изменять среднее время таймаута, но и размер окна. В KARN окно меняется до тех пор, пока свободным не станет от 20% до 40% от окна.

Защита от перегрузок – медленный старт – не сразу и не быстро отправлять пакеты в сеть.

Существует также механизм быстрой повторной передачи (не нужен медленный старт).

В Windows реализован механизм задержанного подтверждения.

Самые распространенные ошибки ETHERNET. Утилиты диагностики.

Виды ошибок:

· Jabber – фрейм более 1518 байт. Такие фреймы отклоняются коммутатором и происходит повторная передача фрейма. При этом утилизация канала более 40%. Связана с ошибками в сетевом адаптере.

· Ошибки выравнивания – число бит некратное байту. Связаны с ошибкой драйвера.

· Поздняя коллизия – обнаружение после 64 байт. Обычно возникает из-за дефектного сетевого оборудования.

· Короткий фрейм с правильной CRC. Возникает из-за неправильно заданных параметров.

· Фреймы с неправильной CRC. Если только от одного устройства – проблемы с сетевым адаптером. Если от всех устройств в сегменте – неполадки кабельной системы.

· RUNTS – фрейм менее 48 байт. Нужно разбираться.

· GHOSTS – фрейм более 72 байт с неправильной CRC. Следует отличать от коллизий. Возникают периодически в разных сегментах сети. Сеть работает медленно без видимых причин. Причина – электротехнические проблемы (шумы, наводки)

Продукты для диагностики:

· Fluke Networks (Network Activity)

· Solar Winds

Что содержится в поле ACK?

Номер подтверждения

Acknowledgment Number (ACK SN) (32 бита) — если установлен флаг ACK, то это поле содержит порядковый номер октета, который отправитель данного сегмента желает получить. Это означает, что все предыдущие октеты (с номерами от ISN+1 до ACK-1 включительно) были успешно получены.

Коротко дайте суть процедуры трехстороннего рукопожатия.

Процесс начала сеанса TCP, также называемый «рукопожатие» (англ. handshake), состоящий из трёх шагов:

1. Клиент, который намеревается установить соединение, посылает серверу сегмент с номером последовательности и флагом SYN.

Дальнейший алгоритм:

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

  • В случае успеха сервер посылает клиенту сегмент с номером последовательности и флагами SYN и ACK, и переходит в состояние SYN-RECEIVED;

  • ​В случае неудачи сервер посылает клиенту сегмент с флагом RST.

2. Если клиент получает сегмент с флагом SYN, то он запоминает номер последовательности и посылает сегмент с флагом ACK.

Дальнейший алгоритм:

  • Если он одновременно получает и флаг ACK (что обычно и происходит), то он переходит в состояние ESTABLISHED;

  • Если клиент получает сегмент с флагом RST, то он прекращает попытки соединиться;

  • Если клиент не получает ответа в течение 10 секунд, то он повторяет процесс соединения заново.

3. Если сервер в состоянии SYN-RECEIVED получает сегмент с флагом ACK, то он переходит в состояние ESTABLISHED.

  • В противном случае после тайм-аута он закрывает сокет и переходит в состояние CLOSED.

Процесс называется «трёхэтапным рукопожатием» (англ. three way handshake), так как несмотря на то что возможен процесс установления соединения с использованием четырёх сегментов (SYN в сторону сервера, ACK в сторону клиента, SYN в сторону клиента, ACK в сторону сервера), на практике для экономии времени используется три сегмента.

SEQ выбирается ОС случайно?

Поебень какая-то сорян чувак

Применяется адаптивный Timeout или нет

И здесь тоже поебень какая-то сорян чувак

Соседние файлы в предмете Распределенные операционные системы