Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Open, creat, сlose, dup, dup2, lseek, read, ready, write, writev, pipe, fcnt1.




Стандартная библиотека ввода-вывода вместо использования файлов дескриптора определяет указатель на специальную структуру данных типа FILE, называемый потоком или файловым указателем. Стандартные потоки ввода-вывода обозначаются символическими именами: stdin, stdout и stderr соответственно для потоков ввода, вывода и сообщения об ошибках. Они соответствуют файловым дескрипторам 0, 1 и 2.

extern FILE *stdin;

extern FILE *stdout;

extern FILE *stderr;

 

Для работы с файлами используются функции:

· Fopen, fclose, fflush, getc, putc, gets, puts, fread, fwrite, fseek, fprintf, fscanf, fileno.

 

Основным достоинством библиотечных функций является буферизация ввода/вывода, позволяющая минимизировать число системных вызовов чтения и записи. При открытии файла и создании потока библиотечные функции автоматически размещают необходимые буферы, о которых приложение может уже не заботиться.

Обеспечивается три типа буферизации:

1. Полная буферизация. Операции чтения и записи завершаются после того, как будет заполнен буфер ввода/вывода. Содержимое буфера записывается на диск автоматически или при вызове функции fflush.

2. Построчная буферизация. Практический ввод/вывод выполняется с помощью системных вызовов read, write построчно при обнаружении конца строки (перевода каретки). Обычно применяется для стандартных потоков ввода/вывода.

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

Характер буферизации может быть изменен с помощью следующих функций:

void setbuf (FILE *stream, char *buf);

int setbuf (file *stream, char *buf, int type, size_t size);

type à _IOFBF, _IOLBF, _IONBF; BUFSIZE или stat.st_blksize

Функция setbuf позволяет включить/выключить буферизацию для потока, указанного в качестве первого аргумента. Если второй аргумент указывает на буфер размером size, то буферизация включается, а если тут стоит NULL, то выключается.

Функция setvbuf позволяет установить тип буферизации (третий аргумент). Её четвёртый аргумент определяет размер буфера, адресованного вторым аргументом.

Каждый поток в стандартной библиотеке представлен указателем на структуру FILE, которая содержит следующие поля:

1. Указатель на следующий символ

2. Число байт в буфере

3. Указатель на буфер

4. Флаги состояния потока

5. Указатель на файловый дескриптор

Размер буфера определяется либо значением специального поля в структуре stat, либо с помощью стандартного значения BUFERSIZE, определённого в библиотеке.

 

Файлы отображаемые в памяти

#include <sys/types.h>

#include <sys/mman.h>

caddr_tmmap(caddr_t addr,size_t len,int prot,int flags,int fields,off_t off);

Системный вызов mmap предоставляет доступ к файлам, альтернативный вызовам read и write. С помощью этого вызова процесс может отображать участки файлов в своё адресное пространство. После этого данные файла могут быть получены или записаны путем чтения, записи в память.

Этот вызов задает отображение числа байтов, определённых len, для файла с дескриптором fildes, начиная со смещения off в область памяти со стартовым адресом addr. Перед вызовом mmap файл должен быть открыт с помощью функции open.

Аргумент prot определяет права доступа к области памяти, которые должны соответствовать правам доступа к файлу. Значение len ОС округляет до границы следующей страницы виртуальной памяти (выделяется область, кратная странице).

Использование права на выполнения, позволяет процессу определить собственный механизм загрузки кода. Такой подход используется редактором динамических связей, при загрузке динамических библиотек, когда библиотека отображается в адресное пространство процесса.

Аргумент flags определяет дополнительные особенности управления памятью и может иметь следующие значения:

· MAP_SHARED ¾ область памяти может использоваться несколькими процессами

· MAP_PRIVETE ¾ область памяти используется только вызывающим процессом

· MAP_FIXED ¾ требуется выделение памяти начиная точно с addr

· MAP_NORESERVED ¾ не требуется резервировать область свопинга

#include <sys/types.h>

#include <sys/stat.h>

#include <unistd.h>

#include <fcntl.h>

main (int argc, char *argv[])

