Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Решение задачи передачи данных одного процесса другому при помощи монитора (случай информационной базы)Содержание книги
Поиск на нашем сайте
В вычислительных системах обычно имеются “процессы-читатели ” и “процессы-писатели”( readers and writers), если первые читают данные из информационной базы, то вторые, записывают данные в информационные базы. Заметим, что процессы-читатели не изменяют содержимого базы и могут обращаться к ней одновременно. А процесс-писатель может изменять данные, поэтому он должен иметь монопольный, исключительный доступ к базе данных. Эта задача была впервые сформулирована и решена в работе Куртуа, Хейманса и Парнаса7. Решение этой задачи с использованием монитора впервые было предложено в работе Хоара8. monitor Читатели_Писатели; Var READERS: integer; {переменная указывает количество активных читателей, когда READERS = 0, ожидающий процесс-писатель получает возможность начать работу} SmbWRITE: boolean; {somebody write - когда кто-то пишет эта переменная имеет истинное значение} PermREAD, PermWRITE: condition; {permission read/write - пока не появится истинное значение условия читать разрешается,PermREAD - процесс-читатель не может продолжить свое выполнение; пока не появится истинное значение условия писать разрешается, Permwrite - процесс-писатель не может продолжить свое выполнение} Procedure Начало_Чтения; Begin If (SmbWRITE) or (Очередь(PermWRITE)) then Wait(PermREAD); {ожидание сигнала - читать разрешается} READERS: = READEARS+1; Signal(PermREAD); {сигнал, оповещающий о возможности чтения} end; Procedure Конец_Чтения; Begin READERS:=READERS-1; If READERS=0 then Signal(PermWRITE); {сигнал, оповещающий о возможности записи} end; Procedure Начало_Записи; Begin if (READERS>0) or (SmbWRITE) then Wait(PermWRITE); {ожидание сигнала - писать разрешается} SmbWRITE:=true end; Procedure Конец_Записи; Begin SmbWRITE:=false; If Очередь(PermREAD) then Signal(PermREAD) {сигнал, оповещающий о возможности чтения} else Signal(PermWRITE); {сигнал, оповещающий и возможности записи} end; Begin READERS:=0; SmbWRITE:=false end; Когда процессу-читателю нужно произвести чтение, он вызывает процедуру монитора под названием Начало_Чтения, а после завершения чтения - процедуру Конец_Чтения. После входа в процедуру Начало_Чтения новый процесс-читатель сможет продолжить свою работу, если нет процесса-писателя, производящего в данный момент запись или ожидающего очереди на запись. Второе из этих условий необходимо для того, чтобы предотвратить возможность бесконечного откладывания ожидающих процессов-писателей. Отметим, что процедура Начало_Чтения завершается выдачей сигнала разрешающего чтение, PermREAD, чтобы следующий, ожидающий в очереди читатель мог начать чтение. Причем во время выполнения такой цепочки действий все вновь приходящие процессы включаются в очередь ожидания. Когда процесс завершает операцию чтения, он вызывает процедуру Конец_Чтения, которая уменьшает число читателей на 1 и, в конце концов количество процессов-читателей становится равным 0; в этот момент вырабатывается сигнал разрешающий запись, PermWRITE, и следующий процесс-писатель получает возможность продолжать работу. Когда процессу-писателю нужно произвести запись, он вызывает процедуру Начало_Записи. Поскольку процесс-писатель должен иметь монопольный доступ к информации, то если в настоящий момент есть уже работающие процессы-читатели или какой-либо активизированный процесс-писатель, данному процессу-писателю придется ждать выдачи сигнала PermWRITE. Когда же писатель получает возможность продолжить работу, переменная SmbWRITE:=true. Когда процесс-писатель заканчивает свою работу, он устанавливает SmbWRITE:=false, тем самым, открывая вход в монитор для других процессов. Писатель, завершивший работу, проверяет, в первую очередь, нет ли ожидающего читателя - если есть, он выдает сигнал PermREAD, так что ожидающий читатель получает возможность продолжить работу. Если читателей нет, то выдается сигнал PermWRITE и получает возможность продолжить работу ожидающий процесс-писатель. Рассмотренный нами монитор может быть использован как средство управления доступом для целой базы данных, для некоторого подмножества базы данных, содержащего фиксированное число записей, и даже для отдельно взятой записи.
17.1) Фа́йловая систе́ма (англ. file system) — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании: цифровых фотоаппаратах, мобильных телефонах и т. п. Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имени файла (папки), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов. Иерархия каталогов Практически всегда файлы на дисках объединяются в каталоги. В простейшем случае все файлы на данном диске хранятся в одном каталоге. Такая одноуровневая схема использовалась в CP/M и в первой версии MS-DOS 1.0. Иерархическая файловая система со вложенными друг в друга каталогами впервые появилась в Multics, затем в UNIX. Wiki.txt Tornado.jpg Notepad.exe (Одноуровневая файловая система)
Каталоги на разных дисках могут образовывать несколько отдельных деревьев, как в DOS/Windows, или же объединяться в одно дерево, общее для всех дисков, как в UNIX-подобных системах. C: \Program files \CDEx \CDEx.exe \CDEx.hlp \mppenc.exe \Мои документы \Wiki.txt \Tornado.jpg D: \Music \ABBA \1974 Waterloo \1976 Arrival \Money, Money, Money.ogg \1977 The Album (Иерархическая файловая система Windows/DOS) В UNIX существует только один корневой каталог, а все остальные файлы и каталоги вложены в него. Чтобы получить доступ к файлам и каталогам на каком-нибудь диске, необходимо смонтировать этот диск командой mount. Например, чтобы открыть файлы на CD, нужно, говоря простым языком, сказать операционной системе: «возьми файловую систему на этом компакт-диске и покажи её в каталоге /mnt/cdrom». Все файлы и каталоги, находящиеся на CD, появятся в этом каталоге /mnt/cdrom, который называется точкой монтирования (англ. mount point).[2] В большинстве UNIX-подобных систем съёмные диски (дискеты и CD), флеш-накопители и другие внешние устройства хранения данных монтируют в каталог /mnt, /mount или /media. Unix и UNIX-подобные операционные системы также позволяет автоматически монтировать диски при загрузке операционной системы. / /usr /bin /arch /ls /raw /lib /libhistory.so.5.2 /libgpm.so.1 /home /lost+found /host.sh /guest /Pictures /example.png /Video /matrix.avi /news /lost_ship.mpeg (Иерархическая файловая система в Unix и UNIX-подобных операционных системах) Задачи файловой системы Основные функции любой файловой системы нацелены на решение следующих задач: именование файлов; программный интерфейс работы с файлами для приложений; отображения логической модели файловой системы на физическую организацию хранилища данных; организация устойчивости файловой системы к сбоям питания, ошибкам аппаратных и программных средств; содержание параметров файла, необходимых для правильного его взаимодействия с другими объектами системы (ядро, приложения и пр.).
В многопользовательских системах появляется ещё одна задача: защита файлов одного пользователя от несанкционированного доступа другого пользователя, а также обеспечение совместной работы с файлами, к примеру, при открытии файла одним из пользователей, для других этот же файл временно будет доступен в режиме «только чтение». 2) Общая структура файловой системы Файловая система Linux основана на модели иерархического дерева каталогов и с этой точки зрения аналогична файловой системе Windows и MS-DOS. Однако в отличие от названных систем в Linux отсутствует понятие логического устройства (диска), все каталоги являются подкаталогами единого дерева и начинаются с так называемого корневого каталога. Корневой каталог системы обозначается символом /, подкаталог корневого каталога с именем каталог1 обозначается /каталог1, подкаталог этого каталога /каталог1/каталог2, а файл, находящийся в каталоге /каталог1 обозначается /каталог1/файл1 (то есть, с точки зрения обозначения, никакой разницы между файлами и каталогами нет).
В именах файлов и каталогов могут встречаться практически любые символы (причем прописные и строчные буквы различаются), однако далеко не все программы могут работать с именами, в которых используется, например, символ звездочка (*). Необходимо проявлять особую осторожность и при работе с файлами, содержащими в именах символы с кодами, превышающими 127 (например, буквы национальных алфавитов). Имена физических устройств компьютера выглядят как имена файлов в подкаталоге первого уровня /dev (и действительно являются файлами особого вида). Разделы жесткого диска с интерфейсом IDE (EIDE) имеют имена вида /dev/hdXY, где X это одна из букв a, b, c, d, обозначающие соответственно с 1 по 4 физический диск (от Primary Master до Secondary Slave), а Y число, обозначающее номер раздела на диске (разделы нумеруются в том порядке, в котором они перечислены в таблице разделов диска). Например, единственный раздел второго (Slave) диска, присоединенного к первичному (Primary) контроллеру, обозначается /dev/hdb1.
|
||
|
Последнее изменение этой страницы: 2016-08-16; просмотров: 395; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.009 с.) |