InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте



Сколько стоит разработка мобильного приложения.



Размещение сквозной ссылки

 

Окно в Антарктиду


На мой почтовый ящик от читателей поступило очень много вопросов по поводу работы и настройки тех или иных параметров в ОС Linux. На один из наиболее часто повторяющихся и, с моей точки зрения, наиболее интересных — «Как увеличить частоту кадровой развертки?» — я и попробую дать ответ в данной статье.

Описывая конфигурацию своей машины, пользователи обычно вспоминают модель процессора, объем и тип оперативной памяти, лишь некоторые — модель видеокарты, ну а марку монитора не называет почти никто. А ведь последние два параметра и являются определяющими в данной ситуации. Чтобы понять, почему, предлагаю ознакомиться с принципом работы X-Window и видеоподсистемы компьютера вообще.

Долгое время пользователи ОС Unix общались с системой посредством командной строки, но прошло время, и компьютер стал интересовать не только программистов и системных администраторов. Тут как раз и вычислительные мощности дозрели — чтобы пользователь чувствовал себя комфортно, ему был дан графический интерфейс. В 1987 году ряд поставщиков программного обеспечения, чтобы способствовать созданию единой оконной системы для Unix, учредили организацию X Consortium, призванную стандартизировать X-Window. Свободная реализация идей этого проекта называется XFree86 (цифра 86 указывает на использование Intel-x86 совместимых процессоров). X-Window представляет собой систему клиент/сервер, но в несколько перевернутом понимании. Дело в том, что сервер работает непосредственно на компьютере пользователя и обеспечивает вывод информации, а клиент предоставляет ресурсы, необходимые для выполнения программ (напомню, в мире ПК все наоборот). Клиент, как правило, находится на том же компьютере, что и сервер, но ничто не мешает разместить его на удаленном компьютере, тем самым перебросив ресурсоемкие задачи на мощности сервера. Сам Х-сервер не формирует изображение, он только доставляет графику видео-драйверу. Наберите в консоли команду XF86_SVGA (или просто Х) — и вы получите только серый экран с крестиком мыши. Это и есть работающий Х-сервер. Все, посмотрели? А теперь убейте его клавишами Ctr+Alt+Backspace — в таком виде он абсолютно бесполезен. Для того чтобы получить что-то более интересное, необходимо запустить какой-нибудь менеджер окон и хотя бы одну программу-клиент xterm, например. Менеджер окон обеспечивает прорисовку элементов окна, дает возможность изменять вид и положение окна, вообще все, что можно сделать с окном. Чтобы приложение могло взаимодействовать с клавиатурой и мышью, ему необходимо знать их параметры — вот почему при настройке X-Window вас об этом спрашивают. Естественно, полностью поддерживается многозадачность. И теперь насчет поддерживаемого оборудования: поскольку а) в Украину завозятся наиболее распространенные видеоадаптеры и б) читатель МК — человек по определению подкованный в выборе железа, я не думаю, что у вас могут возникнуть проблемы. Впрочем, можете в каталоге /usr/X11R6/lib/X11/doc/ или на сайте http://www.xfree86.org. посмотреть список поддерживаемого оборудования.

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

Видеоподсистема компьютера состоит из монитора и видеоадаптера. Видеоадаптер передает в монитор три вида сигнала: видеосигнал (RGB), строчную синхронизацию (HS) и кадровую синхронизацию(VS). Монитор справляется с двумя независимыми друг от друга задачами: разверткой луча и выводом изображения. Причем, именно независимыми — может быть одно, но не быть другого. Управление монитором сводится к тому, чтобы задать число точек в строке (разрешение по горизонтали), число строк на экране (разрешение по вертикали) и интенсивность каждого из трех основных цветов в каждой точке. По сигналу горизонтальной (строчной) синхронизации происходит возврат луча с конца каждой строки к началу следующей, а сигнал вертикальной (кадровой) синхронизации определяет момент возврата луча из правого нижнего угла экрана в верхний левый. Частоты генерации этих двух сигналов (измеряемые числом импульсов в секунду) необходимо знать для правильной установки и настройки X-сервера. Значения частот горизонтальной и вертикальной синхронизации должны быть указаны в документации к вашему монитору. Частота вертикальной синхронизации (обозначим ее VSF) обычно указывается в герцах (у меня, на моем DTK, например, диапазон значений — от 50 до 120 Гц). Частота горизонтальной синхронизации (HSF) задается в килогерцах (кГц) (у меня — от 30 до 70 кГц; нормальной считается более 65 кГц, но об этом чуть ниже). На более современных мониторах это значение, естественно, выше (от 25 Гц до 150 Гц и от 30 кГц до 200 кГц). В современных мультичастотных мониторах данные параметры приведены в виде диапазона, а в старых моделях даются конкретные частоты, причем возможность выбора для установки параметров в них, естественно, ниже. Есть еще одна важная частота — число точек, которые могут быть отображены на экране за одну секунду (DCF). Электронный луч перемещается по экрану с конечной скоростью, которая ограничена параметрами микросхем видеоадаптера. И, наконец, самый существенный параметр для пользователя — это частота обновления экрана (SRR), ее рекомендуется устанавливать не меньше 72 Гц, потому что при данном параметре человеческий глаз уже не замечает мерцания, соответственно, чем выше данный параметр, тем комфортнее работать. Но есть существенное ограничение — частота обновления экрана не может быть больше, чем тактовая частота развертки (DCF), поделенная на произведение числа точек в строке и числа строк на экране (а желательно меньше, ведь необходимо еще какое то время для возврата луча).

