1
0
u19-23savkin 2 gadi atpakaļ
vecāks
revīzija
3e785037ea

BIN
ЭАСвЗИ/Лекции/2.5.1200_Управление_режимом_потоков/1.jpg


BIN
ЭАСвЗИ/Лекции/2.5.1200_Управление_режимом_потоков/2.jpg


BIN
ЭАСвЗИ/Лекции/2.5.1200_Управление_режимом_потоков/231.jpg


BIN
ЭАСвЗИ/Лекции/2.5.1200_Управление_режимом_потоков/3.jpg


BIN
ЭАСвЗИ/Лекции/2.5.1200_Управление_режимом_потоков/321.jpg


+ 0 - 30
ЭАСвЗИ/Лекции/2.5.1200_Управление_режимом_потоков/Гончаров Дооклад .txt

@@ -1,30 +0,0 @@
-###2.5.1200 Управление режимом потоков.
-
-##Управление потоком передачи данных (англ. Flow Control) — в компьютерных сетях, механизм, который притормаживает передатчик данных при неготовности приёмника.
-
-![](3.jpg)
-
-#Различают три основных способа:
-*аппаратный, при котором сигналы «готов/занят» передаются по отдельным физическим линиям связи. Наиболее известна такая реализация в интерфейсе RS-232.
-*программный, при котором программный флажок «готов/занят» взводится и сбрасывается вставкой в поток данных специальной уникальной последовательности (XOn/XOff). Применяется в программных драйверах интерфейса RS-232 как альтернатива аппаратному контролю потока в случаях неполного соединительного кабеля.
-*протокольный, при котором программный флажок «готов/занят» взводится и сбрасывается специальными соглашениями в рамках протокола обмена данными. На сегодня является практически единственным применяемым способом контроля потока. Наиболее известный пример — реализация контроля потока в протоколе TCP методом скользящего окна.
-
-##Аппаратный протокол управления потоком RTS/CTS (hardware flow control) использует сигнал CTS, который позволяет остановить передачу данных, если приемник не готов к их приему (рис. 8). Передатчик “выпускает” очередной байт только при включенной линии CTS. Байт, который уже начал передаваться, задержать сигналом CTS невозможно (это гарантирует целостность посылки). Аппаратный протокол обеспечивает самую быструю реакцию передатчика на состояние приемника. Микросхемы асинхронных приемопередатчиков имеют не менее двух регистров в приемной части — сдвигающий, для приема очередной посылки, и хранящий, из которого считывается принятый байт. Это позволяет реализовать обмен по аппаратному протоколу без потери данных.  
-  
-![](1.jpg)  
-  
-#Аппаратный протокол удобно использовать при подключении принтеров и плоттеров, если они его поддерживают. При непосредственном (без модемов) соединении двух компьютеров аппаратный протокол требует перекрестного соединения линий RTS — CTS.
-#При непосредственном соединении у передающего терминала должно быть обеспечено состояние “включено” на линии CTS (соединением собственных линий RTS — CTS), в противном случае передатчик будет “молчать”.
-#Применяемые в IBM PC приемопередатчики 8250/16450/16550 сигнал CTS аппаратно не отрабатывают, а только показывают его состояние в регистре MSR. Реализация протокола RTS/CTS возлагается на драйвер BIOS Int 14h, и называть его “аппаратным” не совсем корректно. Если же программа, пользующаяся COM-портом, взаимодействует с UART на уровне регистров (а не через BIOS), то обработкой сигнала CTS для поддержки данного протокола она занимается сама. Ряд коммуникационных программ позволяет игнорировать сигнал CTS (если не используется модем), и для них не требуется соединение входа CTS с выходом даже своего сигнала RTS. Однако существуют и иные приемопередатчики (например, 8251), в которых сигнал CTS отрабатывается аппаратно. Для них, а также для “честных” программ, использование сигнала CTS на разъемах (а то и на кабелях) обязательно.
-
-##Программный протокол управления потоком XON/XOFF предполагает наличие двунаправленного канала передачи данных. Работает протокол следующим образом: если устройство, принимающее данные, обнаруживает причины, по которым оно не может их дальше принимать, оно по обратному последовательному каналу посылает байт-символ XOFF (13h). Противоположное устройство, приняв этот символ, приостанавливает передачу. Когда принимающее устройство снова становится готовым к приему данных, оно посылает символ XON (11h), приняв который противоположное устройство возобновляет передачу. Время реакции передатчика на изменение состояния приемника по сравнению с аппаратным протоколом увеличивается, по крайней мере, на время передачи символа (XON или XOFF) плюс время реакции программы передатчика на прием символа (рис. 7). Из этого следует, что данные без потерь могут приниматься только приемником, имеющим дополнительный буфер принимаемых данных и сигнализирующим о неготовности заблаговременно (имея в буфере свободное место).
-
-![](2.jpg)  
-  
-#Преимущество программного протокола заключается в отсутствии необходимости передачи управляющих сигналов интерфейса — минимальный кабель для двустороннего обмена может иметь только 3 провода (см. рис. 5, а). Недостатком, помимо обязательного наличия буфера и большего времени реакции (снижающего общую производительность канала из-за ожидания сигнала XON), является сложность реализации полнодуплексного режима обмена. В этом случае из потока принимаемых данных должны выделяться (и обрабатываться) символы управления потоком, что ограничивает набор передаваемых символов.
-
-##Другие значения
-Совокупность средств, необходимых для эффективной и экономичной передачи блоков данных в сети. Целью управления трафиком является равномерное распределение нагрузки по всем сегментам сети. Средства управления трафиком осуществляют:
-*бесперебойную доставку данных адресатам;
-*проверку фактической загрузки каналов и производительности сети;
-*управление очередями.