{ int fd_src, fd_dst;

caddr_t addr_src, addr_dst;

struct stat filestat

fd_src=open(argv[1],O_RDONLY);

fd_dst=open(argv[2],O_RDWR|O_CREAT);

fstat(fd_src, &filestat);

lseek(fd_dst, filestat.st_size-1,EEK_SET);

write(fd_dst,“ ”,1);

addr_src=mmap((caddt_t)0,filesta.st_size,PROT_READ,MAP_SHARED,fd_src,0));

addr_dst=mmap((caddr_t)0,filestat.st_size,PROT_READ|PROT_WRITE, MAP_SHARED, fd_dst);

memcpy(addr_dst,addr_src,filestat.st_size);

exit(1); }

 

Метаданные файла

Каждый файл имеет, помимо своих собственных данных, метаданные, которые описывают его характеристики.

#include <sys/types.h>

#include <sys/stat.h>

int stat (const char *path, struct stat *buf);

int lstat (const char *path, struct stat *buf);

int fstat (int fildes, struct stat *buf);

1. mode_t st_mode ¾ тип файла и права доступа

2. ino_t st_ino ¾ номер дескриптора или структуры (inode), где хранятся метаданные данного файла

3. dev_t st_dev ¾ идентификатор устройства, содержащего файл

4. dev_t st_rdev ¾ для специального файлового устройства, содержит номер устройства, адресуемого этим файлом

5. nlink_t st_nlink ¾ число жестких связей файла

6. uid_t st_uid ¾ пользовательский идентификатор (владелец) файла

7. gid_t st_gid ¾ идентификатор группы владельца файла

8. off_t st_size ¾ размер обычного файла в байтах; для специального файла устройств это поле не определено

9. time_t st_atime ¾ время последнего доступа к файлу

10. time_t st_mtime ¾ время последней модификации файла

11. time_t st_ctime ¾ время последнего изменения метаданных файла

12. long st_blksize ¾ оптимальный размер блока для операций ввода/вывода; для специальных файлов это поле не определено

13. long st_blocks ¾ число размещенных 512 байтовых блоков, которые выделены для хранения данных файла

Для определения типа файла используются специальные макроопределения:

S_ISFIFO ¾ FIFO

S_ISCHR ¾ символьное устройство

S_ISDIR ¾ каталог

S_ISBLK ¾ блочное устройство

S_ISREG ¾ обычный файл

S_ISLNK ¾ символическая связь

S_ISSOCK ¾ сокет

Существуют функции, позволяющие изменить владельца файла и владельца группы, а также изменить права доступа к файлу.

 

 

Файловая подсистема операционной системы UNIX

Базовая файловая система UNIX s5fs

Каждый жесткий диск состоит из одного или нескольких разделов. Расположение и размер разделов определяется при формировании диска. Разделы выступают в качестве независимых устройств, доступ к которым осуществляется как к различным носителям данных. В разделе может располагаться только одна файловая система, которая не может занимать нескольких разделов файлов. Система s5fs имеет следующую структуру:

Суперблок содержит общую информацию о файловой системе, необходимую для монтирования и управления файловой системой в целом, например, для размещения новых файлов. В каждой файловой системе существует только один суперблок, который размещается в начале раздела. Суперблок считывается в память при монтировании файловой системы и находится там до ее размонтирования. Суперблок содержит следующую информацию:

· тип файловой системы

· размер файловой системы в логических блоках, включая сам суперблок, массив файловых дескрипторов и блоки хранения данных

· размер массива индексных дескрипторов

· число свободных блоков, доступных для размещения

· число свободных индексных дескрипторов, доступных для размещения

· флаг модификации

· флаг режима монтирования

· размер логического блока (512, 1024, 2048)

· список номеров свободных файловых дескрипторов

· список адресов свободных блоков.

Так как число свободных файловых дескрипторов и блоков хранения данных может быть большим, последние два списка целиком в суперблоке не хранятся. Для индексных дескрипторов хранится только часть списка. Когда число свободных индексных дескрипторов в этом списке приближается к нулю, ядро операционной системы просматривает массив индексных дескрипторов и вновь формирует список свободных индексных дескрипторов. Индексные дескрипторы имеют специальное поле, по которому можно определить, занят он или свободен.

