
Файловая система.
Файл – именованный набор данных. Файловая система – система перевода имен файлов в адреса на диске. После форматирования высокого уровня диск разбит на кластеры. Кластер – 1 или несколько секторов, это единица хранения для ОС.
Файл может быть разбит, а на CD он всегда непрерывен.
Хранение файла.
1. можно хранить связный список (имена файлов + номер кластера). Подход не используется, т.к. теряется много места.
2. FAT – File Allocation Table, массив записей одного размера, где 1 запись – 1 кластер. Хранится имя файла и адрес следующего кластера.
Размер кластера. Надо, чтобы каждому кластеру соответствовала запись. Размер записи определяется ОС. Создаем файл, помещаем его в таблицу.
Возможны потерянные цепочки. Запись о файле удалили, а кластеры не почистили. При обновлении возможно объединение цепочек.
3. Придумано в Unix, похожий принцип в NTFS. На каждый файл создается описатель i_node, в котором хранится список кластеров, где файл записан. Плохо, если файл не вмещается в кластер – нужна ссылка на следующий кластер. Master File Table.
Запись нового файла.
Хранение информации о пустых кластерах. Unix и NTFS не хранят. Используется bitmap – файл из 0 и 1, где 0 – кластер свободен, 1 – занят. В FAT все хранится в таблице.
Надежность.
В NTFS все операции транзакциями. Если не до конца выполнено – откат. NTFS медленнее чем FAT, поскольку делает записи в журнал, NTFS требует больше места под служебные записи.
Атрибуты файла.
Read-only
Hidden
Archive
System
+ DateTime
В Windows и Unix больше, т.к. нужна безопасность. В NTFS у файла есть только атрибуты. Можно хранить несколько наборов данных.
Названия дисков. Структура файлов.
Название должно ??? с именем устройства (А, В, С). Т.е. можно использовать диск как файл. В Windows каждый диск – корень дерева, в Unix все диски растут из общего корня root.
Независимость от оборудования.
Если диск FAT, то можно грузиться с дискеты. Если NTFS, то нужен дополнительный драйвер.
Если система мультизагрузочная, то нужно установить загрузчик до установки ОС.
Многопроцессорные системы.
Процессоры – система обработки данных
- система параллельных вычислений
Предсказание погоды, биоинформатика, нейрофизиология и т.п.
Системы делятся на 3 группы:
Системы с общей памятью. Не более 32-64 процессоров, то что можно сделать из персоналки. Полезны для обработки данных.
Кластерная схема. Строится объединением персоналок в специализированную сеть. Есть управляющая персоналка. Плюс – дешево построить.
Можно соединить персоналки в глобальную сеть и получится распределенная система вычислений.
Системы с общей памятью
У системы с общей памятью есть проблемы. Общая память – невозможно одновременно писать туда двум процессорам. Проблема синхронизации.
Другая проблема – одна шина на все процессоры, страдает скорость работы.
Проблемы со скоростью можно решать кэшами, встроенными в процессор, но при этом опять возникает проблема синхронизации кэшей, которая решается аппаратно (кэши общаются через шину)
Д
ругой
вариант - система с коммутацией. Соединение
всегда через разные точки. Память
разбивается на блоки. Процессор работает
с одним и только с одним блоком памяти.
Решена проблема единой памяти. Плюс – можно увеличить число процессоров. Минус - дорого построить и кол-во переключений растет как n2. Решена проблема скорости.
Организация ОС.
- нужно загрузить все процессоры
- проблема синхронизации
Работа с памятью, решение проблем с синхронизацией
Можно разделить память на н частей. Каждому процессору свой кусочек. Нет возможности сделать виртуальную память, т.к. разделяем физически. Минус – при неравномерной загрузке кто-то будет простаивать, память распределяется равномерно, что есть плохо. Есть выделенный (главный) процессор – асимметричная схема.
Оказалось, что выгоднее использовать симметричную систему. Память общая, доступ общий, приоритета у процессоров нет. Разница: неизвестно, какой из процессоров будет работать в следующий такт. Остается проблема синхронизации доступа к системным ресурсам. Создается очень много объектов синхронизации (для каждого системного ресурса).
Мало иметь аппаратную поддержку блокировок (неделимую операцию проверки объекта синхронизации). В ячейку памяти, где хранится «флажок», не должны писать одновременно несколько процессоров. Поэтому захватывается вся шин, а остальные процессоры стоят. Это называется spinlock. Т.к. объектов синхронизации очень много, это довольно сильно сказывается на производительности.
Еще проблема: процессы могут скакать по процессорам, и кэши плохо используются (если один процесс на одном процессоре, то не надо переписывать кэш). Поэтому хранится история выполнения процессов процессорами (affinity). Обычно можно регулировать affinity – просьба выполнять процесс на этом процессоре.
Время не делится поровну между всеми процессами, процессам, блокирующим ядро, даётся чуть больше времени (в надежде, что они побыстрее освободят).
Сейчас понятия spinlock, affinity опускают вниз, интегрируют внутрь процессора, и процессоры упаковывают в одну коробку (hyperthreading).