Главная страница Межпроцессное взаимодействие (состязание) а отсутствие страничных прерываний - 0. В принципе для этой цели подойдет любой способ снижения производительности системы в течение определенного интервала времени. Если система позволяет блокировать файлы, тогда сервер может блокировать некий файл, что будет означать, например, 1, и разблокировать его, кодируя, таким образом, 0. Некоторые системы позволяют процессу определить, что файл блокирован, даже если у него нет доступа к этому файлу. Для передачи скрытых сигналов также применимы захват и освобождение внешних ресурсов (например, магнитофонов, плоттеров и т. д.). В системе UNIX сервер может создавать файл, что будет означать 1, и удалять его, передавая 0. Сообщник может проверять наличие файла при помощи системного вызова access. Этот системный вызов будет работать, даже если у сообщника нет доступа к создаваемому сервером файлу. К сожалению, помимо таких семафоров , существует множество других возможностей создания скрытого канала. Лэмпсон также упомянул о еще одном возможном потайном канале связи, но уже между сервером и человеком. Например, сервер может сообщать, сколько работы он сделал для клиента, выставляя ему счет. Если настоящий счет составляет $100, а доход клиента составил $53 ООО, то сервер может сообщить об этом в виде счета в $100,53. Обнаружить все скрытые каналы чрезвычайно трудно, не говоря уже об их блокировке. На практике в наших силах немногое. Добавление процесса, вызывающего страничные прерывания случайным образом или снижающего производительность системы другим способом, с целью снизить пропускную способность скрытых каналов, в качестве варианта решения проблемы не импонирует. 5.6. Обзор файловой системы MINIX Как и любая другая файловая система, файловая система MINIX обязана решать рассмотренные нами задачи. Она должна выделять и освобождать пространство для файлов, следить за блоками на диске и за свободным местом, предоставлять какие-либо средства защиты от несанкционированного доступа и т. д. В оставшейся части главы мы более подробно коснемся того, как эти вопросы решаются в MINIX. В первой части главы мы, ради большей общности, часто ссылались на UNIX, а не на MINIX, хотя внешний интерфейс этих двух систем практически идентичен. Теперь же мы сосредоточимся на внутреннем устройстве MINIX. Информацию о внутреннем устройстве UNIX вы можете почерпнуть из монографий Томпсона (1978), Баха (1981), Лайонса (1996) и Вахалия (1996). В MINIX файловая система - это просто большая программа на языке С, работающая в пользовательском пространстве. Чтобы прочитать или записать файл, пользовательские процессы отправляют файловой системе сообщения, говорящие, что нужно сделать. Файловая система выполняет свою работу и отправляет обратно ответ. Фактически такая система представляет собой сетевой файловый сервер, оказавшийся на той же машине, что и обращающийся к нему процесс. Такое устройство имеет несколько важных следствий. Прежде всего, файловую систему можно модифицировать, экспериментировать с ней и тестировать ее практически независимо от остальных частей MINIX. Далее, файловую систему можно легко перенести на другой компьютер, где есть компилятор С, скомпилировать ее там и использовать как отдельный удаленный UNIX-подобный файловый сервер. Единственные изменения коснутся того, как отправляются и принимаются сообщения, поскольку это делается по-разному на разных платформах. В последующих разделах мы представим обзор многих ключевых областей устройства файловой системы. Особое внимание будет удалено сообщениям, структуре файловой системы, битовым картам, г-узлам, кэшированию блоков, путям и каталогам, дескрипторам файлов, блокированию файлов и специальным файлам (а также каналам). Рассмотрев эти темы, мы покажем, как все это работает вместе, проследив, что происходит, когда пользовательский процесс выполняет системный вызов read. 5.6.1. Сообщения Файловая система понимает 39 типов сообщений, запрашивающих различные действия. Все они, кроме двух, соответствуют системным вызовам MINIX. Исключения составляют два сообщения, генерируемые другими компонентами MINIX. Что касается системных вызовов, то 31 из них принимаются от пользовательских процессов, 6 сообщений соответствуют системным вызовам, которые сначала обрабатываются менеджером памяти, который затем, чтобы завершить работу, вызывает файловую систему. Еще два сообщения также обрабатываются файловой системой. Все эти сообщения перечислены в табл. 5.4. Таблица 5.4. Сообщения файловой системы. Имя файла всегда передается как указатель на строку. Ответное значение, отмеченное как состояние , равно ОК или ERROR
Сообщения от менеджера памяти Входные параметры Ответное значение EXEC EXIT FORK SETGID SETSID SETUID PID (идентификатор процесса) Состояние PID Состояние PID родителя, PID потомка Состояние PID, действительное и эффективное значения GID Состояние PID Состояние P1D, действительное и эффективное значения UID Состояние
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |