2011-01-24 2 views
9

Я проходил через учебник по операционным системам, и я столкнулся с концепцией «механизма и политики разделения». Я не был уверен, что это значит, поэтому я проверил википедию, которую я должен признать, тоже не очень помог.Политика и механизм

Разделение механизма и политики [1] является принцип конструкции в информатике. В нем говорится, что механизмы (те части системы реализации, которые контролируют авторизации операций и распределения ресурсов) не должны диктата (или чрезмерно ограничить) политики в соответствии с которым решением сделаны об операциях по авторизовать, а какие ресурсы - выделить.

Может кто-то смягчить это и объяснить, если возможно, несколькими примерами, что означает separation of mechanism and policy в контексте операционных систем?

ответ

12

Вот что это означает для системы X-Windows.

X-Windows, на самом базовом уровне, обеспечивает способ манипулирования областями экрана, называемыми «окнами». Он также обеспечивает способ получения событий, которые происходят внутри окон.

Но X-Windows ничего не говорит о заголовках, меню, полосах прокрутки или любом из этих материалов. Он также ничего не говорит о правилах, с помощью которых конкретное приложение может сделать свое окно занятым на весь экран, или когда окно нужно удалить с экрана. Это дает возможность одному приложению заставить другие приложения запрашивать у него разрешение, прежде чем делать что-то с окнами верхнего уровня, но не предоставляет такого приложения, как часть базового сервера.

X-Windows - это механизм, а не политика.

Политика предоставлена ​​инструментарием виджетов, оконным менеджером и другими вещами, добавленными в систему позже. Например, многие инструментальные средства виджетов используют набор перекрывающихся подлодок для полос прокрутки и запрашивают события мыши для этих под-окон, чтобы они могли обнаруживать операции щелчка и перетаскивания и соответствующим образом реагировать на под-окна.

Вот почему, например, GNOME и KDE могут обходиться на одном дисплее, и почему действительно старые программы X-Windows, которые ничего не знают о панелях или настольных компьютерах, по-прежнему отлично работают на современных системах.

+0

Да, особенно, поскольку исходная политика заключалась в том, что вы проходили -geometry при запуске всех X-приложений (из командной строки). – Joshua

4

В отношении операционных систем * nix общая идея заключается в том, что система безопасности реализуется ядром, а система авторизации реализуется в пользовательском пространстве.

Для эффективного разделения необходимы всесильные корневые и суид-бинарные файлы, которые так много людей высмеивают (справедливо или дружелюбно). Можно полностью заменить механизм аутентификации, оставив систему без изменений (ssh делает это, поэтому она использует недокументированные API в Windows).

+0

+1 - Еще один отличный пример принципа. Unix фактически имеет почти (но не вполне) механизм, позволяющий реализовать безопасность на основе возможностей. Дескриптор файла, проходящий через сокеты домена Unix, является одной из основных вещей, которая является очень важной функцией для этого. Но ему нужно больше, как способ даже для пользовательского процесса «exec», и в результате процесс имеет меньше привилегий. – Omnifarious

+0

@Omnifarious: на самом деле этот последний простой. Выбрасывать привилегии между fork() и exec(). Тем не менее, нет эквивалента песочницы Vista. – Joshua

+0

Но если вы пользовательский процесс, как вы отбрасываете привилегии? Например, имеют привилегии «никто» и нет разрешения на создание сокетов. И песочница Vista может быть реализована с передачей файлового дескриптора. – Omnifarious

Смежные вопросы