По содержимому блоков хранения данных нельзя определить, занят этот блок или свободен, поэтому необходимо хранит список адресов свободных блоков целиком. Суперблок содержит только один блок из этого списка. Первый элемент этого блока указывает на блок, хранящий продолжение этого списка и т.д. Выделение свободных блоков для размещения файлов производится с конца списка суперблока. Когда в списке остается единственный элемент, ядро интерпретирует его как указатель на блок, содержащий продолжение этого списка. В этом случае содержимое этого блока считывается в суперблок и блок становится свободным. Такой подход позволяет использовать дисковое пространство под списки, пропорциональное свободному месту в файловой системе, то есть когда свободного места становится мало, список адресов свободных блоков помещается целиком в суперблоке.

 

Индексные дескрипторы

Массив индексных дескрипторов содержит метаданные всех файлов файловой системы. Индексный дескриптор содержит информацию о файле, необходимую для обработки данных, хранящихся в файле. Каждый файл ассоциирован с одним индексным дескриптором, хотя в файловой системе может быть несколько имен, каждый из которых указывает на один и тот же индексный дескриптор. Ядро обращается к индексному дескриптору по индексу в массиве индексных дескрипторов. Один индексный дескриптор является корневым индексным дескриптором файловой системы. Через него обеспечивается доступ к структуре каталогов и файлов после монтирования файлов системы. Размер массива индексных дескрипторов является фиксированным и задается при создании файловой системы. Следовательно, файловая система s5fs имеет ограничение по числу файлов, которые могут в ней храниться, независимо от размера этих файлов.

Индексный дескриптор имеет следующую структуру:

Индексный дескриптор не содержит имени файла, которое хранится в блоке хранения данных, и содержимого файла, которое размещено в блоках хранения данных. При открытии файла ядро помещает копию дискового индексного дескриптора в память в специальную таблицу, которая содержит несколько дополнительных полей. Основные поля индексного дескриптора следующие:

1. первое поле хранит атрибуты файла, такие, как тип файла и права доступа к файлу, а также три бита под модификацию прав доступа. Типы могут быть следующими:

· обычные файлы

· каталоги

· специальные блочные устройства

· символьные устройства;

2. число ссылок на файл

3. идентификаторы владельца-пользователя и группы

4. размер файла в байтах;

Для специальных файлов это поле содержит старшие и младшие номера устройства.

5. время последнего доступа к файлу

6. время последней модификации

7. время последней модификации индексного дескриптора;

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

 

Блоки хранения данных

Блоки хранения данных занимают большую часть дискового раздела и их число определяет максимальный суммарный объем файлов данной файловой системы. Размер блока выбирается кратным 512 байтам. Обработка данных файла осуществляется через индексный дескриптор, который содержит ссылки на блоки данных. Файлы в операционной системе UNIX могут содержать пустые зоны, или так называемые дыры. Процесс может создать пустой файл с помощью системного вызова lseek, сместив файловый указатель относительно начала файла и сделать запись данных, при этом между началом файла и началом записанных данных образуется незаполненная область, при чтении этой области процесс получит округленные байты. Так как логические блоки, соответствующие дыре, не содержат данные, нет смысла размещать для них дисковые блоки. В этом случае соответствующие элементы массива адресов индексных дескрипторов содержат нулевой указатель.

Когда процесс производит чтение такого блока, ядро производит последовательность нулей. Дисковые блоки размещаются для таких файлов только при записи в соответствующие логические блоки файла.

 

Имена файлов

Имя файла хранится в файлах специального типа, называемых каталогами, но ни метаданные, ни блоки хранения данных не содержат имени файла. Такой подход позволяет файлу иметь практически неограниченное число имен.

Каталог файловой системы s5fs представляет собой таблицу, каждый элемент которой имеет фиксированный размер в 16 байтов. Два байта хранятся в номере индексного дескриптора, а 14 байтов – его имя. Таким образом, число индексных дескрипторов не может превышать 65535. Первый элемент каталога адресует сам текущий каталог и имеет имя «.» (точка), а второй – родительский каталог под именем «..» (две точки). При удалении имени файла из каталога номер индексного дескриптора соответствующего элемента устанавливается равным нулю. Обычно ядро не удаляет такие свободные элементы, поэтому размер каталога не уменьшается даже при удалении файла. Это составляет определенные проблемы для каталогов с большим числом файлов.

 

