Опубликован: 22.06.2005 | Уровень: для всех | Доступ: платный | ВУЗ: Компания IBM
Лекция 16:

Графический интерфейс (X11)

Рабочий стол

С появлением универсальных высокоуровневых инструментов стала приближаться к осуществлению идея полного воплощения метафоры "рабочего стола", впервые реализованная в системах семейства MacOS. Смысл рабочего стола в том, чтобы предложить принципиально иной способ взаимодействия человека и компьютера – способ, основанный на манипуляции единичными именованными объектами. Каталоги превращаются в "папки с документами", причем каждый тип документов можно "открыть" с помощью специального "документатора". Программы превращаются в эдакие вместилища абстрактных функциональностей: "Internet", "Почта", "Видео" и т. п. Рабочий стол особенно необходим человеку, чья область деятельности далека от компьютерного дела, для кого он – не вычислительная машина, а инструмент решения отдельных – типовых и, чаще всего, непрофильных – задач.

Компьютер так уверенно вошел в каждый дом, что давно уже стал бытовым прибором для игр, чтения электронной почты, просмотра WWW, а в последнее время – еще и музыкальным центром и видеопроигрывателем. Грешно требовать от садящейся за клавиатуру домохозяйки или какого-нибудь оболтуса строгого следования принципам проективной системы. Лучше дать им в руки красивую и сравнительно безопасную игрушку, которая способна удовлетворять их бытовые нужды. Таких игрушек для X11 несколько. Две мощные среды "офисного" плана – KDE (основанное на Qt переосмысление коммерческой среды CDE) и Gnome (основанная на GTK) – содержат все необходимое для работы (включая собственные офисные приложения и средства просмотра WWW). Или, например, среда XFCE (основанная также на GTK) – крепко сколоченный минималистский вариант CDE, простой и ясный, как выдвижной ящик.

Мефодий выбрал одну из таких игрушек – KDE, начав с оформления рабочего стола на свой вкус. Когда ему, наконец, наскучило перекрашивать меню и загромождать рабочий стол безделушками, он попробовал заняться делом. В примере отображен снимок экрана в один из моментов его работы, когда он попытался воспользоваться для работы с файлами специально разработанной для KDE программой ( konqueror, которая служит заодно и броузером) вместо уже привычной ему командной строки. При этом Мефодия насторожило время, которое ему потребовалось на выполнение вполне привычных простейших операций над несколькими файлами и каталогами: для каждого пришлось делать отдельное движение мышью, да и в целом все стало происходить гораздо медленнее, чем обычно, а компьютер то и дело принимался хрустеть жестким диском (рис. 16.9).

Работа в KDE

Рис. 16.9. Работа в KDE

До сей поры Мефодий считал, что его – не такой уж новый – компьютер вполне подходит для работы в Linux, и ничто этому утверждению не противоречило. Желая проверить, чем же занимается система, он запустил команду top, нажал "M", для того чтобы посмотреть, какие процессы занимают больше всего памяти, и обнаружил довольно неприятную, хотя и вполне терпимую картину:

00:55:08 up 13:20, 13 users, load average: 1,71, 1,87, 0,97
29 processes: 28 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: 60,6% user, 14,6% system, 6,2% nice, 0,0% iowait, 18,4% idle
Mem: 54232k av, 53076k used, 1156k free, 0k shrd, 1628k buff
     18032k active,          22620k inactive
Swap: 200772k av, 108288k used, 92484k free 15812k cached
PID USER     PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
15410 methody 13 5 9448  8980 8096 S N 0,0 16,5 0:01 kdeinit
15379 methody 9  0 9656  7928 7184 S 0,1 14,6 0:06   kdeinit
15404 methody 9  0 9652  7612 7428 S 0,0 14,0 0:02   kdeinit
15395 methody 9  0 9596  7376 7372 S 0,0 13,6 0:02   kdeinit
15406 methody 9  0 10084 7216 6192 S 0,0 13,3 0:09   konqueror
15397 methody 9  0 8592  7140 6560 S 0,5 13,1 0:03   korgac
15387 methody 9  0 8464  6920 6748 S 0,0 12,7 0:02   kdeinit
15390 methody 9  0 8488  6644 6640 S 0,0 12,2 0:01   kdeinit
15393 methody 9  0 8576  6636 6632 S 0,0 12,2 0:02   kkbswitch
15407 methody 9  0 6864  6164 6064 S 0,0 11,3 0:00   kdeinit
15377 methody 9  0 7592  5844 5440 S 0,0 10,7 0:04   kdeinit
15380 methody 9  0 6564  5736 5624 S 0,0 10,5 0:00   kdeinit
15346 methody 9  0 6652  5028 4744 S 0,1 9,2  0:02   kdeinit
15368 methody 9  0 6864  4972 4972 S 0,0 9,1  0:02   kdeinit
15376 methody 9  0 6164  4504 4504 S 0,0 8,3  0:01   kdeinit
15356 methody 9  0 6608  4436 4432 S 0,0 8,1  0:01   kdeinit
15366 methody 9  0 6008  4436 4436 S 0,0 8,1  0:01   kdeinit
15343 methody 9  0 5248  4388 4156 S 0,1 8,0  0:00   kdeinit
15385 methody 9  0 5412  3984 3876 S 0,0 7,3  0:01   apt-indicator
15341 methody 9  0 4540  3768 3612 S 0,0 6,9  0:00   kdeinit
15338 methody 8  0 2260  1444 1368 S 0,0 2,6  0:00   kdeinit
15411 methody 15 0 1092  1040 844  R 2,3 1,9  0:01   top
15200 methody 9  0 628   520  520  S 0,0 0,9  0:00   xinit
15159 methody 9  0 912   508  508  S 0,0 0,9  0:00   bash
15209 methody 9  0 640   476  472  S 0,0 0,8  0:01   startkde
15185 methody 9  0 564   408  408  S 0,0 0,7  0:00   startx
15364 methody 9  0 304   276  256  S 0,0 0,5  0:00   kwrapper
Пример 16.6. Загрузка компьютера во время работы KDE