+ 37 - 0
ЭАСвЗИ/Лекции/2.5.1200_Управление_режимом_потоков/Гончаров доклад.txt

@@ -0,0 +1,37 @@
+##Понятие потока
+
+#Поток (thread) можно определить как часть процесса, включающая управляющую последовательность команд и использующая системные ресурсы этого процесса.
+Существует две основных категории реализации потоков: Пользовательские потоки – потоки, реализуемые через
+специальные библиотеки потоков и работающие в пользовательском пространстве.
+Потоки уровня ядра – потоки, реализуемые через системные вызовы и работающие в пространстве ядра.
+Каждый процесс имеет, как минимум, один поток, при этом самый первый поток, создаваемый при рождении нового процесса, принято называть начальным или главным потоком этого процесса.
+Основное отличие процесса от потока заключается в способе использования системных ресурсов. Дочерний процесс практически независим от родительского, для него системой выделяется отдельное адресное пространство, и он на равных правах с родительским процессом «конкурирует» за процессорное время. При этом можно уничтожить родительский процесс, не затронув дочерний, который может выполняться и после завершения родительского процесса.
+#Первая подсистема потоков в Linux появилась в 1996 году и называлась LinuxThreads, ее автором является Ксавье Лерой (Xavier Leroy). Разработанная им библиотека LinuxThreads была попыткой организовать поддержку потоков в Linux в то время, когда ядро системы еще не предоставляло никаких специальных механизмов для работы с потоками. Позднее разработку потоков для Linux вели сразу две конкурирующие группы – NGPT (New Generation POSIX Threads) и NPTL (Native POSIX Thread Library). В 2002 году группа NGPT
+фактически присоединилась к NPTL и теперь реализация потоков NPTL является стандартом Linux. Подсистема потоков Linux стремится соответствовать требованиям стандартов POSIX, поэтому новые многопоточные приложения Linux должны без проблем компилироваться на новых POSIX-совместимых системах.
+![](231.jpg)
+##Основные функции для работы с потоками
+
+Для работы с потоками используются следующие основные функции:
+*pthread_create – создание потока;
+*pthread_join – блокирование работы вызвавшего функцию процесса или потока в ожидании завершения потока;
+*pthread_cancel – досрочное завершение потока из другого потока или процесса;
+*pthread_exit – завершает поток, код завершения передается функции pthread_join. Данная функция подобна функции exit, однако вызов exit в «основном» процессе программы приведет к завершению всей программы.
+
+##Запуск и завершение потока
+
+Потоки создаются функцией pthread_create, имеющей следующую сигнатуру:
+int pthread_create (pthread_t* tid, pthread_attr_t* attr,
+void*(*function)(void*), void* arg)
+#Данная функция определена в заголовочном файле <pthread.h>. Первый параметр этой функции представляет собой указатель на переменную типа pthread_t, которая служит идентификатором создаваемого потока. Второй параметр – указатель на переменную типа pthread_attr_t – используется для установки атрибутов потока. Третьим параметром функции pthread_create должен быть адрес функции потока. Эта функция играет для потока ту же роль, что функция main для главной программы. Четвертый параметр функции pthread_create имеет тип void*. Этот параметр может использоваться для передачи значения в функцию потока. Вскоре после вызова pthread_create функция потока будет запущена на выполнение параллельно с другими потоками программы.
+![](321.jpg)
+#Функции синхронизации потоков с использованием мьютексов
+
+Для синхронизации потоков с использованием мьютексов используются следующие основные функции:
+*pthread_mutex_init – инициализирует взаимоисключающую блокировку;
+*pthread_mutex_destroy – удаляет взаимоисключающую блокировку;
+*pthread_mutex_lock – устанавливает блокировку. В случае, если блокировка была установлена другим потоком, *текущий поток останавливается до снятия блокировки другим процессом;
+*pthread_mutex_unlock – снимает блокировку.
+
+Источники
+1)https://studfile.net/
+2)https://habr.com/ru