Недостатки и ограничения файловой системы s5fs

1. С точки зрения надежности в файловой системе является суперблок, так как при его повреждении файловая система не может использоваться, а так как суперблок хранится в единственном экземпляре, вероятность появления ошибок достаточно высокая.

2. Относительно низкая производительность связана с размещением файловых компонентов на диске: индексный дескриптор размещается в начале файловой системы, а блоки хранения данных – на остальном пространстве диска, а при работе с файлами происходит как обращение к метаданным, как и блокам данных файла, и так как эти элементы могут быть достаточно разнесены по файловому пространству, необходимо перемещать головки диска, что увеличивает время.

3. Использование дискового пространства не оптимально. Для повышения производительности файловой системы желательно использовать блоки большого размера, но если файлы имеют небольшой размер и их количество значительно, получаются значительные потери дискового пространства из-за недозаполнения блоков.

4. Массив индексных дескрипторов имеет фиксированный размер, задаваемый при создании файловой системы. Этот размер накладывает ограничения на максимальное число файлов, которые могут существовать в файловой системе.

Ограничение на длину имени файла ¾ 14 символов ¾ и максимальное число индексных дескрипторов.

 

Файловая система FFS (Fast File System)

Файловая система FFS обладает полной функциональностью системы s5fs и использует те же структуры данных ядра ОС. Отличия касаются расположения файловой системы на диске, дисковых структур данных и алгоритмов размещения свободных блоков.

Здесь суперблок также содержит полное описание файловой системы и располагается в начале раздела, но в нём не хранятся данные о свободном пространстве файловой системы, т.е. дескрипторы свободных блоков и индексные дескрипторы. Следовательно данные суперблока остаются неизменными на протяжении существования файловой системы. Для повышения надёжности файловой системы суперблок дублируется.

Организация файловой системы предусматривает логическое деление дискового раздела на одну или несколько групп цилиндров. Группа цилиндров ¾ несколько последовательных дисковых цилиндров. Каждая группа цилиндров содержит управляющую информацию, включающую резервную копию суперблока, массив индексных дескрипторов, данные о свободных блоках, информацию об использовании дисковых блоков в группе. Для каждой группы цилиндров при создании файловой системы выделяется место под определенное количество индексных дескрипторов. Обычно на каждые два килобайта блоков хранящихся данных создается один индексный дескриптор. Следовательно, есть ограничение не общее количество файлов, которое может быть записано в одной группе цилиндров.

В этой файловой системе кластеры индексных дескрипторов располагаются по всему дисковому разделу, а не в его начале. За счёт этого достигается уменьшение время доступа к данным файла, т.к. блоки данных располагаются ближе к описывающим их индексным дескрипторам. Это также повышает надёжность файловой системы, т.к. уменьшается вероятность потери всех индексных дескрипторов в случае сбоя.

Управляющая информация располагается с различными смещениями от начала группы цилиндров. Это ведёт к тому, что управляющая информация не располагается на одной дисковой пластине, иначе выход из строя одной пластины привел бы к выходу из строя всей файловой системы.

Производительность файловой системы существенно зависит от размера блока хранения данных. Чем больше размер блока, тем больше данных может быть прочитано без поиска и перемещения дисковых головок. FFS поддерживает размер блока до 64Kb. Для преодоления проблемы потери дискового пространства вводится возможность фрагментации дискового блока. Каждый блок дополнительно разбивается на 2, 4 или 8 фрагментов. Блок является единицей передачи данных в операциях ввода/вывода, а фрагмент определяет адресуемую единицу хранения данных на диске. Минимальный размер сегмента определяется размером сектора.

Информация о свободных блоках и фрагментах хранится виде битовой карты блоков. Карта блоков, связанная с определенной группой цилиндров, описывает свободное пространство в фрагментах. Для определения свободен фрагмент или занят, ядро ОС анализирует биты карты.

