- •Кафедра программного обеспечения информационных технологий
- •«Операционные системы и системное программирование»
- •40 01 01
- •Содержание
- •Введение
- •Разработка программ в ос unix
- •1.1 Отличительные черты ос unix
- •1.2 Основы архитектуры операционной системы unix
- •1.3 Ядро системы
- •1.4 Пользователи системы, атрибуты пользователя
- •1.5 Системные вызовы и функции стандартных библиотек
- •1.6 Описание программы, переменные окружения
- •1.7 Аргументы и опции программы
- •1.8 Обработка ошибок
- •2 Файлы и файловая система
- •2.1 Файлы
- •2.2 Типы файлов
- •2.2.1 Обычные файлы
- •2.2.2 Каталоги
- •2.2.3 Файлы символичной связи (ссылки)
- •2.2.4 Файлы устройства
- •2.2.5 Именованные каналы
- •2.2.6 Сокеты
- •2.3 Владельцы файлов и права доступа к файлу
- •2.4 Дополнительные атрибуты файла
- •2.5 Файловый ввод/вывод
- •Открытие файла
- •2.6 Мультиплексированный ввод/вывод
- •2.7 Векторный ввод/вывод
- •2.8 Файлы, отображающиеся в памяти
- •2.9 Каталоги, работа с каталогами
- •2.9.1 Создание каталога
- •2.9.2 Удаление каталога
- •2.9.3 Чтение информации из каталога
- •2.9.4 Закрытие каталога
- •2.10 Создание жестких ссылок
- •2.11 Символическая ссылка
- •2.12 Удаление ссылки (или имени файла)
- •2.13 Переименование файла
- •2.14 Файловая система ос unix
- •2.14.1 Организация файловой системы ext2
- •2.15 Файлы устройств
- •3 Процессы
- •3.1 Виды процессов
- •3.2 Создание процесса
- •3.3 Вызовы семейства exec
- •3.4 Функции завершения процесса
- •3.5 Ошибки
- •3.6 Копирование при записи
- •3.7 Системные вызовы ожидания завершения процесса
- •3.8 Системный вызов system
- •3.9 Основные параметры, передаваемые процессу
- •3.10 Сеансы и группы процессов
- •4 Взаимодействие процессов
- •4.1 Сигналы
- •4.1.1 Отправка (генерация) сигнала
- •4.1.2 Наборы сигналов
- •4.1.3 Блокировка сигналов
- •4.2 Неименнованные каналы (трубы)
- •4.2.1 Размер канала и взоимодействие процессов при передаче данных
- •4.3 Именнованные каналы
- •4.4 Дополнительные средства межпроцессного взоимодействия
- •4.5 Механизмы межпроцессорного взаимодействия
- •4.5.1 Очереди сообщений
- •4.5.2 Семафоры Семафоры как теоретическая конструкция
- •4.5.3 Разделяемая память
- •4.5.4 Потоки
- •Int pthread_setschedparam(pthread_t tid, int policy, const struct sched_param *param);
- •Int pthread_getschedparam(pthread_t tid, int policy, struct schedparam *param);
- •5 Операционные системы
- •5.1 Понятие операционной системы
- •5.2 Характеристики современных ос
- •5.2.1 Многопоточность
- •5.2.2 Распределенные ос
- •5.2.3 Концепция ос на основе микроядра
- •5.2.4 Функции микроядра.
- •5.3 Принципы построения ос
- •5.4 Концептуальные основы ос
- •5.4.1 Процессы
- •Модель работы процесса с двумя приостановочными состояниями
- •Варианты решения:
- •Решение задачи взаимного исключения. Алгоритм Деккера.
- •Решение задачи взаимного исключения. Алгоритм Пэтерсона..
- •Синхронизирующие примитивы (семафоры).
- •Задача “производитель-потребитель” Общие семафоры
- •Задача “производитель-потребитель”, буфер неограниченного размера(Спящий парикмахер)
- •Задача “производитель-потребитель”, буфер ограниченного размера
- •5.4.2 Распределение ресурсов. Проблема тупиков
- •Алгоритм банкира
- •Применение алгоритма банкира
- •5.4.3 Монитороподобные средства синхронизации
- •Механизм типа «критическая область»
- •5.4.4 Виртуализация
- •5.4.5 Подсистема управления памятью
- •5.4.6 Виртуальная оперативная память
- •5.5 Аппаратные особенности процессоров Intel-архитектуры, направленных на поддержку многозадачности
- •5.5.1 Сегментация памяти. Ia-32
- •5.5.2 Распределение памяти в реальном режиме
- •5.5.3 Организация защиты в процессоре
- •5.5.4 Поддержка многозадачности в процессорах архитектуры ia-32
2.13 Переименование файла
#include <stdio.h>
int rename(const char *oldpath, const char *newpath);
В этом случае вместо существующего ранее файла создается новое имя файла, ничего другого не меняется. Но POSIX стандартизировал его и для файлов и, и для каталогов.
Следует помнить, что при переименовании файла те изменения, которые были произведены в файле, отображаются во всех файлах, а при копировании, если это было сделано так: открыты два файла, скопирована информация из одного файла и перенесена во второй, закрыты эти файлы, изменения отображаются только в данном файле.
В случае успеха системный вызов rename() возвращает значение 0, а к файлу, на который раньше указывал путь oldpath, после этого можно обращаться только при помощи пути newpath. В случае ошибки вызов возвращает -1, не меняет oldpath и newpath и присваивает переменной errno одно из следующих значений:
EACCESS – у вызывающего процесса нет разрешения на запись в родительский каталог файла oldpath или newpath, разрешения на поиск для компонента пути oldpath или newpath или разрешения на запись для oldpath, если oldpath — это каталог. Последний случай может быть проблемой, так как вызову rename() приходится обновлять каталог, когда oldpath является каталогом.
EBUSY – oldpath или newpath — это точка монтирования.
EFAULT – параметр cldpath или newpath содержит недопустимый указатель.
EINVAL – путь newpath является составляющей oldpath и, таким образом, переименование одного в другой сделает oldpath подкаталогом самого себя.
EISDIR – путь newpath существует и является каталогом, но oldpath — не каталог.
ELOOP – при разрешении пути oldpath или newpath встретилось слишком много символических ссылок.
EMLINK – на oldpath уже указывает максимальное число ссылок, или oldpath — это каталог, а на newpath уже указывает максимальное число ссылок.
ENAMETOOLONG – слишком длинное значение oldpath или newpath.
ENOENT – компонент oldpath или newpath не существует или является повисшей символической ссылкой.
ENOMEM – недостаточно памяти ядра для выполнения данного запроса.
ENOSPC – недостаточно пространства на устройстве для выполнения данного запроса.
ENOTDIR – компонент (за исключением потенциально последнего компонента) oldpath или newpath не является каталогом или oldpath — это каталог, a newpath существует и не является каталогом.
ENOTEMPTY – newpath — это каталог и он не пуст.
EPERM – по крайней мере, один из указанных в аргументах путей существует, для родительского каталога установлен бит закрепления в памяти, действительный идентификатор пользователя вызывающего процесса не совпадает ни с идентификатором пользователя файла, ни с идентификатором пользователя его предка, и процесс не привилегированный.
EROFS – файловая система помечена как доступная только для чтения.
EXDEV – oldpath и newpath принадлежат разным файловым системам.
2.14 Файловая система ос unix
Файловая система – это способ организовывать расположение данных на носителе информации. Файлы расположены в каталогах. Каталоги – это древовидная система, которая представляет файловую систему в целом, но на отдельных носителях своя файловая система.
Том файловой системы – данные, которые располагаются на выделенном носителе информации и эти тома могут монтироваться или демонтироваться в единую файловую систему. Если рассматривать структурно файловую систему, то она выглядит примерно следующим образом:
Загрузочный блок |
Суперблок |
Блок индексного дескриптора inode |
Информационный блок |
Загрузочный блок используется для расположения стандартной информации ОС и имеет нулевой логический номер. Физически он не обязан располагаться на нулевом номере, но с точки зрения логики – ноль. Это аппаратно зависимая часть ОС и информация, которая записана в нем, тоже аппаратно зависима.
Суперблок содержит основную информацию о системе (полный размер файловой системы; число блоков, отведенных под индексные дескрипторы; даты создания и обновления; и другую служебную информацию).
Блоки индексных дескрипторов располагают индексные дескрипторы или информационные узлы, в которых хранится информация о файлах. Часть из них может быть занята, часть – свободна. Где-то еще храниться информация, какие из них заняты, а какие свободны (в некоторых случаях – в суперблоке, иногда выделяются отдельные области).
Информационные блоки, в них располагаются файлы (данные файлов). Имеется отдельное место, где храниться информация, что занято, что свободно.
Типы файловой системы:
s5fs. В такой файловой системе длина имен файлов занимает 14 байт, имеется ограничение на количество файлов. Она считается не надежной, т.к. в ней только одна копия суперблока;
ffs. Считается быстрой файловой системой, т.к. в нем осуществляется быстрый доступ к данным. В отличие от файловой системы s5fs, в ffs храниться несколько копий данных;
и др.
Также имеется ext – семейство файловых систем (ext2 или ext3, где ext3 – это журнальный вариант ext2). В данной теме как раз и будет рассмотрена вайловая система ext2.