Главная страница  Межпроцессное взаимодействие (состязание) 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 [ 162 ] 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

а отсутствие страничных прерываний - 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

Сообщения от пользователя

Входные параметры

Ответное значение

ACCESS

Имя файла, режим доступа

Состояние

CHDIR

Имя нового рабочего каталога

Состояние

CHMOD

Имя файла, новая спецификация доступа

Состояние

CHOWN

Имя файла, новый владелец и группа

Состояние

CHROOT

Имя нового корневого каталога

Состояние

CLOSE

Дескриптор закрываемого файла

Состояние

CREAT

Имя создаваемого файла, режим

Дескриптор файла

Дескриптор файла (DUP2 требует два

Новый дескриптор файла

дескриптора)

FCNTL

Дескриптор файла, код функции, аргументы

Зависит от функции

FSTAT

Имя файла, буфер

Состояние

IOCTL

Имя файла, код функции, аргументы

Состояние



Сообщения от пользователя

Входные параметры

Ответное значение

LINK

Имя файла, на который создается ссылка, имя ссылки

Состояние

LSEEK

Дескриптор файла, смещение, место, откуда считать смещение

Новое положение

MKDIR

Имя файла, спецификация доступа

Состояние

MKNOD

Имя каталога или признак специального файла, режим доступа и адрес

Состояние

MOUNT

Имя специешьного файла, точка монтирования, флаг только для чтения

Состояние

OPEN

Имя открываемого файла, флаг r/w

Дескриптор файла

PIPE

Указатель на два файловых дескриптора (модифицируются)

Состояние

READ

Дескриптор файла, буфер, сколько байтов

Количество прочитанных байтов

RENAME

Имя файла, имя файла

Состояние

RMDIR

Имя файла

Состояние

STAT

Имя файла, буфер для сохранения информации

1 Состояние

STIME

Указатель на текущее значение времени

Состояние

SYNC

Всегда ОК

TIME

Указатель на место, куда будет записано текущее значение времени

Состояние

TIMES

Указатель на буфер для записи времени работы процесса и потомков

Состояние

UMASK

Дополнение к маске режимов доступа

Всегда ОК

UMOUNT

Имя демонтируемого специального файла

Состояние

UNLINK

Имя файла

Состояние

UTIME

Имя файла, значения времени для него

Всегда ОК

WRITE

Дескриптор файла, буфер, сколько байтов

Количество записанных байтов

Сообщения от менеджера памяти

Входные параметры

Ответное значение

EXEC

EXIT

FORK

SETGID

SETSID

SETUID

PID (идентификатор процесса) Состояние

PID Состояние

PID родителя, PID потомка Состояние

PID, действительное и эффективное значения GID Состояние PID Состояние

P1D, действительное и эффективное значения UID Состояние

Прочие

Входные параметры

Ответное значение

сообщения

REVIVE

Процесс, который будет оживлен

Ответного сообщения нет

UNPAUSE

Процесс, который нужно проверить

(Пояснения в тексте)



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 [ 162 ] 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

© 2000 - 2018 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.