Файловая система FFS при размещении блоков использует стратегию, направленную на увеличение производительности. Основные принципы этой стратегии таковы:

1. Файл по возможности размещается в блоках хранения данных, принадлежащих одной группе цилиндров, где расположены его метаданные.

2. Все файлы каталога, по возможности, размещаются в одной группе цилиндров.

3. Каждый новый каталог, по возможности, помещается в группу цилиндров, отличную от группы родительского каталога. Этим достигается равномерное распределение данных по диску.

4. Последовательные блоки размещаются, исходя из оптимизации физического доступа.

 

Существует определенный момент времени между завершением чтения блока и моментом чтения следующего блока. За это время диск совершает поворот на некоторый угол. Таким образом, следующий блок для чтения должен, по возможности, располагаться с пропуском нескольких секторов. В этом случаи не требуется совершать пустые обороты диска, т.е. правила размещения свободных блоков на диске направлены, с одной стороны, на уменьшение времени перемещения головок и пустых оборотов дисков, а с другой стороны ¾ на равномерное распределение данных по диску.

Производительность данной файловой системы хороша при не слишком большой загрузке диска и ухудшается при малом свободном пространстве (менее 10% объёма).

 

Каталоги FFS

Структура каталогов файловой системы FFS изменена для обеспечения поддержки длинных имен файлов (до 255 символов). Запись каталога вместо фиксированной длины определяется структурой:

d_ino ¾ номер индексного дескриптора

d_reclen ¾ длина записи

d_namelen ¾ длина имени файла

d_name[] ¾ имя файла

Имя файла имеет переменную длину, дополняемую нулями до 4-х байтной границы.

При удалении имени файла принадлежащая ему запись присоединяется к предыдущей, и значение поля d_reclen увеличивается на соответствующую величину. Удаление первой записи заключается в присвоении нулевого значения полю d_ino.

 

Взаимодействие процессов

Процесс, Понятие и классификация

В предметной области системного программирования понятие процесса является базовым, но вместе с тем недостаточно формально определено. Существуют определения процесса как формального, так и неформального свойства. Понятие процесса является определенным видом абстракции, которую по-разному используют и трактуют разные группы лиц.

Многие архитектуры современных вычислительных машин являются многопроцессорными. Процессор ¾ устройство в составе ЭВМ, способное автоматически выполнять допустимые для него действия в некотором определенном порядке, т.е. по определенной программе, хранящейся в памяти, и непосредственно доступной устройству. Между процессорами в системе существуют информационные и управляющие связи.

Каждый процессор ¾ объект в системе, которым хотели бы воспользоваться одновременно несколько пользователей для исполнения своей программы. В отношении каждого пользователя, претендующего на исполнение программы на некотором процессоре, и системы, распределяющей этот процессор среди многих пользователей, вводится понятие “процесс”.

В общем случае процесс ¾ некоторая деятельность, связанная с исполнением программы на процессоре. Согласно ГОСТу процесс ¾ система действий, реализующая определенную функцию в вычислительной системе и оформленная так, что управляющая программа вычислительной системы может перераспределять ресурсы этой системы в целях обеспечения мультипрограммирования.

При выполнении программы могут потребоваться результаты других процессов или процессоров, или другие ресурсы. Следовательно, ходом развития процесса нужно управлять.

Управление процессами, как и в отношении каждого, так и в отношении их совокупности ¾ функция ОС.

При выполнении программ на центральном процессоре чаще всего различают следующие характерные состояния:

1. Порождение ¾ подготовка условий для первого исполнения на процессоре.

2. Активное состояние, или состояние "счет" ¾ программа выполняется на процессоре.

3. Ожидание ¾ программа не исполняется на процессоре по причине занятости какого-либо требуемого ресурса.

4. Готовность ¾ программа не исполняется, но для использования предоставлены все необходимые в текущей момент ресурсы, кроме ЦП.

5. Окончание ¾ нормальное или аварийное окончание исполнения программы, после которого процессор и другие ресурсы ей не предоставляются.

Процесс находится в каждом или некоторых из своих допустимых состояний в течении некоторого времени, после чего переходит в другое допустимое состояние.

