
- •1. Классификация программного обеспечения
- •1. Базовое программное обеспечение
- •2. Трансляторы
- •3. Языки программирования
- •4. Инструментальные средства (утилиты)
- •5. Прикладное программное обеспечение
- •2. Основные задачи ос
- •3. Типы ос
- •Типы ос по алгоритмам управления ресурсами:
- •Типы ос по аппаратной платформе:
- •Типы ос по области приложений:
- •Типы ос по их архитектурам:
- •4. Базовая система ввода/вывода (bios)
- •Прерывания bios
- •Обеспечение мультизадачности
- •Модернизация bios
- •5. Файловая система. Типы файловых систем. Их особенности.
- •6. Загрузчик ос
- •7. Ядро ос
- •8. Основные функции ядра
- •Планирования заданий в системах без мультипрограммирования.
- •Планирования заданий в системах с мультипрограммированием.
- •Уровни систем планирования.
- •Планировщик процессов.
- •Регулировщик процессов.
- •9. Драйвер ос
- •10. Типы драйверов
- •11. Типы многозадачности, их особенности
- •12. Понятие суперпроцесса
- •13. Потоки
- •Листинг 2. Окончание процедуры инициализации ядра Linux
- •14. Семафоры
- •15. Встроенные функции ос. Встроенные команды ос
- •20. Историческое развитие ос
- •22. Типы unix
- •23. Особенности bsd. Особенности System 5
- •24. Ядро unix
- •25. Типы драйверов unix
- •26. Потоки в unix
- •27. Управление процессами в unix
- •28. Режимы ядра в Unix
- •29. Файловая система в unix
- •30. Реализация безопасности в unix на уровне файловой системы
- •31. Реализация безопасности в unix на уровне ос
- •32. Понятие пользователь, группа в unix
- •33. Бесправный пользователь. Пользователь ресурса. Пользователь ос
- •34. Понятие ресурса
- •35. Понятие консоли.
- •36. Основные команды в unix
- •37. Сеть в unix
- •39. Особенности реализации ms-dos, как составной части unix
- •40. Реализация ядра в ms-dos
- •41. Реализация драйверов в ms-dos
- •42. Реализация потоков в ms-dos
- •43. Управление процессами в ms-dos
- •44. Ограничение на использование оп
- •45. Файловая система в ms-dos
- •46. Реализация безопасности в ms-dos
- •47. Реализация многозадачности в ms-dos
- •48. Встроенные команды ms-dos
- •49. Внешние стандартные команды ms-dos
- •50. Графическая оболочка X- Window
- •51. Графическая оболочка Windows
- •Задачи, поставленные при создании Windows nt.
- •Концепции Windows nt
- •Истоки Windows nt
- •Особенности версии Windows nt 4.0
- •Новые свойства Windows nt 5.0
- •Требования к аппаратуре
- •Области использования Windows nt
- •53. Ядро Windows nt
- •54. Драйверы в Windows nt
- •55. Реализация многозадачности в Windows nt
- •56. Файловая система в Windows nt
- •57. Режимы использования оп в Windows nt
- •58. Реализация безопасности в Windows nt на уровне файловой системы
- •59. Реализация безопасности в Windows nt на уросне ос
- •1. Пользователи, ресурсы и операции доступа
- •2. Локальные, глобальные и специальные группы
- •3. Встроенные группы пользователей и их права
- •4. Возможности пользователей
- •5. Управление профилями пользователей
- •6. Аудит
- •7. Репликация каталогов в сети Windows nt
- •60. Сеть в Windows nt
- •1. Однодоменная сеть Windows nt
- •2. Многодоменная сеть Windows nt
49. Внешние стандартные команды ms-dos
ВНЕШНИЕ КОМАНДЫ
Внешние команды выполняются небольшими сервисными программами (утилитами), такими, как format, fdisk, которые для выполнения должны загружаться из файлов на дискете или жестком диске в оперативную память.
ОБЩИЙ ФОРМАТ КОМАНДЫ
Квадратные скобки [ ]
В квадратных скобках содержатся составные части (ключевые слова, параметры и переменные) какой-либо команды, которые могут включаться в состав команды по желанию пользователя, т.е. их при желании можно опускать. Если же такой фрагмент все-таки включается в команду, то сами квадратные скобки в команде указывать не нужно.
Многоточие...
Многоточие обозначает, что стоящий перед ним элемент в записи команды можно повторить произвольное число раз.
Символ |
Указывает, что можно выбрать одну из двух возможностей. Например, команда ECHO ON|OFF означает, что Вы можете ввести эту команду либо как ECHO ON, либо ECHO OFF.
50. Графическая оболочка X- Window
X-сервер. Программа, которая написана специально подконкретное физическое устройство (имеется в виду - монитор,графконтроллер, мышь и клавиатура), умеет на нем рисовать, иумеет понимать команды рисования по протоколу X Window System.
X-клиент. Прикладная программа, обеспечивающая графическийинтерфейс с пользователем. Команды для рисования на экранепередает X серверу по протоколу X Window System.
X-терминал. Ящик (монитор, графконтроллер, мышь,клавиатура, ну и, естественно, процессор и оперативная память),на котором запущена программа X-сервер. X-терминалом можетслужить самая обыкновенная графическая Unix-рабочая станция, накоторой X сервер выполняется, как одна из многих прикладныхзадач. Специализированный X-terminal - ящик, на которомзапускается только X сервер, и ничего кроме. Можно использоватьPC под MS-DOSом, на котором запущена DOSовская программа,реализующая X сервер.
Xlib - библиотека C-ишных функций, реализующих протокол X Window System. С помощью этой библиотеки можно писатьграфические программы - X-клиенты.
Мы получаем универсальный GAPI - (Graphical ApplicationProgramming Interface) - средство программирования графическихприложений. Пользовательские графические программы при этомполностью отвязаны от железа, от конкретного графконтроллера.О железе пусть беспокоится X-сервер.
Протокол X Window умеет "ездить" по сети: например по TCP/IP,или по DEC-net. Поэтому Xсервер может крутиться на одноймашине, а X-клиент - на другой. То есть, картинка рисуется наодной машине, а программа, которая ее обеспечивает - крутитсяна другой.
X-сервер способен обслуживать сразу много клиентов, причем всех одновременно. На нашем графическом экране может быть открыто сразу много окон - каждое окно порождается его собственным X клиентом. Клиенты эти могут быть запущены и на нашей машине (к которой подключена графическая подсистема), и на удаленных машинах, соединенных с нами по сети.
Весь интерфейс программ в X-Window состоит из объектов (в X-Window их называют "widgets" -- в дословном переводе "штучки"). Например, диалоговое окно поиска в программе Netscape содержит объекты строка ввода, два переключателя, полосу-разделитель и три кнопки.
|
|
Окно "Find" в Netscape |
|
|
|
|
|
Дерево объектов окна "Find" программы NXterm |
Понятие ресурсов
У каждого объекта есть набор свойств: цвет символов, цвет фона, шрифт и т.д. Конкретный перечень свойств определяется типом объекта -- кнопка, переключатель, строка ввода и т.д. (для обозначения типа используется термин класс объекта). Вот эти свойства объектов и называются ресурсами.
Некоторые свойства, такие, как состояние включено/выключено у объекта "переключатель", определяются и меняются в процессе работы программы.
Другие же, такие, как цвета, шрифты и надписи (например, названия пунктов меню), можно настраивать.
Ресурсы -- это одна из самых базовых концепций X-Window, придающая системе большую гибкость, но одновременно, несмотря на элегантность, и одна из самых трудных для понимания. С понятием ресурсов также тесно связаны понятия "Actions" и "Translations" ("действия" и "соответствия"), часто встречающиеся в man-страницах, но мы их затрагивать не будем.
Отличие от MS Windows
По своему назначению ресурсы в X-Window очень похожи на то, что обозначается тем же термином "ресурсы" в MS Windows. Но вся идеология работы с ресурсами в X в корне отличается.
В частности, в MS Windows ресурсы являются частью бинарного исполняемого файла (например, winword.exe), и могут указываться или при компиляции программы, или меняться при помощи специальных редакторов, которые позволяют модифицировать бинарный файл (что, вообще говоря, является работой для квалифицированного программиста, и зачастую противоречит законам об авторских правах).
В X-Window же ресурсы существуют отдельно от исполняемого кода программы, в виде текстовых файлов, и могут свободно меняться или в этих файлах, или даже при помощи ключей в командной строке.
Таким образом, если в MS Windows, к примеру, перевод всех сообщений некоей программы на русский язык является "хакерской" задачей, то в X-Window подобное действие -- вполне стандартно, доступно любому пользователю и описано в документации.
Как сослаться на ресурс
Для того, чтобы изменить значение какого-либо ресурса, надо как-то на него "сослаться". Для этого надо указать объект, ресурс которого модифицируется, и название этого ресурса.
Полной ссылкой на объект является полный "путь" к нему в "дереве" объектов -- список имен всех объектов от основного окна, которому принадлежит объект, до него самого, разделенных точками.
|
Сокращенное дерево объектов программы NXterm |
|
Меню выбора шрифтов программы NXterm |
nxterm.fontMenu.fontsel
Ресурс, содержащий текст "Selection" в данном случае называется "Label". Таким образом, полная ссылка на ресурс в объекте --
nxterm.fontMenu.fontsel.Label
Чтобы указать значение ресурса, надо после ссылки на ресурс указать через двоеточие его значение (пробел после двоеточия необязателен и служит только для читаемости):
nxterm.fontMenu.fontsel.Label: Current selection
Поскольку при помощи текста можно указать далеко не все (например, как можно было бы закодировать в строке картинку или ссылку на функцию?), то возможность модификации ресурсов ограничивается в основном цветами, шрифтами, названиями (тексты меток и т.д), числами (координаты, размеры и т.д.), булевскими значениями (True/False) и геометрией. Впрочем, в практически всегда этого вполне достаточно (а реально есть возможность указывать почти все ресурсы).
Шаблоны
Чтобы, во-первых, не настраивать свойства каждого экземпляра, например, кнопки, по отдельности, а во-вторых, не указывать все время длинные цепочки объектов, существуют шаблоны.
В понятие "шаблон" входит два компонента.
Во-первых, вместо имени конкретного объекта можно указать имя класса, к которому принадлежит этот объект. К примеру, все объекты-пункты меню в NXterm (как, впрочем, и во всех программах на основе библиотеки Athena Widgets) принадлежат к классу "SmeBSB". Таким образом, чтобы поменять шрифт, которым отображаются все пункты меню в "VT Fonts" на "fixed", можно воспользоваться указанием ресурса
nxterm.fontMenu.SmeBSB.font: fixed
Во-вторых, вместо имени объекта или класса в качестве одного из компонентов ссылки на объект можно указать "*". Например, спецификация
nxterm.*.SmeBSB.font: fixed
сменит шрифт во всех трех меню NXterm.
Символ "*" можно указывать и вместо нескольких компонентов сразу, опуская точки: спецификация
nxterm*SmeBSB.font: fixed
сменит шрифт во всех объектах класса "SmeBSB", к какой бы цепочке объектов они не принадлежали (впрочем, в NXterm других цепочек просто нет :).
Другой пример -- спецификация
nxterm*font: fixed
позволяет изменить шрифт во всех объектах программы.
В большинстве программ (к сожалению, в их число не входит NXterm) можно использовать еще более короткое указание:
*font: fixed
При использовании шаблонов может возникнуть ситуация, когда к одному и тому же ресурсу подходят несколько шаблонов. К примеру,
nxterm*SmeBSB.font: 7x14
nxterm.fontMenu.SmeBSB.font: fixed
В таких ситуациях действует правило: используется та спецификация, которая наиболее точно ссылается на объект. В приведенном выше примере во всех меню, кроме меню "fontMenu" ("VT Fonts"), используется шрифт "7x14", а в "fontMenu" -- шрифт "fixed".
Как узнать имена объектов и названия ресурсов
Названия ресурсов, вообще говоря, зависят от библиотеки объектов, на основе которой создана конкретная программа. Имена же объектов -- от конкретной программы.
Поскольку редко когда требуется поменять значение "какого-нибудь" ресурса, то самое простое -- посмотреть так называемый app-defaults-файл для данной программы (см. ниже), в нем обычно перечислено большинство "интересных" ресурсов.
Кроме того, в таблице ниже приведены самые часто используемые имена ресурсов для библиотек Athena Widgets и Motif.
Часто используемые ресурсы
Ресурс |
Назначение |
foreground |
Цвет букв ("цвет переднего плана") |
background |
Цвет фона |
font |
Шрифт (Athena Widgets) |
fontList |
Шрифт (Motif) |
label |
Метка -- текст на кнопке, на пункте меню и т.д. (Athena Widgets) |
labelString |
Метка (Motif) |
Откуда берутся значения ресурсов
Мы довольно подробно рассмотрели синтаксис спецификации ресурсов, но остался вопрос -- а как и где, собственно, можно изменить значение ресурса для конкретной программы?
Для ответа на этот вопрос приведем список источников (по мере уменьшения приоритета), из которых программа узнает значения ресурсов при запуске.
Программа может установить значение ресурса при создании объекта.
Ресурс можно указать в командной строке при помощи ключа "-xrm".
Спецификации ресурсов могут быть загружены в память X-сервера (это делается автоматически при старте X-Window скриптом xinitrc из содержимого файлов /etc/xinit/.Xresources и ~/.Xresources).
Если (и только если) в памяти X-сервера ресурсы отсутствуют, то просматривается файл ~/.Xdefaults. Поскольку .Xdefaults в большинстве реализаций прекращает поиск (и все дальнейшие пункты просто не используются), лучше его никогда не заводить, а если уже есть -- избавляться от него.
Если есть файл ~/имя-класса-программы, то просматривается он, а затем, если есть, одноименный файл из директории
/usr/X11R6/lib/X11/app-defaults/
Эти файлы содержат "настройки по умолчанию" (app-defaults).
Имя класса программы обычно указывается в документации, кроме того, чаще всего это просто название программы, первая буква в котором заглавная, а остальные -- маленькие (если первая буква -- "X", то иногда вторую также делают заглавной). В любом случае, стоит воспользоваться командой
ls /usr/X11R6/lib/X11/app-defaults/ | grep -i имя-программы
Если (и только если) не найден ни один из app-defaults-файлов, то используется список ресурсов, "вшитый" в программу (т.н. "fallback resources"). Если заглянуть внутрь программы, к примеру, командой
strings /usr/X11R6/bin/xman | less
то можно увидеть строки, очень похожие на содержимое файла /usr/X11R6/lib/X11/app-defaults/Xman.
"Ручное" изменение ресурсов: ключ "-xrm"
Самый простой способ изменить значение ресурса -- воспользоваться ключом "-xrm", которому указывается в качестве параметра спецификация ресурса. Поскольку она обычно содержит пробелы и/или символы "*", лучше указывать ее в одинарных кавычках:
nxterm -xrm 'nxterm*SmeBSB.font: fixed'
Ключ "-xrm" можно указывать несколько раз:
nxterm -xrm 'nxterm*SmeBSB.font: fixed' -xrm 'nxterm*background:red'
Естественно, значение ресурса меняется только для данного экземпляра программы.
Общие рекомендации -- как же все-таки настраивать ресурсы
Как видно из приведенного выше списка, значения ресурсов можно менять в огромном количестве мест. Поэтому для большей определенности приведем один из сценариев.
Первым делом следует отладить спецификацию ресурса "методом проб и ошибок" при помощи ключа "-xrm".
Если ресурс -- общий для многих программ (например, цвет фона), то следует поместить его спецификацию в файл .Xresources. При настройке для всех пользователей -- в общесистемный /etc/xinit/.Xresources, а любой пользователь может изменить свой личный ~/.Xresources.
При настройке ресурсов конкретной программы следует поменять ее app-defaults-файл. Аналогично, при настройке для всех пользователей -- файл из /usr/X11R6/.../app-defaults/, а при персональной настройке любой пользователь может скопировать файл из .../app-defaults/ к себе в home-директорию и поправить под свой вкус; поскольку, хотя просматриваются оба файла, приоритет отдается настройкам из персонального.
Где еще брать информацию
Базовые понятия и определения ресурсов имеются в man-странице по X (см. подраздел "RESOURCES").
Кроме того, подробное описание синтаксиса указания ресурсов и порядка, в котором они берутся из разных источников, есть в разделе 10.2 книги "X Toolkit Intrinsics Programming Manual" от O'Reilly & Associates (имеется в электронном виде в системе insight на компьютерах Silicon