Синхронизация нитей в ОС Windows
В Windows реализована вытесняющая многозадачность - это значит, что в любой момент система может прервать выполнение одной нити и передать управление другой. Ранее, в Windows 3.1, использовался способ организации, называемый кооперативной многозадачностью: система ждала, пока нить сама не передаст ей управление и именно поэтому в случае зависания одного приложения приходилось перезагружать компьютер.
Все нити, принадлежащие одному процессу, разделяют некоторые общие ресурсы - такие, как адресное пространство оперативной памяти или открытые файлы. Эти ресурсы принадлежат всему процессу, а значит, и каждой его нити. Следовательно, каждая нить может работать с этими ресурсами без каких-либо ограничений. Но... Если одна нить еще не закончила работать с каким-либо общим ресурсом, а система переключилась на другую нить, использующую этот же ресурс, то результат работы этих нитей может чрезвычайно сильно отличаться от задуманного. Такие конфликты могут возникнуть и между нитями, принадлежащими различным процессам. Всегда, когда две или более нитей используют какой-либо общий ресурс, возникает эта проблема.
Именно поэтому необходим механизм, позволяющий потокам согласовывать свою работу с общими ресурсами. Этот механизм получил название механизма синхронизации нитей (thread synchronization).
Объектов синхронизации существует несколько, самые важные из них - это взаимоисключение (mutex), критическая секция (critical section), событие (event) и семафор (semaphore). Каждый из этих объектов реализует свой способ синхронизации. Также в качестве объектов синхронизации могут использоваться сами процессы и нити (когда одна нить ждет завершения другой нити или процесса); а также файлы, коммуникационные устройства, консольный ввод и уведомления об изменении.
Чтобы создать тот или иной объект синхронизации, производится вызов специальной функции WinAPI типа Create... (напр. CreateMutex). Этот вызов возвращает дескриптор объекта (HANDLE), который может использоваться всеми нитями, принадлежащими данному процессу.
12. Механизмы синхронизации. Сравнение мьютекса и двоичного семафора.
Мьютекс - это объект синхронизации, который устанавливается в особое сигнальное состояние, когда не занят каким-либо потоком. Только один поток владеет этим объектом в любой момент времени, одновременный доступ к общему ресурсу исключается. После всех необходимых действий мьютекс освобождается, предоставляя другим потокам доступ к общему ресурсу. Состояние описывается: владельцем и кратностью(целое >=0). Операции: Lock(), Unlock(). Достоинства: автоматич освобождение(если владелец «помер»),более быстр чем семафор.
Реализация мьютекса проста и эффективна, что делает его использование особенно полезным в случае потоков, действующих только в пространстве пользователя.
Двоичный семафор может принимать два значения: 0 (семафор закрыт) и 1 (семафор открыт). Двоичный семафор соответствует случаю, когда с разделяемым ресурсом в каждый момент времени может работать только одна программа.
13. Управление оперативной памятью. Способы защиты оперативной памяти процесса от случайного или злонамеренного вторжения из другого процесса. Сегментная организация памяти. Виртуальная память.
Существует два основных подхода к обеспечению защиты оперативной памяти процесса от несанкционированного доступа со стороны других процессов. Первый подход заключается в том, что при каждом обращении процессора к оперативной памяти осуществляется поверка корректности доступа. Альтернативный подход к обеспечению защиты оперативной памяти заключается в выделении каждому процессу индивидуального адресного пространства, аппаратно изолированно.
Два основных вида организации виртуальной памяти - сегментная и страничная организация.
При сегментной организации вся виртуальная память, используемая программой, разбивается на части, называемые сегментами. Это разбиение выполняется либо самим программистом (если он программирует на языке ассемблера), либо компилятором используемого языка программирования. Размеры сегментов могут быть различными, но в пределах максимального размера, используемого в данной архитектуре. Разбиение обычно производится на логически осмысленные части, такие, как сегмент данных, сегмент кода, сегмент стека и т.п.
Таким образом, при сегментной организации у программы нет единого линейного адресного пространства. Виртуальный адрес состоит из двух частей: селектора сегмента и смещения от начала сегмента. Селектор сегмента представляет некоторое число, которое обычно является индексом в таблице сегментов данного процесса. Такая таблица содержит для каждого сегмента его размер, режим доступа (только чтение или возможна запись), флаг присутствия сегмента в памяти. Если сегмент находится в памяти, то в таблице хранится его базовый адрес (адрес физической памяти, соответствующий началу сегмента). Отсутствие сегмента означает, что его данные временно вытеснены на диск и хранятся в файле подкачки (swap file).
При каждом обращении к виртуальному адресу аппаратными средствами выполняется преобразование пары «сегмент : смещение» в физический адрес. Селектор сегмента используется для доступа к соответствующей записи таблицы сегментов. Если данный сегмент присутствует в памяти, то его базовый адрес, прочитанный в таблице, складывается со смещением из виртуального адреса. Результат сложения представляет собой физический адрес, по которому и происходит обращение к памяти.
Виртуа́льная па́мять - технология, которая была разработана с целью увеличения общего объема памяти, организации множества адресных пространств памяти, их защиты и автоматизации процесса перемещения машинного кода и данных между основной памятью компьютера и вторичным хранилищем.
В настоящее время эта технология имеет аппаратную поддержку на всех современных процессорах.
В случае расположения данных на внешних запоминающих устройствах память может быть представлена, например, специальным разделом на жёстком диске (partition) или отдельным файлом на обычном разделе диска.
Также существует термин swap также означающий виртуальную память (точнее способ её представления), или же означает подкачку данных с диска.
Применение механизма виртуальной памяти позволяет:
· упростить адресацию памяти клиентским программным обеспечением;
· рационально управлять оперативной памятью компьютера (хранить в ней только активно используемые области памяти);
· изолировать процессы друг от друга (процесс полагает, что монопольно владеет всей памятью);
В случае расположения данных виртуальной памяти на внешних запоминающих устройствах (например, жестких дисках), как чаще всего и происходит - доступ к памяти замедляется (по сравнению с оперативными запоминающими устройствами).
14. Управление оперативной памятью. Понятие виртуальной памяти. Поддержка ВП со стороны процессора (на примере процессора Intel x86). Перевод виртуального адреса в адрес реальной памяти.
Виртуа́льная па́мять - технология, которая была разработана с целью увеличения общего объема памяти, организации множества адресных пространств памяти, их защиты и автоматизации процесса перемещения машинного кода и данных между основной памятью компьютера и вторичным хранилищем.
В настоящее время эта технология имеет аппаратную поддержку на всех современных процессорах.
В случае расположения данных на внешних запоминающих устройствах память может быть представлена, например, специальным разделом на жёстком диске (partition) или отдельным файлом на обычном разделе диска.
Также существует термин swap также означающий виртуальную память (точнее способ её представления), или же означает подкачку данных с диска.
Применение механизма виртуальной памяти позволяет:
· упростить адресацию памяти клиентским программным обеспечением;
· рационально управлять оперативной памятью компьютера (хранить в ней только активно используемые области памяти);
· изолировать процессы друг от друга (процесс полагает, что монопольно владеет всей памятью);
В случае расположения данных виртуальной памяти на внешних запоминающих устройствах (например, жестких дисках), как чаще всего и происходит - доступ к памяти замедляется (по сравнению с оперативными запоминающими устройствами).
Процессор Intel x86 другое название для архитектуры этого типа - IA (Intel Architecture) или же IA-32.
Адрес 32 бита разделен на участки:10 (в page directory) + 10 ( в page table entry (PTE)- элемент таблицы страниц) + 12. Первые 10+10 - номер вирт страницы. 12 - смещение внутри страницы (offset).
При использовании линейной адресации (доступна только в защищенном режиме) 32-битный адрес делится на три части:
Номер записи в каталоге страниц (номер таблицы страниц- page directory) - биты 31-22 (10). Одна запись из каталога страниц определяет 4 МБайт адресного пространства.
Номер записи в таблице страниц (номер страницы в таблице страниц - page table) - биты 21-12 (10). Одна запись из таблицы страниц определяет 4 КБайт адресного пространства.
Смещение в странице - биты 11-0 (12).
Обе эти структуры представляют собой таблицы элементов каталога и таблицы страниц (англ. Page Directory Entry, PDE и англ. Page Table Entry, PTE) страницы памяти по 4 КБайт.
Структура элемента таблицы страниц - PTE:
- номер реальной страницы
- бит доступности
- бит изменений (данные об изменении страницы)
- права пользователя (ReadOnly, ReadWrite)
- файловый дескриптор(маленькое целое число - если страница не в памяти, то где ее искать)
Физические адреса соответствуют номерам ячеек оперативной памяти, где в действительности расположены или будут расположены переменные и команды. Переход от виртуальных адресов к физическим может осуществляться двумя способами. В первом случае замену виртуальных адресов на физические делает специальная системная программа - перемещающий загрузчик. Перемещающий загрузчик на основании имеющихся у него исходных данных о начальном адресе физической памяти, в которую предстоит загружать программу, и информации, предоставленной транслятором об адресно-зависимых константах программы, выполняет загрузку программы, совмещая ее с заменой виртуальных адресов физическими.
Второй способ заключается в том, что программа загружается в память в неизмененном виде в виртуальных адресах, при этом операционная система фиксирует смещение действительного расположения программного кода относительно виртуального адресного пространства. Во время выполнения программы при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический. Второй способ является более гибким, он допускает перемещение программы во время ее выполнения, в то время как перемещающий загрузчик жестко привязывает программу к первоначально выделенному ей участку памяти. Вместе с тем использование перемещающего загрузчика уменьшает накладные расходы, так как преобразование каждого виртуального адреса происходит только один раз во время загрузки, а во втором случае - каждый раз при обращении по данному адресу.
15. Управление оперативной памятью в современных ОС. Виртуальная память процесса и ее отображение в реальную оперативную память компьютера. Файл подкачки.
Виртуальная память - это ресурсы оперативной или внешней памяти, выделяемые прикладной программе операционной системой. Физическое расположение виртуальной памяти на реальных носителях может не совпадать с логической адресацией данных в прикладной программе. Преобразование логических адресов программы в физические адреса запоминающих устройств обеспечивается аппаратными средствами и операционной системой.
Виртуальная память представляет собой схему адресации памяти компьютера, при которой память представляется программному обеспечению непрерывной и однородной, в то время как в реальности, для фактического хранения данных, используются отдельные (разрывные) области различных видов памяти, включая кратковременную (оперативную) и долговременную (жёсткие диски).
В случае расположения данных на внешних запоминающих устройствах память может быть представлена, например, специальным разделом на жёстком диске или отдельным файлом на обычном разделе диска (файл подкачки).
Реализация хранения виртуальных данных в различных операционных системах различается в силу архитектурных особенностей ядра операционных систем и их файловых систем.
В UNIX и подобных системах SWAP обычно помещается на отдельный раздел жёсткого диска, что ускоряет доступ к данным по сравнению с расположением SWAP на обычном разделе.
Microsoft WindowsиWindows NT
Область жесткого диска, предназначенная для свопинга располагается в отдельном файле (Microsoft Windows, Windows NT), который называется файл подкачки.
Файл подкачки (swap-файл, рaging file) - это область на жестком диске, которую операционная система использует в качестве виртуальной памяти. Физически файл подкачки - это специальный файл, размещающийся на одном или нескольких дисках компьютера и предназначенный для (временного) хранения страниц виртуальной памяти, который располагается в корне жесткого диска с установленной системой и называется pagefile.sys.
Чем больше физический объем оперативной памяти, тем меньший объем файла подкачки необходим, и тем реже Windows приходится прибегать к его использованию.
Но, установить действительно необходимый объем swap-файла, можно лишь при помощи его мониторинга.
Файл подкачки может быть создан в одном из двух вариантов: постоянного (фиксированного) размера и динамически изменяемого размера.
По умолчанию, Windows создает динамически изменяемый файл подкачки, но у этого подхода есть несколько существенных недостатков. А именно: при увеличении файла подкачки операционная система «дописывает» его на свободные места, что приводит к фрагментации диска и фрагментации самого swap-файла, а это уж совсем нежелательно, поскольку доступ к нему должен осуществляться с максимально возможной скоростью.
Исходя из этого, файл подкачки непременно рекомендуется делать фиксированного объема и помещать в самом начале диска, где, как известно, операции чтения/записи происходят быстрее всего. Если жесткий диск один и операционная система установлена в первом разделе, в нем же рекомендуется расположить и файл подкачки. В случае, если жестких дисков два и второй из них быстрее или равен по скорости первому (тому, на который установлена ОС), файл подкачки стоит расположить в начале второго диска, что значительно повысит скорость работы с виртуальной памятью.
Применение механизма виртуальной памяти позволяет:
· упростить адресацию памяти клиентским программным обеспечением;
· рационально управлять оперативной памятью компьютера (хранить в ней только активно используемые области памяти);
· изолировать процессы друг от друга (процесс полагает, что монопольно владеет всей памятью).
16. Цели и задачи файловой системы ОС. Многоуровневая организация файловой системы. Логическая и физическая ФС.
Файл – массив байтов.
Фа́йловая систе́ма (англ. file system) — регламент, определяющий способ организации, хранения и именования данных на носителях информации. Она определяет формат физического хранения информации, которую принято группировать в виде файлов.
Конкретная файловая система определяет размер имени файла (папки), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов.
Основные функциилюбой файловой системы нацелены на решение следующихзадач:
· Создание и именование файлов;
· программный интерфейс работы с файлами для приложений (доступ);
· отображения логической модели файловой системы на физическую организацию хранилища данных (хранение);
· организация устойчивости файловой системы к сбоям питания, ошибкам аппаратных и программных средств;
· содержание параметров файла, необходимых для правильного его взаимодействия с другими объектами системы (ядро, приложения и пр.)
· защита файлов одного пользователя от несанкционированного доступа другого пользователя, а также обеспечение совместной работы с файлами (многопольз.системы)
Потребность в ФС появилась с изобретением жестких дисков!
Трехуровневая организация ФС:
· Логическая файловая система (ЛФС)
· Физическая файловая система (ФФС) //FAT32, NTFS и т.д
· Драйверы устройств
Определить права доступа к файлу - значит определить для каждого пользователя набор операций, которые он может применить к данному файлу. В разных файловых системах может быть определен свой список дифференцируемых операций доступа. Этот список может включать следующие операции:
· создание файла,
· уничтожение файла,
· открытие файла,
· закрытие файла,
· чтение файла,
· запись в файл,
· дополнение файла,
· поиск в файле,
· получение атрибутов файла,
· уст-е новых знач-й атрибутов,
· переименование,
· выполнение файла,
· чтение каталога,
Программист имеет дело с логической организацией файла, представляя файл в виде определенным образом организованных логических записей. Логическая запись - это наименьший элемент данных, которым может оперировать программист при обмене с внешним устройством. Даже если физический обмен с устройством осуществляется большими единицами, операционная система обеспечивает программисту доступ к отдельной логической записи.
Записи могут быть фиксированной длины или переменной длины. Записи могут быть расположены в файле последовательно (последовательная организация) или в более сложном порядке, с использованием так называемых индексных таблиц, позволяющих обеспечить быстрый доступ к отдельной логической записи (индексно-последовательная организация). Для идентификации записи может быть использовано специальное поле записи, называемое ключом. В файловых системах ОС UNIX и MS-DOS файл имеет простейшую логическую структуру - последовательность однобайтовых записей.
Физическая организация файла описывает правила расположения файла на устройстве внешней памяти, в частности на диске. Файл состоит из физических записей - блоков. Блок - наименьшая единица данных, которой внешнее устройство обменивается с оперативной памятью.
Непрерывное размещение - простейший вариант физической организации, при котором файлу предоставляется последовательность блоков диска, образующих единый сплошной участок дисковой памяти. Для задания адреса файла в этом случае достаточно указать только номер начального блока. Другое достоинство этого метода - простота. Но имеются и два существенных недостатка. Во-первых, во время создания файла заранее не известна его длина, а значит не известно, сколько памяти надо зарезервировать для этого файла, во-вторых, при таком порядке размещения неизбежно возникает фрагментация, и пространство на диске используется не эффективно, так как отдельные участки маленького размера (минимально 1 блок) могут остаться не используемыми.
Следующий способ физической организации - размещение в виде связанного списка блоков дисковой памяти. При таком способе в начале каждого блока содержится указатель на следующий блок. В этом случае адрес файла также может быть задан одним числом - номером первого блока. В отличие от предыдущего способа, каждый блок может быть присоединен в цепочку какого-либо файла, следовательно фрагментация отсутствует. Файл может изменяться во время своего существования, наращивая число блоков. Недостатком является сложность реализации доступа к произвольно заданному месту файла: для того, чтобы прочитать пятый по порядку блок файла, необходимо последовательно прочитать четыре первых блока, прослеживая цепочку номеров блоков. Кроме того, при этом способе количество данных файла, содержащихся в одном блоке, не равно степени двойки (одно слово израсходовано на номер следующего блока), а многие программы читают данные блоками, размер которых равен степени двойки.
Практически всегда файлы на дисках объединяются в каталоги. В простейшем случае все файлы на данном диске хранятся в одном каталоге. Такая одноуровневая схема использовалась в CP/M и в первой версии MS-DOS 1.0. Иерархическая файловая система со вложенными друг в друга каталогами впервые появилась в Multics, затем в UNIX.
NTFS и HFS. В этих файловых системах каждый файл представляет собой набор атрибутов. Атрибутами считаются не только традиционные только для чтения, системный, но и имя файла, размер и даже содержимое. Таким образом, для NTFS и HFS то, что хранится в файле, — это всего лишь один из его атрибутов.
По предназначению файловые системы можно классифицировать на следующие категории:
· Для носителей с произвольным доступом (например, жёсткий диск): FAT32, HPFS и др.
· Для носителей с последовательным доступом (например, магнитные ленты): QIC
· Для оптических носителей — CD и DVD: ISO9660, ISO9690, HFS, UDF и др.
· Виртуальные файловые системы: AEFS и др.
· Сетевые файловые системы: NFS, CIFS, SSHFS, GmailFS и др.
· Для флэш-памяти: YAFFS, ExtremeFFS.
17. Управление виртуальной памятью в современных ОС. Алгоритмы подкачки и вытеснения
Алгоритм поддержки ВМ в ОС:
Стратегия подкачки (в какой момент происходит подкачка страницы)
- по требованию (страницы (сегменты) подкачиваются при фактическом к ним обращении)
- опережающая стратегия (базируется на предсказании поведения программы (трудно выполнить, используется редко))
Когда программа обращается к виртуальной странице, отсутствующей в основной памяти, т.е. "требует" доступа к данным или программному коду, ОС удовлетворяет это требование путем выделения страницы основной памяти, перемещения в нее копии страницы, находящейся во внешней памяти, и соответствующей модификации элемента таблицы страниц. После этого происходит "возврат из прерывания", и команда, по "требованию" которой выполнялись эти действия, продолжает свое выполнение.
Стратегия вытеснения
-если есть свободная, то исп-ть ее
-если нет, то вытесняется некоторая страница
Алгоритмы определения устаревших страниц:
При выделении места для новой страницы бывает необходимо удалить какую-либо страницу, в данный момент находящуюся в памяти. Правила замещения страниц служат для принятия решения о том, какую именно страницу следует удалить из памяти. Идеальным кандидатом является «мёртвая» страница, которая больше не потребуется кому-либо (например, относится к завершённому процессу). Если же таких страниц нет в памяти (или их количества недостаточно), используется правило локального или глобального замещения страниц:
Правило локального замещениявыделяет каждому процессу или группе взаимосвязанных процессов определённое количество страниц. Если процессу нужна новая страница, он должен заменить одну из собственных.
Правило глобального замещения страниц позволяет брать страницы любого процесса, используя глобальные критерии выбора. Для реализации данного подхода необходимо выбрать критерий, по которому будет приниматься решение о страницах, хранимых в памяти.
Наиболее распространенными традиционными алгоритмами (как в глобальном, так в локальном вариантах) являются алгоритмы FIFO (First In First Out) и LRU (Least Recently Used). При использовании алгоритма FIFO для замещения выбирается страница, которая дольше всего остается приписанной к виртуальной памяти. Алгоритм LRU предполагает, что замещать следует ту страницу, к которой дольше всего не происходили обращения.
18. Логическая файловая система ОС Windows NT.
В Windows много всего скрыто, нет жестких ссылок, логические тома (f:\...\).
Каталоги на разных дисках могут образовывать несколько отдельных деревьев – DOS/Windows. На самом деле, в DOS/Windows системах также, как и в UNIX-подобных существует один корневой каталог со вложенными директориями, имеющими названия «c:», «d:» и т. д. В эти каталоги монтируются разделы жёсткого диска. То есть, c:\ — это всего лишь ссылка на file:///c:/. Однако, в отличие от UNIX-подобных файловых систем, в Windows запись в корневой каталог запрещена, как и просмотр его содержимого.
Файловые системы Windows: FAT16, FAT32, NTFS.
Windows NT в своей новой файловой системе NTFS устанавливает, что имя файла может содержать до 255 символов, не считая завершающего нулевого символа.
Требования к NTFS (New Technology File System):
· Надежность и самосогласованность
· Высокая скорость работы
· Поддержка различных ЛФС
Структура таблиц. Таблицы в NTFS устроены существенно лучше; таких ограничений на размер не имеется, кроме того, они существенно устойчивей к сбоям - если компьютер зависает или "мигает" электричество, велика вероятность, что системе не потребуется восстанавливать целостность таблиц - они смогут корректно восстановиться благодаря дублированию информации.
Кроме того, в NTFS имеются встроенные средства для разграничения прав доступа и предоставления квот. Возможно, для персонального компьютера это и не так важно, но при разделении прав на работе может очень пригодиться. Единственная существенная проблема NTFS - то, что ее спецификации закрыты, поэтому в операционных системах, не принадлежащих Microsoft поддержка NTFS затруднена.
19. Логическая файловая система ОС UNIX.
Структура – дерево. Корневой каталог root ( /).
Каталоги на разных дисках могут объединяться в одно дерево, общее для всех дисков(UNIX-подобные системы). В UNIX-подобных файловых систем запись в корневой каталог разрешена, как и просмотр его содержимого.
В UNIX существует только один корневой каталог, а все остальные файлы и каталоги вложены в него. Чтобы получить доступ к файлам и каталогам на каком-нибудь диске, необходимо примонтировать этот диск командой mount. Эту команду может вызывать только root.
Метаинформация находится в специальной таблице.
Основные каталоги:
Bim – все системные программные утилиты
Urs – юзеры
Tmp – временные файлы
Dev – устройства
Etc – конфигурация ОС
В Unix основные понятия: процесс, пользователь, файл.
Типы файлов в Unix:
- Обычный файл
- Каталог
- Символическая ссылка (symlink) – в имени файла содержится имя другого файла
- Именованный канал (named pipe)
- Файлы устройств (байтовые или блочные устройства)
- Сокеты
20. Физическая организация файловой системы. Файловая система FAT.
FAT от file allocation table таблица размещения файлов.
Переход с FAT16 на FAT32 вызван тем, что при использовании FAT16 размер дискового раздела не может быть больше 4 Гбайт (при кластере 64 Кбайт), FAT32 поддерживает разделы до 32 Гбайт (при кластере 16 Кбайт).
boot sector - загрузочный сектор обычно это первый сектор нулевой дорожки системной дискеты либо загрузочного раздела жёсткого диска (сектор 1, головка 0, цилиндр 0. Содержит начальный загрузчик (bootstrap loader) и данные о физической и логической организации диска (MBR ), необходимые для загрузки.
(Википедия) Раздел диска, отформатированный в системе FAT, имеет следующую структуру:
· загрузочный сектор;
· таблица размещения файлов — собственно FAT (обычно в двух экземплярах);
· корневой каталог;
· файлы.
Для хранения файлов всё доступное для них пространство разбивается на кластеры. Таблица размещения файлов содержит ячейки, каждая из которых соответствует определённому кластеру диска. Если кластер принадлежит файлу, то соответствующая ему ячейка содержит номер следующего кластера этого же файла. Если ячейка соответствует последнему кластеру файла, то она содержит специальное значение (FFFF16 для FAT16). Таким образом, выстраивается цепочка кластеров файла. Неиспользуемым кластерам в таблице соответствуют нули. «Плохим» кластерам (которые исключаются из обработки, например, по причине нечитаемости соответствующей области устройства) также соответствует специальный код.
При удалении файла первый знак имени заменяется специальным кодом E516 и цепочка кластеров файла в таблице размещения обнуляется. Поскольку информация о размере файла (которая располагается в каталоге рядом с именем файла) при этом остаётся нетронутой, в случае, если кластеры файла располагались на диске последовательно и они не были перезаписаны новой информацией, возможно восстановление удалённого файла.
21. Физическая организация файловой системы. Файловая система System V (s5fs).
Unix System V file system. Термины: PRU - физич блок (512б), LRU - логич блок. Структура: нулевой(загрузочный) блок, super block (содержит инф о ФС в целом: тип ФС (s5fs ), размер, размер логич блока, размер структуры iList, кол-во свободных блоков, кол-во свободных узлов…), inodes - область индексных дескрипторов, порядок расположения индексных дескрипторов в которой соотв их номерам(содержит тип файла и права доступа, число ссылок, размер, список номеров блоков входящих в файл…), блоки файлов.
Осн особенностью физич организации ФС явл отделение файла от его характеристик, хранящейся в отдельной структуре (inode).
+ простота (но сложнее FAT)
+эффективное исп-е диска
- крайне неустойчивая (из-за большого кол-ва списков)
- фиксированный размер iList
- проблема нулевого сектора
- медленные файловые операции как в FAT
22. Физическая организация файловой системы. Файловая система NTFS.
(New Technology File System, NT File System) файловая система NTFS файловая система Windows NT и Windows 2000, разработанная Microsoft. Поддерживает объектно-ориентированные приложения, рассматривая файлы как объекты с атрибутами, определёнными пользователями или системой. Подразумевает также метод логической разметки диска, управления дисковой памятью и организации доступа к файлам.
Осн отлич св-ва: поддержка больших файлов, восстанавливаемость после сбоев и отказов программ, высокая скорость операций, низкий уровень фрагментации, устойчивость к отказам дисковых накопителей.
NTFS поддерживает систему метаданных и использует специализированные структуры данных для хранения информации о файлах для улучшения производительности, надёжности и эффективности использования дискового пространства. NTFS хранит информацию о файлах в главной файловой таблице - Master File Table (MFT). NTFS имеет встроенные возможности разграничивать доступ к данным для различных пользователей и групп пользователей (списки контроля доступа - Access Control Lists (ACL)), а также назначать квоты (ограничения на максимальный объём дискового пространства, занимаемый теми или иными пользователями). NTFS использует систему журналирования для повышения надёжности файловой системы.
Каждый файл на томе NTFS представлен записью в специальном файле, называемом главной файловой таблицей (MFA - master file table). NTFS резервирует первые 16 записей таблицы для специальной информации. Первая запись этой таблицы описывает непосредственно главную файловую таблицу;
за ней следует зеркальная запись (mirror record) MFT. Если первая запись MFT разрушена, то NTFS читает вторую запись для отыскания зеркального файла MFT, первая запись которого идентична первой записи MFT. Местоположения сегментов данных MFT и зеркального файла MFT записаны в секторе начальной загрузки. Дубликат сектора начальной загрузки находится в логическом центре диска.
Третья запись MFT - файл регистрации (log file); используется для восстановления файлов. Файл регистрации подробно описан в настоящей главе ниже. Семнадцатая и последующие записи главной файловой таблицы используются собственно файлами и каталогами (также рассматриваются как файлы NTFS) на томе. Каждый файл и каталог NTFS сост из набора атрибутов. Каждый атрибут файла сост из полей: тип атрибута, длина атр, значение атр и имя.
Главная файловая таблица отводит определенное количество пространства для каждой записи файла. Атрибуты файла записываются в распределенное пространство MFT. Небольшие файлы и каталоги (обычно до 1500 байт или меньше) могут полностью содержать внутри записи главной файловой таблицы.
23. Управление вводом/выводом. Понятие аппаратного прерывания и его обработка.
Одной из главных функций ОС является управление всеми устройствами ввода-вывода компьютера. ОС должна передавать устройствам команды, перехватывать прерывания и обрабатывать ошибки; она также должна обеспечивать интерфейс между устройствами и остальной частью системы. В целях развития интерфейс должен быть одинаковым для всех типов устройств (независимость от устройств).
Управление вводом/выводом.
Устройства ввода-вывода делятся на два типа: блок-ориентированные устройства и байт-ориентированные устройства. Блок-ориентированные устройства хранят информацию в блоках фиксированного размера, каждый из которых имеет свой собственный адрес. Самое распространенное блок-ориентированное устройство - диск. Байт-ориентированные устройства не адресуемы и не позволяют производить операцию поиска, они генерируют или потребляют последовательность байтов. Примерами являются терминалы, строчные принтеры, сетевые адаптеры. Электронный компонент называется контроллером устройства или адаптером. Операционная система имеет дело с контроллером. Контроллер выполняет простые функции, осуществляет контроль и исправляет ошибки. Каждый контроллер имеет несколько регистров, которые используются для взаимодействия с центральным процессором. ОС выполняет ввод-вывод, записывая команды в регистры контроллера. Контроллер гибкого диска IBM PC принимает 15 команд, таких как READ, WRITE, SEEK, FORMAT и т.д. Когда команда принята, процессор оставляет контроллер и занимается другой работой. При завершении команды контроллер организует прерывание для того, чтобы передать управление процессором операционной системе, которая должна проверить результаты операции. Процессор получает результаты и статус устройства, читая информацию из регистров контроллера.
Основная идея организации программного обеспечения ввода-вывода состоит в разбиении его на несколько уровней, причем нижние уровни обеспечивают экранирование особенностей аппаратуры от верхних, а те, обеспечивают удобный интерфейс для пользователей.
Ключевым принципом является независимость от устройств. Вид программы не должен зависеть от того, читает ли она данные с гибкого диска или с жесткого диска. Другим важным вопросом для программного обеспечения ввода-вывода является обработка ошибок. Вообще говоря, ошибки следует обрабатывать как можно ближе к аппаратуре. Если контроллер обнаруживает ошибку чтения, то он должен попытаться ее скорректировать. Если же это ему не удается, то исправлением ошибок должен заняться драйвер устройства. И только если нижний уровень не может справиться с ошибкой, он сообщает об ошибке верхнему уровню.
Еще один ключевой вопрос - это использование блокирующих (синхронных) и неблокирующих (асинхронных) передач. Большинство операций физического ввода-вывода выполняется асинхронно - процессор начинает передачу и переходит на другую работу, пока не наступает прерывание. Необходимо, чтобы операции ввода-вывода были блокирующие - после команды READ программа автоматически приостанавливается до тех пор, пока данные не попадут в буфер программы.
Последняя проблема состоит в том, что одни устройства являются разделяемыми(диски: одновременный доступ нескольких пользователей к диску не представляет собой проблему), а другие - выделенными(принтеры: нельзя смешивать строчки, печатаемые различными пользователями).
Для решения поставленных проблем целесообразно разделить программное обеспе<