Первое, что бросилось ему в глаза – множество процессов, запущенных явно средой KDE (кому же еще может принадлежать программа kdeinit?). Мефодий подсчитал число процессов, начинающихся на "kde" ( ps ax | grep kde | grep -v grep | wc -l ) – их оказалось 17 штук. Каждый из этих процессов затребовал у системы по три-четыре мегабайта памяти (поле SIZE ), из которых полтора-два (поле RSS ) немедленно использовал. Не так уж и много – если бы такая программа запускалась одна. Но две дюжины kdeinit вполне способны израсходовать всю оперативную память компьютера, если объем его физической памяти составляет, как на компьютере Мефодия, 64 мегабайта (из них порядка девяти мегабайтов заняло ядро – эта память не отображается в поле mem – и сколько-то уходит на сам X-сервер и прочие программы, не принадлежащие Мефодию).

Впрочем, даже в таком состоянии Linux продолжает работать довольно-таки бодро. Дело в том, что большинство из этих процессов (все, кроме самого top, об этом говорит строка "1 running" ) в данный момент неактивны ( sleeping ). Большинство полученных ими ресурсов система давно уже отправила в область подкачки ( swap ) на диске. Затруднения начнутся, если несколько неактивных программ "проснутся": система начнет поднимать из swap их ресурсы, а чтобы для них хватило места в оперативной памяти – откачивать туда память других программ (отсюда и неожиданная дисковая активность, на которую Мефодий обратил внимание). Хуже всего, если для работы всех активных процессов одновременно не хватает места – тогда процесс откачки-закачки будет отнимать большую часть процессорного времени, и для полезных задач его просто не останется. Определить такую ситуацию (она называется "дребезг", trashing ) можно по высоким значениям полей system , а еще по постоянно ненулевым значениям в полях si и so команды vmstat:

procs      memory             swap     io  system      cpu
r b w swpd   free buff cache si so  bi bo  in  cs us sy id
0 1 0 106092 1352 1168 19380 14 10 265 33 127 407 14  4 82

Этот опыт произвел на Мефодия отрицательное впечатление, и он решил организовать себе графическое рабочее место на основании какого-нибудь менее громоздкого инструмента. Впрочем, провести границу, где заканчиваются обязанности диспетчера окон и начинаются ухищрения рабочего стола, очень трудно. Видимо, разумно считать, что диспетчер окон делается средой рабочего стола, когда появляются пользовательские приложения с использованием его особых свойств и его библиотек. Если главная задача рабочего места – запускать xterm, то достаточно даже очень старого диспетчера окон twm (он всегда есть в составе XFree86, но редко используется по причине некрасивого, "плоского" оформления интерфейса). Вместо него можно использовать диспетчеры, подобные icewm или fluxbox, обладающие более широкими возможностями и при этом нетребовательные к ресурсам. Если необходимо просто и незамысловато обеспечить доступ к основным пользовательским X-приложениям, подойдет XFCE. Наконец, диспетчеры, подобные WindowMaker или fwvm, предоставляют множество возможностей и гибко настраиваются, не "вытягивая" за собой ресурсоемких программных структур, используемых в KDE или Gnome.

Поразмыслив, Мефодий решил остановиться на WindowMaker: система меню показалась ему приятной для глаз, а способ быстрого запуска – удобным. Кроме того, его позабавили "активные иконки", шевелящиеся в момент запуска соответствующего приложения.

Аягоз Имансакипова
Аягоз Имансакипова
Тимур Булатов
Тимур Булатов

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