Процессы определяются рядом временных характеристик. В некоторый момент времени процесс может быть порожден, а через некоторое время закончен. Интервал между этими моментами называют интервалом существования процесса. Длительность интервала существования процесса, в общем случае, непредсказуемо. Отдельные виды процессов требуют такого планирования, чтобы гарантировать окончание процесса до наступления некоторого конкретного времени. Это процессы реального времени.

В другой класс входят процессы, время существования которых должно быть не более интервала времени допустимой реакции ЭВМ на запросы пользователя. Это интерактивные процессы. Интервал времени является допустимым, если он не раздражает пользователя.

Остальные процессы относятся к классу пакетных.

 

Сравнение процессов может быть произведено с использованием понятия "трасса" ¾ порядок и длительность пребывания процесса в допустимых состояниях на интервале существования.

Два процесса, имеющие одинаковый конечный результат обработки одних и тех же исходных данных по одной той же или даже различным программам, называют эквивалентными. Трассы эквивалентных процессов в общем случае не совпадают. Если в каждом из эквивалентных процессов обработка данных происходит по одной и той же программе, но трассы при этом в общем случае не совпадают, то такие процессы называют тождественными. При совпадении трасс у тождественных процессов их называют равными. Во всех остальных случаях процессы всегда различны.

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

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

Процессы называются взаимосвязанными, если между ними с помощью системы управления процессами поддерживается какого-либо рода связь: функциональная, пространственно-временная, управляющая, информационная и т.д. В противном случае процессы являются изолированными. При наличии между процессами управляющей связи устанавливается соотношение вида “порождающий-порождённый”.

Если взаимосвязанные процессы при развитии используют совместно некоторые ресурсы, но не связаны между собой информационно, то такие процессы называют информационно-независимыми, а при наличии информационной связи процессы называются взаимодействующими. Схемы механизмов установки таких связей различны, они обусловлены динамикой процессов и выбранным способом связи: явным (явный обмен сообщениями между процессами), или неявным (с помощью разделяемых структур данных). Когда необходимо подчеркнуть связь между взаимосвязанными процессами по ресурсам, их называют конкурирующими.

Управление взаимосвязанными процессами основано на контроле и удовлетворении определенных ограничений, которые накладываются на порядок выполнения таких процессов. Данные ограничения определяют виды отношений, допустимых между процессами, и составляют в совокупности синхронизирующие правила.

Отношение предшествования для двух процессов означает, что первый процесс должен переходить в активное состояние раньше второго.

Отношение приоритетности означает, что некоторый процесс с определённым приоритетом может быть переведён в активное состояние, если в состоянии готовности нет процессов с большим приоритетом, а процессор либо свободен, либо используется программой с меньшим приоритетом.

Отношение взаимного исключения. Процессы используют общий ресурс. Совокупность действий над этим ресурсом одного процесса называют критической областью. Критическая область одного процесса не должна выполняться одновременно с критической областью другого процесса для этого же ресурса.

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

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

 

Ресурсы, Понятие и классификация

Ресурс ¾ всякий потребляемый объект (независимо от формы его существования), обладающий некоторой практической ценностью для потребителя.

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

Вычислительную систему или ЭВМ можно представить как ограниченную последовательность функциональных элементов, обладающих потенциальными возможностями выполнения с их помощью или над ними действий, связанных с обработкой, хранением или передачей данных.

Такие элементы потребляются другими элементами, являющиеся в общем случае пользователями.

Уровень детализации элементов, выделяемых по запросам для использования в системе, может быть различным. Считается, что потребителем выделяемых элементов вычислительной системы будут являться процессы, развивающиеся в ней. Все выделяемые по запросам от процессов элементы системы отождествляются с понятием ресурсов. В соответствие с ГОСТ ресурсом является средство вычислительной системы, которое может быть выделено процессу на определенный интервал времени.

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

Виртуальный ресурс ¾ это некоторая модель физического ресурса. Виртуальный ресурс не существует в том виде, в котором он проявляет себя пользователю. Как модель виртуальный ресурс реализуется в некоторой программно-аппаратной форме. В этом смысле виртуальный ресурс существует. Однако виртуальный ресурс может предоставить пользователю не только часть тех свойств, которые присущи объекту моделирования, т.е. физическому ресурсу, но и свойства, которые ему не присущи. Однако пользователь будет воспринимать их, как реально существующие.