Еще одно ограничение связано с объемом памяти видеоадаптера. Как вы знаете, цвет каждой точки формируется из трех основных цветов — красного, зеленого и голубого. Изображение для вывода формируется в видеопамяти, отсюда и ограничение на количество цветов для каждой точки.

Например, для разрешения 1024х768 при 256-цветовой модели (1 байт) потребуется 1024х768х1 = 786432 байт = 768 Кб, а для 16 миллионов цветов для каждой точки (4 байта) — 1024х768х4 = 3145728 байт = 3072 Кб , т. е. 2 Мб видеокарточка уже не потянет. Зачем я вам все это объясняю, спросите вы. Дело в том, что, как в дальнейшем вы сами убедитесь, из видеоподсистемы под Linux’ом можно вытянуть больше, чем под Windows.

Синхронизация представляет собой импульсы с большой скважностью, то есть длительность импульса мала по сравнению с длительностью паузы между импульсами: низкий уровень порядка 0.8 вольт, высокий — 2.4 вольта. Активным уровнем может быть и тот и другой. Все это можно настроить в XFree при помощи флагов -vsync, +vsync, -hsync, +hsync, где vsync — активный уровень кадровой развертки, а hsync — строчной.

И еще один момент: яркость люминофора монитора затухает после облучения по экспоненте. Частота 72 Гц соответствует 1/72 секунде = 13.8 мс, а 85 Гц — 11.7. Разница в 2.1 мс может привести к тому, что люминофор не успеет полностью затухнуть, и появятся так называемые пульсации, которые искажают изображение. Это, конечно, зависит от качества люминофора, но в любом случае не следует насыщать люминофор, врубая его на всю яркость.

Теперь немного практики: давайте посчитаем строчную частоту. Например, мы хотим добиться 85 Гц при 1024х800. Умножаем 85 на 800, получаем 68 кГц. Позволяет ли ваш монитор это?

Я думаю, что теории на сегодня хватит. Если кого заинтересовало, пусть почитает XFree86-Video-Timings HOWTO. Узнать всю доступную линейку частот можно, набрав в консоли (не под X-Window) следующую команду:

Затем откройте сгенерированый файл. Эти же параметры высвечиваются и при запуске, но вряд ли вы успеете там что-то прочитать.

Если у вас уже настроена система, и вы хотите только изменить параметры, можно для начала воспользоваться графическими утилитами. наберите в командной строке XFDrake, ответьте на вопрос, какой версией XFree вы хотите пользоваться. Здесь необходимо учитывать, что версии 4.х.х подходят к современным видеоадаптерам, а для старых совместимости ради в каждом дистрибутиве оставлена версия 3.3.6 (у меня, например видеочип Riva128 трехгодичной давности при установке сервера 4.1.0 дает темное изображение). Далее выберите глубину цвета и экранное разрешение, если нажмете кнопку Show all, то получите полный список доступного разрешения.

Далее протестируйте настройки, если изображение вас вполне устраивает, ответьте утвердительно на вопрос, оставить ли выбранную конфигурацию. Появится меню, где вы можете изменить настройки видеокарты, монитора — в общем, все, что связано с видеоподсистемой компьютера. На этом можно было бы и остановиться, но хотелось бы сделать оговорку: мною замечено, что мониторы Samsung и современные видеокарты на чипе от nVidia дают в Linux частоту кадровой развертки такую же, как и в MS Windows. Я думаю, что это связано с распространенностью этих девайсов и политикой этих фирм — например, на сайте nVidia рядом с «детонаторами» лежат бинарники и под Linux. Но есть категория изделий, причем весьма обширная, у которых данная частота существенно ниже ожидаемой. У меня, например, по умолчанию при разрешении 1024х768 устанавливается 70 Гц (в Windows — 85 Гц). Поэтому чтобы сохранить зрение и не скупить, как писал один товарищ в письме, весь Visin, будем настраивать этот параметр вручную.

