Для организации передачи данных процессами UNIX использует семафоры, программные каналы (образуются с помощью системного вызова pipe), очереди сообщений (образуются с помощью системного вызова msget) разделяемую память (образуется с помощью системного вызова shmget).
Один процесс создает сегмент виртуальной памяти, куда помещает свое сообщение, а другой процесс может подсоединить этот сегмент с помощью системного вызова shat.
В IBM OS/360 подзадачи играли дополнительную роль, эти основы используются в UNIXе как процессы.
Свопинг
Механизм, обеспечивающий квантование времени, а именно он организует вытеснение из памяти этих процессов, которые находились там дольше всех (и, или обладают более низким приоритетом).
Пример:
Все процессы имеют приоритет. Процесс свопинга рассматривается в виде выполнения нескольких шагов.
Своп – диск используется для временного хранения образных процессов.
Шаг 1.
На первом шаге в основной памяти располагаются образы процессов a, b, c. Имеется некоторая программа d, претендующая на место в ОП и процессорное время.
|
|
Шаг 2.
Пусть самым старым является образ процесса a (пребывание в ОП)
После окончания текущего кванта времени образ a перемещается на своп – диск, а его место занимает образ d.
Шаг 3.
Выполняется какой-то процесс например c в течении кванта времени.
Допустим, что наиболее старым процессом является образ процесса b. Он вытесняется на своп – диск, а его место занимает процесс a со своп – диска.
Далее аналогично, а именно на следующем кванте времени будет исполняться процесс d и т.д.
Замечание: современные версии UNIX работают более тонко, а именно как правило полностью не вытесняют образ, а в основном вытесняют редко (не) использованные страницы образа, и учитывают приоритеты процесса.
Лекция 11
Файловые системы
Sbin – все программы UNIX.
Etc – все программные средства для разгрузки.
Lib – библиотеки и компилятор C.
Home – единственный пользовательский каталог. Когда пользователь начинает работу в системе он автоматически попадает в каталог home, все остальные каталоги пользователю не доступны.
UNIX поддерживает следующие виды файлов: специальные файлы, файлы связи, обычные файлы и каталоги.
Специальные файлы
Специальные файлы используются для организации ввода/вывода информации. Все специальные файлы хранятся в каталоге dev. Каждому устройству ввода/вывода, которые имеются в системе соответствует свой файл.
Когда пользователь хочет обратиться к какому-то внешнему устройству, то он обращается не к устройству, а к специальному файлу.
|
|
Обращение происходит с помощью команд read/write. Когда следует обращение ОС перехватывает его и сама вызывает необходимый драйвер. При этом информация специального файла используется непосредственно самим драйвером т.к. она содержит полное описание физического устройства.
Таким образом специальные файлы можно рассматривать как посредника между пользователем и устройством ввода/вывода. Обеспечивается развязка пользовательских программ от устройства.
Файлы связи
Можно создать 1 или несколько связей к конкретному файлу. Эти файлы связи могут быть помещены в различные пользовательские каталоги и фактически создается иллюзия для пользователя о том, что в некоторых каталогах хранятся копии одного и того же файла.
В действительности файл будет находиться в одном каталоге, в другом будут находиться только указатели на него. Это экономит память, а с другой стороны повышает производительность системы т.к в случае когда пользователю понадобиться другой каталог с файлами, ему не нужно будет перекачивать из одного в другой каталог, а достаточно поставить указатели.
Обычные файлы
Это файлы которые может использовать пользователь. Согласно концепции UNIX, файл – последовательность символов. Файл для ОС является единственной единицей обмена информации. Выделение логических записей из файла лежит на пользователе или его прикладной программе.
Для полной идентификации любого файла используется понятие маршрута.
/home/A1/ABC/abc.c
имена в UNIX могут быть составными (abc.txt.ver1). Число символов около 8, а общая длина символов в имени файла – около 200 символов.
Каталоги
Каждый каталог содержит информацию о включенных в него файлах или подкаталогах более низкого уровня. Эта информация структурирована в виде записи.
Каждая запись содержит имя файла и указатель на индексный дескриптор. Полное описание содержится не в каталоге и имеет структуру показанную в таблице выше. Здесь указывается: тип файла, длина в байтах, дата и время создания или последней модификации файла, код защиты файла, идентификатор пользователя и группы, указатель на первый блок (физически на диске файл хранится в виде цепочки блоков), счетчик:
Для каждого файла создается 1 дескриптор, но записей в каталоге о файлах может быть много. Каждый раз когда пользователь создает в новом каталоге запись о существующем файле в счетчик дескриптора добавляется 1. счетчик показывает сколько ссылок из разных каталогов существует для данного файла.
Когда из какого-то каталога удаляется запись из счетчика вычитается 1, но сам файл из внешней памяти не удаляется, он удаляется только тогда, когда счетчик = 0.
Лекция 12