Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСиСП теория 4 семестра - методичка слайдов Бранцевич Петр Юльянович 2009.doc
Скачиваний:
160
Добавлен:
15.06.2014
Размер:
1.75 Mб
Скачать

2.15 Файлы устройств

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

/dev/tty00

/dev/lp

/dev/discs

/dev/scsi

/dev/null – пустое устройство

/dev/zero – нулевое устройство

/dev/full – полное устройство

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

Файлы разделяются на блочные устройства и на символьные устройства. Файловые системы могут находиться только на блочном устройстве. Блочные устройства могут иметь связанные с ними символьные устройства для обеспечения быстрого и прямого доступа.

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

Последовательность действий по передаче данных следующая:

  1. системный вызов чтения/записи (read/write) обращается к индексному дескриптору файла обычным образом;

  2. ОС проверяет соответствующее поле в индексном дескрипторе и определяет является ли устройство блочным или символьным и извлекает старший номер устройства;

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

В inode хранится и младший номер устройства, который позволяет уточнить доступ к конкретному устройству, если используется один драйвер для работы с несколькими устройствами (при использовании одного порта).

#include <fentl.h>

int main()

{

int i,fd;

fd=open(“/dev/tty00”,O_WRONLY);

for (i=0; i<100; i++)

write(fd,’x’,1);

close(fd);}

3 Процессы

3.1 Виды процессов

Процесс можно представить как совокупность данных ядра системы, необходимых для описания программы в памяти и управления её выполнением, или как программу, на стадии выполнения, т.к. все выполняющиеся программы предоставлены в ОС UNIX в виде процессов.

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

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

Виды процессов:

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

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

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

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