Настроечный файл системы X-Window называется XF86Config и находится он в подкаталоге /etc/X11/. Это обычный ASCII-файл, т. е. его можно открыть в любом текстовом редакторе и отредактировать (под root). Сразу предупреждаю, что некоторые параметры настройки этого файла могут повредить оборудование, так что — на ваш страх и риск. Не уверены — лучше не трогайте.

Файл разбит на разделы (Section):

  • Files — список каталогов шрифтов и rgb-файлов;
  • ServerFlags — установка флагов сервера;
  • Keyboard — я думаю, понятно, что там настраивать;
  • Pointer — мышь;
  • Monitor — описание монитора;
  • Device — описание видеоадаптера;
  • Screen — описание экрана на основе информации из разделов.

    Файл имеет кардинальное значение в настройке X-Window, поэтому я остановлюсь на некоторых интересных параметрах. В Files мы увидим строку FontPath "unix/:-1" — это означает, что описание шрифтов находится «на своем месте» т. е. в /etc/X11/fs/config. В секции ServerFlags следующие интересные параметры (достаточно раскомментировать): DontZap — отмена команды окончания работы сервера Ctrl+Alt+BackSpace, DontZoom — отмена разрешения переключения графических режимов Ctrl+Alt+KP+(-). Рекомендую оставить их как есть, т. е. закомментироваными. В разделе Keyboard в параметре XkbOptions можно изменить раскладку: например, XkbOptions "grp:ctrl_shift_toggle" — переключение по Ctrl+Shift, "grp:caps_toggle" — по CapsLock (моя любимая). В секции Monitor параметры HorizSync и VertRefresh отвечают за допустимую частоту горизонтальной (в кГц) и вертикальной развертки соответственно. Вставьте сюда реальные значения из документации к вашему монитору — от этих параметров зависит успех нашего отнюдь не безнадежного дела.

    И наконец, мы добрались до нужного нам параметра — ModeLine, он как раз и описывает режим работы монитора. Формат записи такой:

    где "mode_name" — описание названия режима. Можно назвать в принципе как угодно, хоть "crazy_modes", но если посмотрите в файл, то увидите названия куда более осмысленные. Запись "1024x768", например, отображает разрешение, которое будет выставлено при включении данного режима. Это "mode_name" используется в качестве ссылки на имя режима в Section "Screen", Subsection "Display", Modes "mode_name". Режимы устанавливаются в порядке перечисления. Например, Modes "1024x768" "800x600" "640x480", показывает, что первым будет "1024x768", но доступны и остальные два. Да, в Section "Screen" есть параметр DefaultColorDepth, который показывает значение глубины цвета по умолчанию, и поэтому, например, при DefaultColorDepth 32 необходимо искать субсекцию "Display" с параметром Depth, равным значению по умолчанию (в нашем случае 32). Следующий параметр — частота тактового генератора, или, если точнее, частота выдачи точек на монитор. Это число выражается в мегагерцах и может быть вещественным, например, 94.50. H1..H4 [четыре числа, отвечающие за горизонтальную развертку (строчную синхронизацию)]. V1..V4 [четыре числа, отвечающие за вертикальную развертку (кадровую синхронизацию)]. Flags.

    Под последним параметром подразумеваются флаги, задающие тонкости развертки. Некоторые из них вам знакомы — это vsync и hsync. Может быть еще +csync и -csync — полярность врезок синхронизации в полный (композитный) сигнал. В двух словах: можно использовать как отдельную синхронизацию, так и синхронизацию по зеленому каналу, но лучше не трогать этот параметр. Флаг Interlace — черезстрочный режим, как в телевизоре; забудьте сразу. Еще остался doublescan — компенсирует недостаток строк, например, если рассматривать картинку с малым разрешением на большом экране. Можете удалить (закомментировать) в сгенерированном файле XF86Config все строки с последними двумя параметрами, чтобы не путались под ногами. Параметры V1..V4, H1..H4 записаны в виде, удобном для видеоадаптера, а не для человека. Формул перевода давать я не буду, хотя в старых дистрибутивах приходилось выводить их практически вручную. Но за окнами (но не Windows :-)!) — ХХI век, и нашлись люди, немного автоматизировавшие этот процесс. Вот, имеем строку:

    Как узнать, какая частота будет на выходе? Правильный ответ — по комментарию над ней. А если серьезно, то формула такова:

    Fраз = D x 1 000 000 / (H4 x V4)

    т. е. в нашем примере Fраз = 94.50х1000 000/(1376х808) = 84.99 Гц. Но тут не все так просто: подставив значение в файл, я не получил ожидаемого результата. Все дело в том, что, насколько я понял логику считывания параметров, Х-сервер считывает нужный параметр начиная с первого значения в файле до требуемого, по его мнению, для нормальной работы (стабильного). У меня для разрешения 1024x768 вначале идет значение для частоты 60 Гц, затем 72 Гц и вышеописанное. Если переместить его в начало файла, то Х-сервер его пропустит как неподходящий (опять же, по его мнению). Запустить его удалось, лишь закомментировав все другие строки с параметром mode_name равным 1024x768, и тут начались всяческие сбои в работе, искажение изображения и прочие неполадки. А почему, спросите вы, ведь под Windows при частоте 85 Гц все нормально? Все дело как раз в цифрах вертикальной и горизонтальной развертки т. е. в наших H1..Н4 и V1..V4. Выход есть: либо на свой страх и риск поиграть этими параметрами (с помощью них можно заодно и отцентрировать изображение — об этом, я думаю, вы уже догадались) и добиться нормального неискаженного изображения, либо воспользоваться утилитой xvidtune. Сразу оговорюсь: с ее помощью максимальных результатов, увы, нельзя добиться (у меня, например, получилось всего 80 Гц), но зато и риск минимальный. Впрочем, потом все равно можно подогнать параметры поближе к нужным, но с меньшим риском — снизу, так сказать.

    Если готовы, то приступим к работе. наберите в командной строке xvidtune — выскочит предупреждение об опасности данной операции; если уверены (а по-другому просто и быть не может), то смело жмите Yes. Появится окно настройки. Назначение многих параметров, таких как Left, Right, Wider, Narrower, Up, Down, Shorter, Taller (ой, пиво в холодильнике, подождите… Прошло 10 минут :-)), я думаю, очевидны. Нажмите кнопку Auto, чтобы параметры немедленно вступали в силу, и поиграйте настройками, пока не появится предупреждение.

    Но даже после этого стоит уменьшить значение последнего перестраиваемого параметра и попробовать другой. Ваша задача — добиться максимального значения частоты развертки (отображается в правом нижнем углу). Когда добьетесь, то нажмите кнопку Show, и в окне терминала появится сгенерированная строка со значением параметра ModeLine. Далее выделите его мышкой, откройте файл /etc/X11/XF86Config и, щелкнув средней кнопкой (у кого есть), вставьте значение первым по списку. В начале строки напишите: ModeLine. Перезагрузите Х-сервер. Все, результат, как говорится, налицо. Если не получилось, то просто закомментируйте все ненужные ModeLine, оставьте только ваш вариант, но будьте осторожны — однажды у меня получилась при 1024x768 частота 93.6 Гц . Ну, а что можно сделать дальше, я уже объяснял (все на ваш страх и риск, естественно). Естественно, есть возможность выставить нестандартный видеорежим. И напоследок, еще один интересный параметр в секции Screen. Если вставить в используемую субсекцию Display параметр Virtual со значением, большим разрешения вашего монитора (если у вас достаточно видеопамяти), то можно получить виртуальный экран, превосходящий размерами ваш рабочий стол. В этом случае виртуальный экран будет автоматически прокручиваться при выходе указателя мыши за пределы физического экрана. И еще: я думаю, нелишним будет напомнить о сохранении резервной копии изменяемого файла. В случае неполадки можно просто зайти в консольном режиме и скопировать резервный файл на место старого. В крайнем случае, в консоли введите команду /usr/X11R6/bin/xf86config и сгенерируйте файл с помощью данной команды.

    Как видите, в Linux можно настроить практически все и вся, надо только знать, где и как. От себя могу добавить, что пока я не начал изучать Linux, я только думал, что знаю, как работает компьютер. Поэтому читайте как можно больше — в системе, по-моему, достаточно документации. И еще: если хоть один юзер предпочтет индустриальному миру Б.Г. сказочный, полный загадок мир OpenSource (и накормит хоть одного пингвина :-)), то я считаю, что статья достигла своей цели вдвойне. Если есть вопросы, адрес есть, сразу ответить не обещаю, но без внимания не оставлю. Успехов!

    Linux forever


  • Реклама на InfoCity

    Яндекс цитирования



    Финансы: форекс для тебя








    1999-2009 © InfoCity.kiev.ua