Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Решение задачи передачи данных одного процесса другому при помощи монитора (случай информационной базы)↑ ⇐ ПредыдущаяСтр 6 из 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; просмотров: 251; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.219.116.93 (0.007 с.) |