Признак возможности расширения свойств характеризует ресурс с точки зрения возможности построения на его основе некоторого виртуального ресурса. Физический ресурс, который допускает виртуализацию, называется эластичным. Жестким называется физический ресурс, который по своим внутренним свойствам не допускает виртуализации.

При использовании активного ресурса он способен выполнять действия по отношению к другим ресурсам (или даже в отношении самого себя) или процессам, которые в общем случае приводят к изменению ресурса. (Например, ЦП ¾ активный ресурс).

Пассивный ресурс не обладает таким свойством. (Например, память).

Разделение ресурсов на дорогие и дешевые связано с реализацией принципа функциональной избыточности при распределении ресурсов. Перед пользователем стоит задача выбора ¾ получить быстро требуемый ресурс и дорого заплатить за такую услугу, либо подождать выделения требуемого ресурса и после его использования заплатить меньше. При наличии в системе альтернативных ресурсов вводятся и различные цены за их использование.

В отношении каждого ресурса процесс-пользователь выполняет три типа действий: запрос, использование, освобождение.

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

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

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

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

По форме реализации различают твердые и мягкие ресурсы. Под твердыми понимаются аппаратные компоненты машины, а также человеческие ресурсы, остальные ресурсы относятся к мягким. Различным по отношению к твердым и мягким ресурсам является подверженность к сбойным или отказным ситуациям, а также последующее восстановление работоспособности.

В классе мягких ресурсов выделено два типа:

· программные

· информационные

Если мягкий ресурс допускает копирование и эффект от использования ресурса-оригинала и ресурса-копии идентичен, то такой ресурс называется программным, в обратном случае – информационным. Мягкие информационные ресурсы либо принципиально не допускают копирования, либо допускают копирование, но оно является функцией времени (сообщения, сигналы, запросы на прерывание и т.д.).

 

Взаимодействие процессов

Задача взаимного исключения

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

В качестве примера рассматривается два последовательных процесса, которые удобно считать циклическими. В каждом цикле выполнения процесса существует критический интервал. Это означает, что в любой момент времени только один процесс может находиться внутри своего критического интервала. Чтобы осуществить такое взаимное исключение, оба процесса имеют доступ к некоторому числу общих переменных. Операции проверки текущего значения такой общей переменной и присваивание нового значения общей переменной рассматриваются как неделимые. То есть, если два процесса осуществляют присваивание новое значение одной и той же общей переменной одновременно, то присваивание происходит друг за другом и окончательное значение переменной одному из присвоенных значений, но никак не их смеси. Если процесс поверяет значение переменной одновременно с присваиванием ей значения другим процессом, то первый процесс обнаруживает либо старое, либо новое значение, но никак не их смесь.

Решение №1.

begin integer очередь;

очередь:= 1;

parbegin

процесс 1: begin

L1: if (очередь = 2) then goto L1;

критический интервал 1;

очередь:= 2;

остаток цикла 1;

goto L1;

end;

parend;

end;

процесс 2: begin

L2 if (очередь = 1) then goto L2;

критический интервал 2;

очередь:= 1;

остаток цикла 2;

goto L2;

end;

Недостатки решения:

· процессы могут входить в критический интервал строго последовательно

· если кто-то из процессов останется в остатке цикла, то он затормозит и второй процесс

Решение №2.

begin integer С1,С2;

С1:= 1;

С2:= 1;

parbegin

процесс 1: begin

L1: if (С2 = 0) then goto L1;

С1:= 1;

критический интервал 1;

С1:= 0;

остаток цикла 1;

goto L1;

end;

parend;

end;

процесс 2: begin

L2 if (С1 = 1) then goto L2;

С2:= 0;

критический интервал 2;

С2:= 1;

остаток цикла 2;

goto L2;

end;

Недостаток: принципиально при развитии процессов строго синхронно они могут одновременно войти в критический интервал.

Решение №3.

begin integer С1,С2;

С1:= 1;

С2:= 1;

parbegin

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...