The Linux Serial HOWTO : На шаг дальше ...
Next Previous Contents13. На шаг дальше ...
Этот раздел не обязателен для прочтения, но может дать вам более глубокие знания Unix и мира телекоммуникаций.
13.1 Что такое lock файлы (файлы блокировки)?
Файл блокировки - это просто файл, говорящий, что указанное устройство в настоящее время занято (используется).
Они хранятся в /usr/spool/uucp или /var/lock. В Linux файлы блокировки именуются LCK..name, где name - это или имя устройства, или имя UUCP сайта. Некоторые процессы создают эти файлы блокировки для того, чтобы иметь монопольный доступ к устройству. Например, если вы делаете исходящий звонок вашим модемом, появится файл блокировки, сообщая другим процессам, что кто-то уже использует модем. Файл блокировки в основном содержат PID процесса, который занял устройство. Большинство программ проверяют наличие файла блокировки, и пытаются определить, является ли эта блокировка все еще допустимой, производя в таблице процессов поиск процесса, который блокировал устройство. Если определяется, что файл блокировки действителен, то программа (возможно) заканчивает работу. Если нет, то некоторые программы удаляют устаревший файл блокировки, и используют устройство, создавая собственный файл блокировки. Другие программы только завершают работу и сообщают вам, что устройство занято процессом.
13.2 ``бод" или ``бит\сек"
``бод" и ``бит\сек" являются возможно одним из наиболее часто неправильно применяемых терминов в области компьютеров и телекоммуникаций. Многие люди считают эти термины взаимозаменяемыми, хотя фактически это не так!
- бод (baud)
Скорость в бодах - это количество посланных секунду сигналов, например одно посланное модемом (модем - это сокращение от "модулятор-демодулятор") изменение. Например, скорость в 1200 бод подразумевает, что один сигнал изменяется каждые 833 микросекунды. Обычные скорости модемов в бодах - 50, 75, 110, 300, 600, 1200 и 2400. Большинство высокоскоростных модемов могут работать со скоростями 2400 бод. Из-за ограничений ширины полосы частот на голосовых телефонных линиях, достичь скорости более 2400 бод тяжелее, и работает только на линиях с pristine качеством. В одном боде можно закодировать несколько бит, и таким образом получится, что скорость в битах превышает скорость в бодах. ``бод" назван по имени Эмиля Баудота (Emile Baudot), изобретателя асинхронного телеграфного принтера.
- бит\сек (bps)
Скорость бит\сек - количество переданных за одну секунду бит. Раньше для модемов обычными скоростями бит\сек были 50, 75, 110, 300, 1200, 2400, 9600. Сегодня это - 14.4Кб, 28.8Кб, 33.6Кб, и 56Кб (они не соответствуют скоростям в кабеле "последовательный порт-модем", которые дополняют старые модемные скорости бит\сек (50-9600): 19.2Кб, 38.4Кб, 57.6Кб и 115.2Кб). При использовании модемов со сжатием V.42bis (максимальное сжатие 4:1), возможно достижение скорости до 115.2Кб/сек. Вот что имеет в виду большинство людей, когда они неправильно применяют слово ``бод".
Как начался этот бардак? Ну, когда модемы работали медленно, скорость бит\сек фактически равнялась скорости в бодах. Одним изменением фазы кодировался один бит. Термины бит\сек и бод были взаимозаменяемыми, потому что имели одинаковые значения. Например, модем 300 бит\сек также имел скорость 300 бод. Все изменилось, когда появились более быстрые модемы, и скорость передачи информации в битах превысила скорость в бодах.
13.3 Что такое UART? Как они воздействуют на производительность?
UART (Universal Asynchronous Receiver Transmitter -- Универсальный Асинхронный Приемопередатчик) - это микросхема на вашей мультикарте или материнской плате. Функции UART может выполнять и другая микросхема, которая занимается кроме этого другими вещами.
Назначение UART состоит в том, чтобы преобразовать данные в биты, посылать биты по последовательной линии и затем восстанавливать данные на другом конце линии. UART имеет дело с данными, разбитыми побайтно, что удобно для представления символов ASCII.
Скажем, у вас есть терминал, подключенный к PC. Когда вы печатаете символ, терминал передает этот символ своему передатчику (тоже UART). Передатчик посылает этот байт наружу по последовательной линии побитно с определенной скоростью. UART на PC конце линии получает все эти биты и восстанавливает из них байт и помещает его в буфер.
Есть два различных типа UART. Вы вероятно слышали о dumb UART - 8250 и 16450, и FIFO UART - 16550A. Чтобы понять их различия, сначала давайте исследуем, что случается когда UART послал или получил байт.
UART непосредственно не может делать что-либо с данными, он только посылает и получает их. Для первоначальных UART, ЦП получает запрос на прерывание от последовательного устройства каждый раз, когда байт был послан или получен.
Затем ЦП перемещает полученный байт из буфера UART в область оперативной памяти или передает UART другой байт для передачи. В UART 8250 и 16450 буфера однобайтные. Это означает, что за одно прерывание ЦП посылается или принимается только 1 байт. Для низких скоростей это нормально. Но при высоких скоростях передачи, ЦП настолько загружается работой с UART, что хуже обслуживает другие задачи. В некоторых случаях, ЦП не успевает обработать прерывание вовремя, и байт затирается вновь пришедшим, потому что байты поступают в буфер UART слишком быстро.
В этой ситуации полезен UART 16550A. Эти чипы приходят с 16-байтным FIFO. Это означает, что такая микросхема может получать или передавать до 14 байтов прежде, чем она должна будет сформировать запрос на прерывание ЦП. В свою очередь ЦП может передать сразу 14 байтов за один раз. Хотя порог прерывания не всегда устанавливается в 14, все равно имеется значительное преимущество перед другими UART, которые имеют только однобайтный буфер.
ЦП получает меньшее количество прерываний, и имет больше времени для выполнения других вещей.
Данные не теряются, и все счастливы. (Существует также 16550 UART, но он обрабатывается как 16450, так как имеет дефект.)
В общем, UART 8250 и 16450 должны прекрасно подходить для скоростей до 38400 бит\сек. На скоростях больее 38400 бит\сек, вы могли бы заметить потерю данных. Другие операционные системы для PC (definition used loosely here), вроде DOS, не многозадачные, так что они могли бы лучше работать с 8250 или 16450s. Именно поэтому некоторые люди не замечают потерь данных, пока не начинают работать в Linux.
В не-UART и интеллектуальных многопортовых платах стоят DSP чипы, которые имеют дополнительные буферы и более развитое управление, и таким образом ЦП менее загружается.
Например, платы Cyclades Cyclom и Stallion EasyIO используют Cirrus Logic CD1400 RISC UART, а многие платы используют ЦП 80186 или даже специальные RISC ЦП, для обработки последовательного ввода-вывода.
Имейте в виду, что dumb UART не плохи, просто они не очень хороши для высоких скоростей. У вас не должно возникать проблем с подключением терминалов или мышей к этим UART. Но, для высокоскоростных модемов 16550A - определенно обязателен.
На большинстве новых PC (486's, Pentiums или выше) установлены 16550A. Если ваша техника действительно старая, то вы можете нарастить ее вычислительные возможности купив микросхем 16550A и заменив ваши 16450 UART. Если используется другой тип микросхемы, то вам не повезло. Если UART вставлется в "кроватку", то обновление упрощается (если вы можете найти замену). Новые и старые микросхемы совместимы по значениям выводов. Возможно, более правильно купить последовательную плату через Интернет (некоторые розничные торговцы их продают).
Next Previous Contents