shpory_os


Задачи и интерфейсы Unix-подобных систем.
Задачи ОС Linux.
ОС Linux была разработана программистами для программистов, чтобы использовать ее в такой среде, в которой большинство пользователей являются достаточно опытными и занимаются проектами разработки программного обеспечения, во многих случаях большое количество программистов активно работает над созданием общей системы, поэтому в операционной системе UNIX есть большое количество средств, позволяющих людям работать вместе и управлять совместным использованием информации. Можно выделить следующих два принципа:
Принцип наименьшей неожиданности. Данная система реагирует на действия адекватным образом.
Мощь и гибкость. Это означает, что в системе должно быть небольшое количество базовых элементов, которые можно комбинировать бесконечным числом способов, чтобы приспособить их для конкретного приложения. Одной из основных правил системы Linux заключается в том, что каждая программа должна выполнять всего одну функцию и делать это хорошо.
Интерфейс системы Linux.
POSIX (Portable Operation System Interface for Unix) – набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой. Данный стандарт создан для обеспечения совместимости различных UNIX-подобных операционных систем и переносимости прикладных программ на уровне исходного кода, но может быть использован и не для UNIX систем.
Схема системы Linux:
Режим пользователя:
Пользователь
Интерфейс пользователя
Стандартные обслуживающие программы
Интерфейс библиотечных функций
Библиотечные функции
Режим ядра:
Интерфейс системных вызовов
ОС LinuxАппаратура
Функция ОС Unix заключается в управлении аппаратным обеспечением и предоставлении всем программам интерфейса системных вызовов. Эти системные вызовы позволяют программам пользователя создавать процессы, файлы и прочие ресурсы, а так же управлять ими. Рассмотрим следующие 3 интерфейса:
Интерфейс системных вызовов, интерфейс библиотечных функций.
Программы делают системные вызовы, помещая аргументы в регистры и выполняя команду эмулированного прерывания для переключения из пользовательского режима в режим ядра. Поскольку на языке C невозможно написать команду эмулированного прерывания, то этим занимается библиотека, в которой есть по одной процедуре на системный вызов. Эти процедуры написаны на ассемблере, но они могут вызываться из языка C. Каждая такая процедура сначала помещает аргументы в нужное место, а затем выполняет команду эмулированного прерывания. В стандарте POSIX определен именно интерфейс библиотечных функций, а не интерфейс системных вызовов. Иначе говоря, стандарт POSIX определяет, какие библиотечные процедуры должна предоставлять соответствующая его требованиям система, каковы их параметры, что они должны делать и какие результаты возвращать.
Интерфейс пользователя.
Помимо операционной системы и библиотеки системных вызовов, все версии Linux предоставляют большое количество стандартных программ. К этим программа относятся: Командный процессор (оболочка), компиляторы, редакторы, программы обработки текста и утилиты для работы с файлами. При запуске оболочки она инициализируется, а затем выводит на экран символ приглашения к вводу. После того, как пользователь введет командную строку, оболочка извлекает из нее первое слово и ищет программу с таким именем. Если программу удается найти, оболочка запускает ее. При этом работа оболочки приостанавливается на время работы запущенной программы. По завершении программы, оболочка пытается прочитать следующую команду. Оболочка представляет собой обычную пользовательскую программу. Пример: cp src dest. Данная команда запускает программу cp с двумя аргументами src и dest. Эта программа интерпретирует первый аргумент как имя существующего файла, она копирует этот файл и называет эту копию dest.
В некоторых дистрибутивах операционной системы Linux для ПК используется графический интерфейс, ориентированный на взаимодействие с мышью, для чего не потребовалось никаких изменений в системе. Данный интерфейс создает среду рабочего стола, также существует администратор многооконного режима, который управляет размещением и видом окон и создает графический интерфейс.
Графические интерфейсы пользователя в Linux поддерживает оконная система X Windowing System (X Window, X 11, X). Она представляет обмен и протоколы отображения для управления окнами на растровых дисплеях unix-подобных систем. X-сервер является главным компонентом, который управляет такими устройствами, как монитор, мышь, клавиатура и т.д. и отвечает за перенаправление ввода от клиентских программ к операционной системе.
2.Структура ядра ОС Linux.
Системный интерфейс
Компонент Ввода-вывода Компонент управления памятью Компонент управления процессами
Виртуальная файловая система Виртуальная память Обработка сигналов
Файловая система СокетыТерминалы Обобщенный уровень блочных устройств Сетевые протоколы Дисциплины линий связи Механизм замещения страниц Создание и завершение процессов и потоков
Диспетчер блочных устройств Драйверы сетевых устройств Драйверы символьных устройств Кэш страниц Планирование процессов
Диспетчер прерываний
Аппаратура
Нижний уровень ядра состоит из обработчиков прерываний, которые являются основным средством взаимодействия с устройствами и механизма диспетчеризации на низком уровне. Диспетчеризация производится при возникновении прерываний. При этом код низкого уровня останавливает выполнение работающего процесса, сохраняет его состояние в структуре процессов ядра и запускает соответствующий драйвер.
Ядро Linux можно разделить на 3 части:
Компонент ввода-вывода.
Компонент управления памятью
Компонент управления процессами
Компонент ввода-вывода:
Данный компонент содержит все части ядра, которые отвечают за взаимодействие с устройствами ввода-вывода, выполнение сетевых операций. На самом высоком уровне все операции интегрированы в уровень виртуальной файловой системы. Т.е. выполнение операций чтения из файла, будь он в памяти или на диске это то же самое, что и выполнение операции чтения символа с терминального ввода. На самом низком уровне все операции ввода-вывода проходят через соответствующий драйвер. Все драйверы в Linux классифицируются либо как символьные, либо блочные. Выше уровня драйверов устройств код ядра для каждого типа устройств свой. В зависимости от вида символьного устройства, информация обрабатывается согласно определенной дисциплине линий связи.
Уровень выше сетевых драйверов выполняет функции маршрутизации, обеспечивая отправку правильного пакета к правильному устройству или к блоку обработки протокола. Над сетью располагается интерфейс сокетов, позволяющий программам создавать сокет.
Над дисковыми драйверами располагается планировщик ввода-вывода, который отвечает за упорядочивание и выдачу запросов над дисковой операцией. ОС Lixux имеет несколько одновременно существующих файловых систем. Обобщенный уровень блоков призван скрыть различия реализаций файловой системы в зависимости от аппаратных устройств.
Компонент управления памятью:
В задачи управления памятью входят:
- Обслуживание отображения виртуальной памяти на физическую
- Поддержка кэша страниц, к которым недавно выполнялось обращение
- Поставка в память новых страниц с кодом и данными
Компонент управления процессами:
Основная задача этого компонента – создание и завершение процесса
Планировщик процессов решает каким процессам запускаться в данный момент, а каким приостанавливаться и завершаться. Компонент обработки сигналов обрабатывает поступающие процессам управляющие сигналы.
Все рассмотренные компоненты взаимосвязаны друг с другом. Файловые системы обращаются к файлам через блочные устройства, однако, если в данный момент в памяти отсутствует свободное место, то в данном случае необходимо задействовать компонент управления памятью для выгрузки и загрузки соответствующих страниц.
Интерфейс системных вызовов ядра – все системные вызовы поступают сюда и вызывают эмулированное прерывание, которое переключает исполнение из пользовательского режима в защищенный и передает управление одному из компонентов ядра.
3. Процессы в ОС Linux. Общие понятия.
1)Основными активными сущностями в Линукс являются процессы. По определению эти процессы являются классическими последовательностями процессов. Каждый поток изначально получает один поток управления (имеет один счётчик команд, который отслеживает следующую исполняеую команду). Также в Линукс процессу позволяется создавать дополнительные потоки. ОС Линукс представляет собой многозадачную систему, следовательно несколько независимых процессов могут работать одновременно. Для создания процессов в ОС Линукс используется системный вызов fork. При этом создаются точные копии исходного процесса(родительский процесс) дочерний процесс. У каждого процесса есть свои области памяти. Открытые файлы используются обеими процессами совместно; изменения произведённые с этим файлом будут видны каждому из процессов. У каждого процесса есть свой идентификатор (PID - Для дочернего он равен "0", для родительского отличен от "0").
4. Процессы в ОС Linux. Этапы создания процесса.
Основными активными сущностями в Линукс являются процессы. По определению эти процессы являются классическими последовательностями процессов. Каждый поток изначально получает один поток управления (имеет один счётчик команд, который отслеживает следующую исполняеую команду). Также в Линукс процессу позволяется создавать дополнительные потоки. ОС Линукс представляет собой многозадачную систему, следовательно несколько независимых процессов могут работать одновременно. Для создания процессов в ОС Линукс используется системный вызов fork. При этом создаются точные копии исходного процесса(родительский процесс) дочерний процесс. У каждого процесса есть свои области памяти. Открытые файлы используются обеими процессами совместно; изменения произведённые с этим файлом будут видны каждому из процессов. У каждого процесса есть свой идентификатор (PID - Для дочернего он равен "0", для родительского отличен от "0").
Механизм создания нового процесса. Для создания нового процесса используется системный вызов fork; при этом процесс выполняет эмулированное прерывание в ядро и создаёт структуру задач, а также несколько других структур (таких как, стек режима ядра и структура thread_info). Большая часть содержимого дескриптора дочернего процесса заполняется значениями из дескриптора родителя. Затем Линукс ищет доступный PID и обновляет элемент хеш-таблицы. Также система настраивает поля task_struct, чтобы они указывали на соответствующий процесс в массиве задач. Далее выделяется память для данных потомка, сегментов стека и текста. После данного этапа дочерний процесс готов начать работу. После того как дочерний процесс начинает работу, его код делает системный вызов exec; при этом ядро находит и проверяет исполняемый файл. После этого процесс начинает работу.
Работа fork:
Выделить структуру задач для потомка
Заполнить структуру задач потомка данными родителя
Выделить память для стека и области пользователя дочернего процесса
Заполнить область пользователя дочернего процесса из соответствующей области
Выделить PID для дочернего процесса
Настроить дочерний процесс на использование программы родительского процесса
Копировать таблицы страниц для данных и стека
Настроить совместное использование открытых файлов
Копировать регистры родительского процесса в дочерний
5. Взаимодействие процессов в ОС Linux.
Основными активными сущностями в Линукс являются процессы. По определению эти процессы являются классическими последовательностями процессов. Каждый поток изначально получает один поток управления (имеет один счётчик команд, который отслеживает следующую исполняеую команду). Также в Линукс процессу позволяется создавать дополнительные потоки. ОС Линукс представляет собой многозадачную систему, следовательно несколько независимых процессов могут работать одновременно. Для создания процессов в ОС Линукс используется системный вызов fork. При этом создаются точные копии исходного процесса(родительский процесс) дочерний процесс. У каждого процесса есть свои области памяти. Открытые файлы используются обеими процессами совместно; изменения произведённые с этим файлом будут видны каждому из процессов. У каждого процесса есть свой идентификатор (PID - Для дочернего он равен "0", для родительского отличен от "0").
2) Взаимодействие между процессами.
Взаимодействие между процессами ОС Линукс осуществляется с помощью двух механизмов:
- трубы(pipes) - канал между двумя процессами, в который один процесс может писать поток байтов, а другой считывать.
- сигналы(signals) - в данном случае взаимодействие происходит посредством программных прерываний; процесс может посылать сигналы только своей группе процессов (родитель, братья, сёстры и т.д.)
6. Реализация потоков в ОС Linux.
Исторически процессы были контейнерами ресурсов, а потоки — единицами исполнения. Процесс содержал один или несколько потоков, которые совместно использовали адресное пространство, открытые файлы, обработчики сигналов и все остальное.
В 2000 году в Линукс был введён новый системный вызов clone, который размыл различия между процессами и потоками. Ни в одной другой системе Unix вызова clone нет. Вызов clone создаёт новый поток либо в текущем процессе, либо в новом процессе. В первом случае, новый поток совместно использует совместно с уже существующими единое адресное пространство. Во втором случае, поток получает копию адресного пространства, которое становится недоступным для старых потоков (те, от которых он произошёл). Для сохранения совместимости с другими системами Линукс различает PID и идентификаторы задач (TID — Task IDentifer); оба эти поля хранятся с структуре задач. Когда вызов clone используется для создания нового процесса, PID устанавливается в новое значение, в противном случае задача получает новый TID, но наследует PID. Таким образом все потоки процесса получат тот же самый PID, что и первый поток процесса.
7. Планирование в ОС Linux.
Операционная система linux алгоритмом планирования различает 3 класса потоков (планирование linux происходит только на основе потоков, а не процессов) :
1. потоки реального времени, обслуживаемые по алгоритму fifo. данные потоки имеют наивысший приоритет и могут вытесняться только потоками того же типа.
2. потоки реального времени, обслуживаемые в порядке циклической очереди. данный тип потоков подобен предыдущему с тем отличием, что он имеет квант времени, т.е. данные потоки могут вытесняться по таймеру.
3. потоки разделения времени.
потоки реального времени имеют приоритеты 1 - 99, остальые - 100-139.
остальные потоки планируются в соответствии с приоритетами и алгоритмом циклической очереди.
Планировщик linux использует ключевую структуру данных, которая называется "очередь исполнения" (runqueue). Эта очередь связана с процессором и поддерживает 2 массива: active & expired. Каждый из этих массивов состоит из заголовков 140 списков.
Заголовок списка указывает на дважды связный список потоков данного приоритета. Планировщик выбирает задачу из активного массива с самым высоким приоритетом. Если квант времени этой задачи истек, то она переносится в список закончивших функционирование.
Если задача блокируется до истечения её кванта времени, то после события она помещается обратно в исходный активный массив, а её квант времени уменьшается на количество уже использованного времени процессора. Когда ни в одном из активных массивов больше нет задач, то планировщик меняет указатели для активного массива и массива задач, закончивших функционирование.
Разным уровням приоритетов, присваивается различный квант времени: чем больше приоритет, тем больший квант времени получает данный поток для приоритета 100 - 800млс, для приоритета 139 выделяется 5млс.
Приимущества данного подхода:
а) данный способ планирования гарантирует, что потоки с более низким приоритетом будут выполнены;
б) если, например, потоку необходимо считывание с диска, то, после предоставления такой возможности, ему дается право на быстрое выполнение.
По-скольку система linux является системой разделения времени, то невозможно предугадать, каким будет выполняться следующий процесс. В связи с этим в системе linux используются идея статического и динамического приоритетов.
Статический приоритет является постоянным для данной задачи и назначается по умолчанию в начале работы. Динамический приоритет назначается и изменяется во время работы в соответствии с политикой планирования.

8.Загрузка в ОС LinuxТочные детали процесса загрузки варьируется от системы к системе, однако общая схема этапов сохраняется. При включении компьютера начинается работа bios, которая производит тестирование при включении, а также начальное обнаружение устройств и их инициализацию. Затем, в память считывается и исполняется первый сектор загрузочного диска. Этот сектор содержит небольшую программу, считывающую автономную программу с загрузочного устройства (boot). Программа сначала копирует сама себя в старшие адреса памяти. после этого она считывает корневой каталог из загрузочного устройства. для этого она должна понимать формат файловой системы (существую загрузчики, которым не обязательна эта инфомарция). После этого программа boot считывает ядро операционной системы и передает ему управление. На этом этапе команда boot завершает свою работу.
Начальный код ядра написан на ассемблере. И является машинно-зависимым. Данный код выполняет следующие действия:
а) настраивает стэк ядра;
б) определяет тип центрального процессора;
в) вычисляет количество имеющейся оперативной памяти;
г) инициализирует прерывания;
д) разрешает работу блока управления памятью;
е) вызывает процедуру main. (написана на языке C).
Процедура main проделывает работу по инициализации остальной части операционной системы. В первую очередь выделяется память под буфер сообщений. В данный буфер записываются сообщения о ходе инициализации системы. Далее выделяется память для структур данных ядра. Большенство структур имеет фиксированный размер. Однако существуют такие, которые зависят от размера оперативной памяти (кэш страниц,таблица страниц). Далее операционная система начинает определение конфигурации компьютера. Для этого OS считывает файлы конфигурации, в которых сообщаются возможные устройства ввода\вывода, и проверяет, какие из них присутствуют на самом деле. Если устройство присутствует, оно добавляется в таблицу подключенных устройств. Иначе, устройство игнорируется.
После завершения конфигурации всего аппаратного обеспечения нужно настроить стек и загрузить процесс 0 (с самым высоким приоритетов). Процесс - продолжает инициализацию:
а) программирование таймера;
б) монтирование корневой файловой системы;
в) создание процесса 1 (init);
г) создание процесса 2 (page deamon).
Процесс init проверяет свои флаги, в зависимости от которых он запускает систему в однопользовательском или многопользовательском режиме.
Однопользовательский режим - в этом случае init создает процесс исполняющий оболочку и ждет, когда тот завершит свою работу.
Многопользовательский режим - в этом случае init создает процесс rc, который проверяет противоречивость файловой системы. Далее считывается файл ttys, в котором перечисляются терминалы и некоторые их свойства. для каждого из разрешенных терминаловон создает копию самого себя и запускает программу getty. Эта программа устанавливает для каждой линии скорость и прочие свойства, а также выводит сообщение для приглашения в систему (login:). Далее она считывает данные логина с клавиатуры, запускает программу login и завершает свою работу. Login запращивает у пользователя пароль, сравнивает с зашифрованным паролем. Если пароль верен, то логин запускает оболочку, если нет, то процесс запроса повторяется.
9. Структура памяти процесса в ОС Linux

10.Управление памятью в ОС Linux. Карта памяти.

11.Алгоритмы выделения памяти в ОС Linux.

12.Виртуальное адресное пространство в ОС Linux.
Виртуальные адресные пространства делятся на однородные, непрерывные, выровненные по границам области. Каждая область состоит из участка смежных страниц с одинаковой защитой и страничной организацией. Между областями виртуального адресного пространства могут быть пустые промежутки. Ссылка на такой промежуток приводит к фатальной страничной ошибке. Каждая область описывается в ядре, структурой vm_area_struct. Все эти элементы связываются вместе в список, отсортированный по виртуальным адресам. Когда список становится слишком длинным (более, чем 32 элемента), для ускорения поиска по нему создается дерево. В элементе vm_area_struct перечислены свойства области, например режим защиты, направление роста сегмента, информация о том, закреплен (не подкачивается) ли он в памяти, является ли данная область приватной для какого-либо процесса, имеет ли область резервное хранение на диске, и, если имеет, то где.
13.Подкачка в ОС Linux.
Единицей управления памятью в linux является страница. и почти весь компонент управления памятью работает с точностью до страницы. основная идея подкачки страниц очень проста и тесна связана с алгоритмом PFRA (page frame algorithm)
идея подкачки в linux:
процессу не обязательно находиться целиком в памяти, для того, чтобы выполняться.
все, что нужно, это пользовательская структура (необходимая страница) и таблица страниц. если они подкачаны в память, процесс считается находящимся в памяти, и может планироваться для выполнения. Страницы сегментов текста, данных, стека, подкачиваются динамически по мере появления ссылок на них.
если пользовательская структура страниц не находится в памяти, то процесс не может выполняться до тех пор, пока таблица страниц и необходимые страницы не будут загружены в память.
подкачка частично реализована ядром и частично процессом. называется Page Daemon. его приоритет равен 2.
Работа данного процесса можно представить следующим образом:
В большинстве случаев, процесс работает в фоновом режиме, периодически просыпаясь и совершая необходимые действия. Если системе срочно необходима работа данного процесса, то он запускается принудительно. После пробуждения, процесс анализирует ситуацию, и если он видит, что количество страниц слишком мало, то он начинает освобождать страницы.
Операционная система linux является системой с подкачкой страниц по требованию без упреждающей подкачки.
Текстовые сегменты и отображаемые на адресное пространства файлы подгружаются из соответствующих им файлов на диске. Все остальное подгружается либо в раздел подкачки, либо один из файлов подкачки. Файлы подкачки могут добавляться и удаляться динамически и у каждого свой приоритет.
подкачка страниц из отдельного раздела диска, доступ к которому осуществляется как к отдельному устройству, не содержащему файловую систему, более эффективно по нескольким причинам:
1. не требуются отображения блоков файлов в блоки диска. (Не нужен лишний перевод из физического уровня в логический)
2. физическая запись может иметь любой размер, а не только размер блока файлов.
3. страница всегда пишется на диск в виде единого непрерывного участка. (В файле подкачки это может быть не так)
страницы на устройстве подкачки не выделяется до тех пор, пока они не потребуются. каждый файл подкачки начинается с битового массива, в котором сообщается, какие страницы свободны. когда страница, у которой нет резервного хранения на диске, должна быть удалена из памяти, то из разделов или файлов подкачки , в котором еще есть свободное место, выбирается раздел или файл с наивысшим приоритетом и в нем выделяется страница. как правило, любой раздел подкачки, имеет более высокий приоритет, чем любой файл подкачки. далее, таблица страниц обновляется, чтобы отобразить тот факт, что страница отсутствует в памяти.
14.Алгоритм замещения страниц в ОС Linux.
Алгоритм замещения страниц работает следующим образом: система linux пытается поддерживать некоторые страницы свободными, чтобы их можно было предоставить при необходимости. Множество таких свободных страниц должно постоянно пополняться. Основным алгоритмом замещения страниц в linux является алгоритм PFRA (Page Frame Reclaming algorithm).
Подкачиваемость системы – это отношение количества страниц с резервным хранением к количеству страниц, нуждающихся в вытеснении. В алгоритме PFRA подкачиваемость является настраиваемым параметром. Прежде всего linux различает 4 разных типа страниц:
1) Неиспользуемые страницы – страницы, которые не могут вытесняться в подкачку
2) Подкачиваемые страницы – страницы, которые должны быть записаны в область подкачки перед тем, как их можно будет использовать.
3) Синхронизируемые страницы – страницы, которые должны быть записаны на диск в том случае, если они были помечены как грязные.
4) Отбрасываемые страницы – страницы, которые могут быть использованы немедленно.
Во время загрузки процесс init (приоритет 1) запускает страничные демоны kswapd и настраивает их на периодическое срабатывание. При каждом пробуждении поток kswapd проверяет, есть ли достаточное количество свободных страниц для этого он сравнивает нижний и верхний пределы с текущим уровнем использования памяти в каждой области памяти. Если памяти достаточно, то он отправляется обратно спать, хотя он может быть разбужен раньше, если внезапно понадобятся дополнительные страницы. Если доступной памяти в одной из зон становится меньше нижнего предела, то kswapd инициирует алгоритм востребования страниц PFRA. Во время каждого прохода востребуется только определенное заданное количество страниц. Это число ограничено, чтобы сдерживать объем ввода-вывода. При каждом выполнении алгоритма PRFA, он сначала пытается востребовать легкодоступные страницы, после чего переходит к труднодоступным. Востребованя ность страниц рассматривается в следующей очередности:
1) Отбрасываемые страницы и станицы, на которые нет ссылок.
2) Страницы с резервным хранением, на которые не было ссылок в последнее время
3) Совместно используемые страницы, которые не используются активно пользователями. Проблема с совместно используемыми страницами состоит в том, что если элемент страницы востребуется, то таблицы страниц всех адресных пространств (совместно использующих эту страницу должны быть синхронно обновлены.
Linux поддерживает эффективные древоподобные структуры данных для того, чтобы облегчить поиск совместно используемой страницы.
4) Обычные пользовательские страницы.
Алгоритм PRFA при выборе старых страниц (в какой-либо из категорий) для вытеснения использует алгоритм, подобный алгоритму часов. В основе этого алгоритма лежит цикл, которые сканирует список активных и неактивных страниц каждой зоны, пытаясь востребовать страницы различных типов. Большое значение имеет параметр срочности. Значение срочности передается как параметр, который сообщает процедуре о том, сколько усилий нужно потратить для востребования страницы. Обычно он указывает, сколько страниц нужно обследовать до того, как прекратить работу. Во время работы алгоритма PRFA страницы переносятся между списками активных и неактивных страниц. Для реализации поиска страниц, на которые не было ссылок и которые вряд ли понадобятся в ближайшее время, алгоритм PRFA поддерживает 2 флага для каждой страницы:
1) активная и неактивная
2) ссылки есть или нет
Этими двумя флагами можно обозначить 4 состояния:
- во время 1-го сканирования набора страниц алгоритм prfa сначала сбрасывает их биты ссылок. Если во время второго прохода по странице обнаруживается, что на нее была ссылка, то она переводится в другое состояние из которого она вряд ли будет востребована. В противном случае страница переводится в такое состояние, в котором она будет вытеснена с большей вероятностью.
Страницы из списка неактивных, а так же на которые не было ссылок с момента последнего обследования являются наилучшими кандидатами на вытеснение. Это те страницы, у которых оба бита установлены в 0. Однако при необходимости страницы могут быть востребованы, даже если они находятся в одном из других состояний.
Алгоритм prfa содержит страницы в списке неактивных, хотя на них могут быть ссылки для того, чтобы предотвратить следующие ситуации:
Рассмотрим процесс, который делает периодические обращения к разным страницам. Страница, к которой в последний раз выполнялось обращение будет иметь установленный флаг доступа, однако, поскольку она не понадобится в течение следующего часа можно не считать ее кандидатом на востребование. Также в системе linux существует еще один фоновый поток управления памятью. Данный поток либо пробуждается периодически для записи на диск грязных страниц либо явным образом тревожится ядром системы для записи грязных страниц из кэша страниц на диск
15.Ввод-вывод в ОС Linux. Общие понятия.
Система ввода-вывода ос linux.
Как правило все устройства ввода-вывода в linux выглядят как файлы и доступ к ним осуществляется с помощью тех же системных вызовов read и write, которые используются для обычных файлов. В некоторых случаях должны быть заданы параметры устройства, что делается при помощи специального системного вызова.
Общие понятия и концепции
В ОС linux реализован особый подход к управлению устройствами ввода-вывода. Данный подход заключается в интегрировании всех устройств ввода-вывода, т.н. файловую систему в виде специальных файлов (special files). Каждому устройству ввода-вывода назначается маршрут. Обычно в каталоге /dev, например диск может иметь маршрут /dev/hd1, принтер /dev/lp. Доступ к этим специальным файлам осуществляется так же, как и к любым другим файлам. Для этого не требуется никаких специальных команд или системных вызовов, например cp f1 /dev/lp. Данная команда скопирует данный файл на принтер, в результате чего файл будет распечатан. Программы могут открывать, читать и записывать в специальные файлы. Существует 2 типа специальных файлов – блочные и символьные. Блочный специальный файл состоит из последовательности пронумерованных блоков. Основное свойство блочного специального файла заключается в том, что к каждому его блоку можно адресоваться и получить доступ. Программа может открыть блочный файл и получить доступ к произвольному пронумерованному блоку. Символьные специальные файлы используются для устройств ввода-вывода символьного потока (клавиатура, мышь, принтер, сети и т.д.). С каждым специальным файлом связан драйвер устройства, осуществляющий работу с соответствующим устройством. У каждого драйвера есть так называемый номер старшего устройства (major device). Если драйвер поддерживает несколько устройств одного типа, то каждому такому устройству присваивается номер младшего устройства(minor device). Вместе взятые номера главного устройства и младшего устройства однозначно определяют каждое устройство ввода вывода.
16. Ввод-вывод в ОС Linux.
Система ввода-вывода ос linux.
Как правило все устройства ввода-вывода в linux выглядят как файлы и доступ к ним осуществляется с помощью тех же системных вызовов read и write, которые используются для обычных файлов. В некоторых случаях должны быть заданы параметры устройства, что делается при помощи специального системного вызова.
Общие понятия и концепции
В ОС linux реализован особый подход к управлению устройствами ввода-вывода. Данный подход заключается в интегрировании всех устройств ввода-вывода, т.н. файловую систему в виде специальных файлов (special files). Каждому устройству ввода-вывода назначается маршрут. Обычно в каталоге /dev, например диск может иметь маршрут /dev/hd1, принтер /dev/lp. Доступ к этим специальным файлам осуществляется так же, как и к любым другим файлам. Для этого не требуется никаких специальных команд или системных вызовов, например cp f1 /dev/lp. Данная команда скопирует данный файл на принтер, в результате чего файл будет распечатан. Программы могут открывать, читать и записывать в специальные файлы. Существует 2 типа специальных файлов – блочные и символьные. Блочный специальный файл состоит из последовательности пронумерованных блоков. Основное свойство блочного специального файла заключается в том, что к каждому его блоку можно адресоваться и получить доступ. Программа может открыть блочный файл и получить доступ к произвольному пронумерованному блоку. Символьные специальные файлы используются для устройств ввода-вывода символьного потока (клавиатура, мышь, принтер, сети и т.д.). С каждым специальным файлом связан драйвер устройства, осуществляющий работу с соответствующим устройством. У каждого драйвера есть так называемый номер старшего устройства (major device). Если драйвер поддерживает несколько устройств одного типа, то каждому такому устройству присваивается номер младшего устройства(minor device). Вместе взятые номера главного устройства и младшего устройства однозначно определяют каждое устройство ввода вывода.
Работа с сетью:
При работе с сетевыми устройствами в системе linux ключевым понятием является сокет.
Сокеты образуют пользовательский интерфейс для работы с сетью. Сокеты могут динамически создаваться и уничтожаться. При создании сокета вызывающему процессу возвращается дескриптор файла, требующий для установления соединения чтения и записи данных, а также разрыва соединения. Каждый сокет поддерживает определенный тип работы в сети. Например:
1. Надежный, ориентированный на соединение потоков байтов. Данный тип сокетов позволяет двум процессам на различных машинах устанавливать структуру связи типа труба (pipe).
2. Надежный, ориентированный на соединение потоков пакетов. 2-й тип сокетов отличается от первого тем, что он сохраняет границы пакетов.
Каждый из вышерассмотренных типов сокетов гарантирует передачу данных.
3. Ненадежная передача пакетов.
Данный тип сокетов предоставляет пользователю прямой доступ к сети (без труб). Данный тип сокетов полезен для приложений реального времени, возможны потери пакетов и байтов или неверный их порядок. Основное преимущество – высокая производительность. При создании сокета, один из параметров указывает на используемый протокол. Для надежных байтовый потоков используется протокол TCP (Transmission Control Protocol). Для ненадежной передачи пакетов обычно применяется протокол UDP (User Data Protocol). Оба они работают поверх протокола IP. Прежде чем сокет может быть использован с ним должен быть связан адрес. Как только сокеты созданы на компьютере-источнике и на компьютере-приемнике, между ними может быть установлено соединение. Одна сторона делает системный вызов listen(A), указывая в качестве параметра локальный сокет. Другая сторона делает системный вызов connect(B, adress), задавая в параметрах дескриптор файла для локального сокета и адрес для удаленного сокета. Если удаленный компьютер принимает вызов, то система устанавливает соединение между двумя сокетами. После установления соединения оно работает по аналогичному каналу для того, чтобы закрыть данный канал используется системный вызов close.
17. Файловые системы в ОС Linux. Общие понятия.
ОС Линукс поддерживает несколько десятков файловых систем. Это возможно благодаря наличию виртуальной файловой системы (файловый ввод\вывод относится как раз к блочным устройствам). Файл в системе Линукс - это последовательность байтов произвольной длины содержащие произвольную информацию. В ОС Линукс нет различий между текстовыми файлами, двоичными файлами и любыми другими типами файлов; имена файлов ограничены длиной 256 символов, в именах допускается использование всех ASCII-символов кроме символа null; имена файлов состоят из двух частей: имя файла и расширение файла (расширение могут иметь произвольную длину, причем их может быть несколько). Файлы могут группироваться в каталоги, каталоги представляют собой особый тип файлов с которыми можно работать также как и с файлами. Каталоги могут содержать подкаталоги, создавая тем самым иерархическую структуру. Корневой каталог называется "/"(bin - двоичные исполняемые программы, dev - специальные файлы для устройств I/O, etc - различные системные файлы, lib - библиотеки, usr - каталоги пользователя). Два способа задания имени файлов: абсолютный путь (в этом способе необходимо указывать полный путь к файлу начиная с корневого каталога) и относительный путь (в данном способе используется понятие рабочего каталога и имена путей указываются относительно рабочего каталога). Также в ОС Линукс реализована система ссылок (link) - это запись каталога, указывающая на существующий файл (например, есть два пользователя с разными рабочими директориями: 1 и 2; пользователю 2 необходим доступ к файлу С. Для доступа к данному файлу 1-му пользователю необходимо указывать абсолютный путь. Чтобы этого избежать можно создать ссылку на нужный файл. Вторым способом решения данной проблемы является использование следующей записи: '../' ( при создании каталога в нём автоматически создаются две записи: запись "." и запись ".."; "." означает сам каталог, а ".." это ссылка на родительский каталог).
В системе может существовать одновременно несколько устройств хранения данных. При этом возникает задача по эффективному управлению данными устройствами. Одним из решений является создание отдельной файловой системы для каждого устройства и отдельно управлять ими. Совершенно другой подход применяется в ОС Windows. Он заключается в том, чтобы смонтировать одно из устройств в дерево файлов другого устройства (при таком подходе не имеет значение какому устройству или какому диску принадлежит данный файл). Точка монтирования.
18. Файловые системы в ОС Linux. Файловая система Ext2.
(пишем весь 17 вопросы и содержание этого вопроса)
center367030 Структура файловой системвы ext2 имеет следующий вид:

-Загрузчик служит для загрузки ОС;
-Группа блоков "0" также относится к загрузке ОС (содержит код загрузки);
-Далее следуют следующие группы блоков.
Каждый блок состоит из:
- суперблок - в нём хранится информация о компоновке файловой системы, включая: количество и-узлов, количество дисковых блоков, начало списка свободных дисковых блоков;
- дескриптор группы - содержит информацию о расположении битовых массивов, количество свободных блоков и узлов в группе, количество каталогов в группе (это необходимо для равномерного распределения каталогов по всему диску);
- блоковый битовый массив — ведёт учёт свободных блоков;
- битовый массив и-узлов - ведёт учёт свободных и-узлов;
- и-узлы - нумеруются от единицы до какого-то значения (узел 1 - учёт повреждённых блоков, узел 2 - корневой каталог, и так далее); каждый и-узел имеет размер 128 байт, описывает ровно один файл или каталог;
center809625- блоки данных - хранятся каталоги и файлы, причём если файл или каталог состоит более чем из одного блока, то не обязательно они будут храниться непрерывно на диске.
Файловая система ext2 пытается расположить обычные файлы в той же самой группе блоков что и родительский каталог, а файлы данных в том же блоке что и узел исходного файла. Битовые массивы используются для принятия быстрых решений по выделению свободного места. Когда выделяются новые блоки файлов, то файловая система ext2 делает упреждающее выделение дополнительных блоков для минимизирования будущей фрагментации. Рассмотрим пример структуры каталога с 3 файлами:
Каждый каталог состоит из некоторого количества дисковых блоков. В каталоге элементы для файлов находятся в неотсортированном порядке. Элементы не могут пересекать границы блоков, поэтому в конце каждого дискового блока есть некоторое количество неиспользуемых байт. Каждая запись каталога состоит из 4 полей фиксированной длины и одного переменного.
Структура каталога имеет следующие поля:
номер и-узла (чаще всего и-узлы не упорядочены);
размер всей записи (rec_len);
тип (файл, каталог и так далее);
длина имени файла;
имя файла, которое заканчивается нулевым байтом.
Особенности поиска файла после удаления пути:
-мы указали в командной строке такой путь: /usr/os/lab/f1. В данном случае поиск разделяется на несколько шагов: - система находит корневой каталог, который использует и-узел с номером 2; - данный элемент помещается в кэш элементов, в корневом каталоге производится поиск строки /os/lab/f1, вычисляется его и-узел; - найденный элемент помещается в кэш; - из найденного и-узла производится поиск записи /lab/f1, вычисляется и-узел; - найденный элемент помещается в кэш и так далее (то есть рекурсивно, пока не дойдём до файла).
Поиск в каталогах производится линейно, и поэтому, это занимает много времени. Для этого используется кэш каталога.
Некоторые элементы и-узла:
Mode (file(F) or directory(D));
Nlinks (количество элементов каталога указывающих на этот и-узел);
Size (размер файла в байтах);
Addr (адрес первых 12 блоков файлов);
Atime (время последнего доступа к файлу);
Mtime (время последней модификации файла);
Ctime (время последнего изменения и-узла).
19. Файловые системы в ОС Linux. Файловая система Ext3.
(пишем весь 17 вопросы и содержание этого вопроса)
Данная файловая система по своей структуре и работе практически не отличается от файловой системы ext2. Значительным отличием новой файловой системы является появление журналирования. Основная идея такого подхода заключается в следующем: поддержка журнала, который в последовательном порядке описывает все операции файловой системы. Поскольку, при работе с файловой системой существуют задержки операций (механизм отложенной записи, перемещение магнитной головки диска), существует вероятность сбоя в эти промежутки времени. В случае с журналированием, в журнале производится запись начала и завершения операции; если происходит сбой после начала операции, система имеет возможность вернуться в состояние до сбоя и завершить начатую операцию. Журнал это файл в виде кольцевого буфера. Журнал может храниться на том же устройстве что и файловая система, так и на другом. Файловая система не работает с журналом, поскольку операции с журналом не журналируются. Для операции чтения в журнал используется отдельное блочное устройство журналирования JBD (Journaling Block Device). Данное устройство поддерживает основные структуры данных: запись журнала (log record), описатель атомарной операции (atomic operation handle), транзакция (transaction).
Совокупность атомарных операций: файловая система ext3 информирует устройство JBD о проделываемых операциях. Журнал можно настроить таким образом, чтобы в нём отображались изменения только метаданных, а не файлов. Это позволяет: защитить метаданные файловой системы, повысить производительность файловой системы (однако это не гарантирует защиту файлов от повреждений).
Ext3 спроектирована таким образом, чтобы быть максимально совместимым с файловой системой ext2. Это проявляется в схожей компоновке диска и основных структур.
20. Файловые системы в ОС Linux. Файловая система NFS.
В основе файловой системы NFS лежит идея: общей файловой системой может пользоваться произвольный набор клиентов и сервером. NFS работает как с локальными сетями так и с глобальной сетью. Каждый сервер NFS экспортирует один или несколько своих каталогов, предоставляя доступ к ним удалённым клиентам. Фактически экспортируется всё дерево подкаталогов.
Поскольку файловая система NFS обеспечивает работу между различными клиентами и серверами, большое значение имеет интерфейс взаимодействия. В качестве интерфейса NFS использует протоколы. NFS использует два протокола:
Протокол управления монтированием. (Данный тип протокола отвечает за все аспекты, детали монтирования файловых систем сервера на файловые системы клиентов)
Осуществляет доступ к каталогам и файлам. (Данный протокол используется доступа, чтения, записи и т.д.)
Реализация файловой системы NFS основывается на трёх уровнях:
Уровень системных вызовов.
Уровень ВФС(Виртуальная файловая система).
Передача сообщений.

21.Архитектура ОС WINDOWS NT/2000/XP

Уровень HAL. Работа уровня HAL заключается в том, чтобы предоставить всей остальной операционной системе абстрактное аппаратное устройство, свободное от своих отличительных способностей. Эти устройства предоставляются в виде машинно-независимых служб, которые могут использоваться остальной ОС. Данный уровень создан, чтобы скрывать различия между различными устройствами. К службам уровня HAL относятся:
доступ к регистрам устройств;
адресация устройств;
обработка прерываний;
операции DMA;
управление таймерами и часами реального времени;
интерфейс SBIOS;
Уровень ядра ОС. Назначение ядра заключается в том, чтобы сделать систему ещё более независимым. Ядро построено на низкоуровневых службах слоя HAL. Программа планирования находится также в ядре. Данный уровень предоставляет абстракции более высокого уровня чем HAL. Кроме того, ядро поддерживает работу двух низкоуровневых объектов: управляющие объекты и объекты диспетчеризации (на основе этих объектов строятся все пользовательские объекты). Управляющие объекты — объекты, управляющие с-истемой, примитивные объекты процессов, объекты прерываний. Объекты диспетчеризации — семафоры, мьютексы, события, таймеры и другие объкты изменения состояния, которых могут ждать потоки.
Исполняющие системы. Исполняющая система на языке Си может быть легко перенесена на другую архитектуру, поскольку от неё не зависит. Исполняющая система состоит из 10 компонентов (цифра чисто условная), каждый из которых представляет собой набор процедур, работающих вместе для выполнения некоторых задач; между компонентами нет жёстких границ; компоненты могут вызывать друг друга:
Менеджер ввода\вывода: формирует общую систему для управления системами ввода\вывода;
Менеджер памяти: реализует архитектуру виртуальной памяти со страничной подкачкой по требованию;
Менеджер безопасности: реализует определённую политику безопасности удовлетворяющий требованиям;
Менеджер процесса: данный менеджер занимается поддержкой работы процессов, их созданием и уничтожением, но не планированием;
Менеджер объектов: отвечает за создание, управление, уничтожение объектов, реализует пространство имён объектов и управляет им;
Менеджер кэша: данный менеджер занимается кэшированием сохранённых блоков, к которым недавно было обращение;
Менеджер Plug and Play: определение и подключение новых устройств; существуе 2 режима работы данного менеджера: определение устройств на этапе загрузки системы, определение новых устройств здесь и сейчас;
Менеджер энергопотребления: управление энергопотреблением компьютера, в частности отключение монитора, жёстких дисков при продолжительном отсутствии взаимодействия с системой;
Менеджер конфигурации: управление реестром;
Менеджер локального вызова процедуры: данный менеджер предназначен для более эффективной работы системы во время переключений между режимом пользователя и режимом ядра.
Win32 GDI. Данный интерфейс предназначен для обеспечения работы пользовательского графического интерфейса.
Системные службы. Системные службы предоставляет интерфейс для работы с исполняющей системой. Системные службы представляет из себя набор служб, обеспечивающих взаимодействием между программами и ОС. Данный уровень принимает настоящие системные вызовы.
Драйвера устройств. Каждый драйвер может управлять одним или несколькими устройствами ввода\вывода. Существуют драйверы как для реально видимых устройств (клавиатура, мышь), так и для многих внутренних устройств.
Интерфейс Ntdll.dll. Данный интерфейс отвечает за переключение между режимом пользователя и режимом ядра.
Подсистемы программирования. Представляет собой набор API32 (API64). Список системных вызовов никогда не публикуется и меняется с каждым новым выпуском системы. Вместо этого опубликованы и полностью документированы функциональные вызовы WinAPI. Они представляют собой библиотечные процедуры, которые либо обращаются к системным вызовам, чтобы выполнить требуемую работу, либо, в некоторых случаях, выполняют работу прямо в пространстве пользователя. Вызовы Win32 не изменяются от версии к версии, однако добавляются новые. Философия WinAPI отлична от философии Unix. Философия WinAPI заключается в предоставлении всеобъемлющего интерфейса с возможностью выполнить одно и тоже действие несколькими способами (в Unix присутствует минимальный набор вызовов).
В задачи интерфейса WinAPI включается:
создание/управление/уничтожение процессами и потоками;
межпроцессное взаимодействие;
управление семафорами, мьютексами и событиями;
управление файлами (открытие/закрытие/чтение, файловый ввод/вывод);
вызовы безопастности;
и так далее (Большинство выводов WinAPI относятся к графическим функциям).
22. Архитектура ОС WINDOWS VISTA
Уровень HAL – машинно-зависимый уровень, основные функции как и идеология такие же как и в Windows XP.
Структура NTOS — делится на 2 составляющих: уровень ядра (аналогичен слою «Ядро» в Windows XP) и исполнительный уровень (написан на языке Си, содержит несколько компонентов (компоненты исполнительного уровня работают при помощи абстракции, предоставляемых формой ядра). Как и в большинстве ОС большая часть кода исполнительного уровня является библиотечной.
Диспетчер потоков и процессов — аналогично менеджеру процессов Windows XP.
Диспетчер виртуальной памяти и объектов - аналогично менеджеру виртуальной памяти и объектов в Windows XP.
Диспетчер конфигурации - аналогично менеджеру конфигурации Windows XP.
Диспетчер LPC — это усовершенствованный механизм локального вызова процедуры. Данный компонент обеспечивает высокоэффективный межпроцессный обмен. В Windows Vista LPC был значительно улучшен и получил название расширенный LPC (Advanced LPC).
Диспетчер кэширования — аналогично менеджеру кэширования в Windows XP.
Диспетчер ввода/вывода - аналогично менеджеру ввода/вывода Windows XP. Содержит средства для управления P'n'P (Plug and Play). Такжа сюда включается управление энергопотреблением.
Монитор безопасности — обеспечивает работу сложных политик безопастности в Windows.
Ntdll.dll – обеспечивает переключение из режима ядра в режим пользователя и наоборот.
Системы программирования — данный слой включает в себя все реализованные системой программирования Windows XP.

Загрузка любой ОС начинается с инициализации кода энергонезависимой памяти (нежёстких дисков). Чаще всего в этой роли выступает BIOS. Он запускает небольшую программу начальной загрузки, программа начальной загрузки читает файловую систему и находит программу bootmgr (данная программа проверяет была ли система переведена в состояние гибернации: если это так, то bootmgr запускает winresume.exe, в противном случае запускается winload.exe — загружает в память компоненты системы: драйвера, уровень HAL, ядро, исполнительная система и другое). после загрузки необходимых компонентов управление передаётся коду низкого уровня NTOS, который начинает инициализировать драйвера, уровень HAL, ядро, исполнительный уровень и так далее. После инициализации всех компонентов режима ядра создаётся первый процесс пользовательского режима smss.exe.
23.Структура пользовательского режима. Программный интерфейс Win32 API.
Подсистемы программирования. Представляет собой набор API32 (API64). Список системных вызовов никогда не публикуется и меняется с каждым новым выпуском системы. Вместо этого опубликованы и полностью документированы функциональные вызовы WinAPI. Они представляют собой библиотечные процедуры, которые либо обращаются к системным вызовам, чтобы выполнить требуемую работу, либо, в некоторых случаях, выполняют работу прямо в пространстве пользователя. Вызовы Win32 не изменяются от версии к версии, однако добавляются новые. Философия WinAPI отлична от философии Unix. Философия WinAPI заключается в предоставлении всеобъемлющего интерфейса с возможностью выполнить одно и тоже действие несколькими способами (в Unix присутствует минимальный набор вызовов).
В задачи интерфейса WinAPI включается:
создание/управление/уничтожение процессами и потоками;
межпроцессное взаимодействие;
управление семафорами, мьютексами и событиями;
управление файлами (открытие/закрытие/чтение, файловый ввод/вывод);
вызовы безопастности;
и так далее (Большинство выводов WinAPI относятся к графическим функциям).
Динамические библиотеки DLL.
Одним из способов написания программ является описание всех возможных функций в тексте программы. В разных программах список функций может быть одинаковый, тем самым увеличивая повторяемость кода. Такой способ представляет собой статическую компоновку, однако в системе Windows существует другая технология, которая называется DLL (Dynamic Link Library). Суть заключается в следующем: часто повторяющиеся функции, вызовы переносятся в отдельный файл с расширением *.dll и далее данный файл загружается в оперативную память для того, чтобы использовать необходимые функции. Важной особенностью при создании DLL является подбор определённых функций, которые выносятся в DLL-файл. Работа программ в режиме пользователя тесно связана с взаимодействием интерфейсов WiinAPI и технологии DLL (можно сказать, что WinAPI построен на DLL). При этом некоторая работа мжет быть выполнена в режиме пользователя (особенности работы WinAPI, волокна). В DLL-библиотеках сосредоточены сами вызовы WinAPI.
24.Реестр ОС Windows Vista.

25. Реализация объектов в OC WINDOWS Vista. Структура объектов.
1. Диспетчер объектов занимает одно из важных мест в работе системы. Поскольку присоздании/уничтожении потоков создаются/уничтожаются соответствующие объекты. Диспетчер объектов представляет интерфейс для управления ресурсами системы и структурами данных.
Такой подход обеспечивает единый механизм для управления создания и уничтожения различных структур.
Исполнительный объект – это структура данных в виртуальной памяти доступная в режиме ядра. Объекты используются для построения абстракций более высоких уровней.
Поскольку все объекты являются структурами данных ядра, то при перезагрузке системы или при её включении объекты уничтожаются. После создания объектов и указания имени на этот объект можно ссылаться используя пространство имен объектов.
2. Каждый объект имеет следующую структуру: заголовок объекта (содержит информацию общего характера для всех типов объектов), данные объекта.
Заголовок объекта:
Имя объекта;
Каталог, в котором находится объект (пространство имен объекта);
Информация по безопасности (содержит информацию о возможности использования данного объекта);
Квоты (стоимость объекта. Квоты существуют для того чтобы предотвратить чрезмерное использование ресурсов системы пользовательскими процессами. Например, если квота равна 10, для какого либо процесса, а «плата за использование» - 2, то процесс может использовать ресурс 5 раз);
Список процессов с описателями (содержит список процессов, которые используют данный объект);
Количество ссылок (количество процессов и потоков, которые используют данный объект);
Указатель на объект типа (информация о том, к какому типу принадлежит данный объект. Например, тип семафор, мьютекс и т.д.).

26. Реализация объектов в OC WINDOWS Vista. Типы объектов.
Например, тип семафор, мьютекс и т.д27. Реализация объектов в OC WINDOWS Vista. Пространство имён.
Для идентификации объектов находящихся в системе, каждый объект обладает именем, которое в свою очередь хранится в отдельном адресном пространстве, называемым пространством имен объектов. Пространством имен объектов управляет диспетчер объектов. Также как и объекты, пространство имен объектов создается и уничтожается динамически, а поэтому при перезагрузке и выключении системы уничтожается.
Пространство имён представляет собой иерархическую структуру в виде каталогов (глянуть win_obj на сайте microsoft).
Структура пространства имен

«Object Types» – типы объектов;
«ArcName» - Имена разделов обнаруженных начальным загрузчиком.
«??» - данный каталог содержит имена всех устройств в стиле MS-DOS;
«DosDevices» – данный каталог является символической ссылкой на каталог «??»;
«Device» - здесь находятся все обнаруженные устройства (в виде объектов);
«Driver» - объекты, которые соответствуют всем загруженным драйверам;
«ObjectTypes» - типы объектов;
«ArcName» - имена разделов, обнаруженных начальным загрузчиком.
28. Задания, процессы, потоки, волокна в OC WINDOWS Vista.
1. Процессы в ОС Vista являются контейнерами для ресурсов и потоков. Потоки это абстракция ядра для планирования процессов. Каждый поток имеет два стека: один стек в режиме ядра, второй – в режиме пользователя. Процессы и потоки представляют собой объекты. В OS Windows Vista cуществует структура job (задание). Данная структура была создана, чтобы группировать процесс.
2. В ОС Vista существует структура с заданием. Данные структуры были созданы для того чтобы группировать процессы.
Основной функцией структуры задания, является применение ограничений к содержащемуся в них потокам на использование ресурсов. Если какой-либо поток, находящийся в данном задании создает новый процесс, то данный процесс будет принадлежать также к этому заданию. Один процесс принадлежит одному заданию.
Любой процесс начинается с одного потока. Поток является единицей планирование в ОС Windows Vista.
В ОС Windows Vista существуют такие структуры как волокна(fibers). Волокна создаются и планируются в режиме пользователя. Основное преимущество волокон заключается в том, что они не используют переключения между режимом пользователя и режимом ядра.

29. Межпроцессное взаимодействие в OC WINDOWS Vista.
При работе системы происходит постоянный обмен информации между потоками.
Механизмы обмена:
Канал (именованные и неименованные);
Почтовые слоты (mail slots. Механизм почтовых слотов похож на механизм каналов. Отличие заключается в том, что с помощью почтовых слотов информация отсылается одновременно нескольких получателям. Доставка не гарантирована);
Сокеты (чаще всего используются для передачи информации по сети);
Совместное использование объектов.
Данные 4 механизма представляют собой взаимодействие в виде передачи информации.

Процессы также могут использовать различные виды и типы объектов для синхронизации.
С объектами синхронизации работают только потоки.
Объекты синхронизации:
Семафоры;
Мьютекс;
Критическая область;
События (события делятся на: события уведомления и события синхронизации).

30. Реализация процессов и потоков в OC WINDOWS Vista.
Процессы в ОС Vista являются контейнерами для ресурсов и потоков. Потоки это абстракция ядра для планирования процессов. Каждый поток имеет два стека: один стек в режиме ядра, второй – в режиме пользователя. Процессы и потоки представляют собой объекты. В OS Windows Vista cуществует структура job (задание). Данная структура была создана, чтобы группировать процесс.
При работе системы происходит постоянный обмен информации между потоками.
Механизмы обмена:
Канал (именованные и неименованные);
Почтовые слоты (mail slots. Механизм почтовых слотов похож на механизм каналов. Отличие заключается в том, что с помощью почтовых слотов информация отсылается одновременно нескольких получателям. Доставка не гарантирована);
Сокеты (чаще всего используются для передачи информации по сети);
Совместное использование объектов.
Данные 4 механизма представляют собой взаимодействие в виде передачи информации.
Процессы также могут использовать различные виды и типы объектов для синхронизации.
С объектами синхронизации работают только потоки.
Объекты синхронизации:
Семафоры;
Мьютекс;
Критическая область;
События (события делятся на: события уведомления и события синхронизации).

31. Планирование в OC WINDOWS Vista. Условия вызова планировщика.
Планирование происходит на основе потоков. После завершения работы поток входит в режим ядра, вызывает планировщик и после этого происходит переключение на другой поток. Поток вызывает планировщик в следующей ситуации:
Текущий, выполняющийся поток блокируется на семафоре мьютексе, семафоре, событии и т. д.;
Поток сигнализирует объект;
Истекает квант времени;
Завершается операция ввода/вывода;
Истекает время ожидания.
В первом случае поток работает в режиме ядра. Поток не может выполнять работу с процессором, а поэтому вызывает планировщик для следующего потока.
Во втором случае поток также находится в режиме ядра. При этом событии поток не блокируется, однако всё равно вызывается планировщик. Вызывается он потому что, возможно существует поток с более высоким приоритетом.
В третьем случае происходит прерывание в режиме ядра.
Четвертый случай подразумевает запуск потока после того как он дождался и завершил операцию ввода/вывода.
32. Планирование в OC WINDOWS Vista. Система приоритетов.
В системе Windows Vista используется приоритетный алгоритм планирования. Существуют два понятия: базовый приоритет и текущий приоритет. Базовый приоритет устанавливается по умолчанию при создании процесса/потока. Текущий приоритет изменяется динамически во время работы системы. В системе всего существует 32 уровня приоритетов (от 0 до 31). От 1 до 15 – пользовательские потоки. От 16 до 31 – системные потоки. Процесс с приоритетом «0» - это поток обнуления страниц.
Также существует понятие класс приоритетов и относительный приоритет.
Класс – задает приоритет для процесса и всех потоков, находящихся в нём. Допустимые значения:
Real-time
High
Above normal
Normal
Idle
Класс устанавливается для процесса, но влияет на приоритеты потоков.
Относительный приоритет. Допустимые значения:
Time critical
Highest
Above normal
Normal
Below normal
Lowest
Idle
Базовый алгоритм планированиям ОС Vista поддерживает массив с 32 элементами. Элементы массива соответствуют приоритетам от 0 до 31. Каждому элементу массива соответствует список процессов соответствующего приоритета. Планировщик просматривает этот массив, начиная с самого высокого приоритета и ищет не пустой список потоков. Как только будет найден данный список, выбирается первый в очереди поток и выполняется в течение одного кванта времени. Если выбранный поток не успел выполниться, то он ставится в конец очереди своего приоритета. То есть на каком-либо уровне приоритетов потоки планируются циклически. В дополнении к базовым алгоритмам планирования используются механизм динамического изменения текущего приоритета.

33. Планирование в OC WINDOWS Vista. Условия изменения приоритетов.
Условие повышения приоритета:
- в первом случае: поток завершил операцию ввода/вывода, и готов приступить к вычислениям. Величина повышения приоритета зависит от устройства, с которым работает данный поток.
- во втором случае: поток ждал изменение семафора, мьютекса, события и после данного события его приоритет повышается(на один или два уровня).
Условия понижения приоритета:
При повышении приоритета, его значение не всегда остается постоянным. Поток, получивший прирост текущего приоритета может использовать данную ситуацию в течение одного кванта времени. По истечении этого кванта времени приоритет снижается на единицу, вплоть до значения базового приоритета.

34. Технология DLL. Структура DLL-библиотеки. Наиболее важные DLL-библиотеки.
DLL-библиотека состоит из нескольких специфических функций и произвольного набора функций, выполняющих ту работу, для которой разрабатывалась данная библиотека. DLL-библиотека может иметь (а может не иметь) сегмент данных и ресурсы.
В заголовке загрузочного модуля DLL-библиотеки описаны экспортируемые точки входа, соответствующие всем или некоторым определенным в ней функциям. Приложения могут вызывать только те функции DLL-библиотеки, которые экспортируются ею.
Состав DLL-библиотеки: До тех пор, пока ни одно приложение не затребовало функции из DLL-библиотеки, сама библиотека находится в файле на диске. В оперативной памяти ее нет. Однако, как только приложение затребует функцию из DLL-библиотеки или загрузит библиотеку явным образом, начнется процесс инициализации библиотеки. Этот процесс выполняется только один раз, так как в памяти может находится только одна копия DLL-библиотеки.
В процессе инициализации после загрузки библиотеки в память Windows вызывает функцию LibEntry, которая должна быть определена в каждой DLL-библиотеке. Можно считать, что функция LibEntry является точкой входа библиотеки, получающей управление при загрузке библиотеки в память. Задачей функции LibEntry является инициализация локальной области памяти, если она определена для DLL-библиотеки.
Функцию LibEntry не надо определять самостоятельно, так как при создании файла DLL-библиотеки редактор связей включит уже имеющийся в стандартной библиотеке модуль. Этот стандартный модуль выполняет всю необходимую работу по инициализации и затем вызывает функцию LibMain. Для нестандартной инициализации функцию LibEntry нужно разрабатывать самостоятельно.

35. Технология DLL. Преимущества и недостатки DLL. Win32 и DLL
Динамические библиотеки DLL.
Одним из способов написания программ является описание всех возможных функций в тексте программы. В разных программах список функций может быть одинаковый, тем самым увеличивая повторяемость кода. Такой способ представляет собой статическую компоновку, однако в системе Windows существует другая технология, которая называется DLL (Dynamic Link Library). Суть заключается в следующем: часто повторяющиеся функции, вызовы переносятся в отдельный файл с расширением *.dll и далее данный файл загружается в оперативную память для того, чтобы использовать необходимые функции. Важной особенностью при создании DLL является подбор определённых функций, которые выносятся в DLL-файл. Работа программ в режиме пользователя тесно связана с взаимодействием интерфейсов WiinAPI и технологии DLL (можно сказать, что WinAPI построен на DLL). При этом некоторая работа мжет быть выполнена в режиме пользователя (особенности работы WinAPI, волокна). В DLL-библиотеках сосредоточены сами вызовы WinAPI.
38. Конфигурация виртуального адресного пространства для пользовательского
процесса в OC WINDOWS Vista.
Все пользовательские процессы в ОС Vista имеют своё виртуальное адресное пространство. Для 32-битной системы размер виртуального адресного пространства равен 4 гигабайтам. Два, из которых, отводятся для пользовательского режима, остальные два – для режима ядра. Для 64-битных систем виртуальные адреса могут быть как 32-битные (используются для совместимости) так и 64-битные. Также в таких системах 32-битные процессы могут получить 4 гигабайта (виртуальной) памяти.
Общая структура виртуального пространства 32-битной системы
Первые и последние 64 Кбайт виртуального адресного пространства не используются. Это делается для того, чтобы было проще отлавливать системные ошибки. Над 64 Кбайтами начинается область приватных данных и программ пользовательского процесса (данная область простирается до 2 Гбайт и является разной для разных процессов). Верхние 2 Гбайта – виртуальная память ядра. Она используется совместно всеми процессами, кроме таблиц страниц. Каждая виртуальная страница может находиться в одном из трёх состояний:
Недействительная страница (ссылка на такую страницу приводит к страничному прерыванию и нарушению доступа, т.е. такой страницы еще нет, она еще не загружена).
Зафиксированная страница (данное состояние возникает после того как на неё отображаются код или данные).
Зарезервированная страница (эта недействительная страница, но эти страница никогда не будут назначаться диспетчером памяти для других целей. Это используется для предотвращения излишнего роста из стека страниц).
Для поддержки виртуальной памяти используется механизм подкачки. Соответственно место на жестком диске - файл подкачки.
Windows использует следующую стратегию для выделения дискового пространства под страницы: зафиксированным страницам не выделяется место в файле подкачки до того момента когда их необходимо вытеснить в файл подкачки. Для тех страниц, которые никогда не вытесняются, дисковое пространство не выделяется.
Если суммарная виртуальная память меньше чем имеющаяся физическая, то файл подкачки не используется.
Для повышения производительности системы во время подкачки используются следующие механизмы:
страницы, которые подлежат вытеснению, группируются и затем сбрасываются на жёсткий диск большими частями за одну операцию ввода\вывода, при этом в файле подкачки выделяется сплошная часть дисковой памяти (Windows может поддерживать до 16 файлов подкачки, которые распределены по нескольким дискам, они имеют минимальный и максимальный размер); размер страницы чаще всего равен 4 Кбайта, однако в некоторых случаях 4 Мбайта;

39. Реализация, поддержка, особенности виртуальной памяти в OC WINDOWS Vista.
Все пользовательские процессы в ОС Vista имеют своё виртуальное адресное пространство. Для 32-битной системы размер виртуального адресного пространства равен 4 гигабайтам. Два, из которых, отводятся для пользовательского режима, остальные два – для режима ядра. Для 64-битных систем виртуальные адреса могут быть как 32-битные (используются для совместимости) так и 64-битные. Также в таких системах 32-битные процессы могут получить 4 гигабайта (виртуальной) памяти.
Общая структура виртуального пространства 32-битной системы
Первые и последние 64 Кбайт виртуального адресного пространства не используются. Это делается для того, чтобы было проще отлавливать системные ошибки. Над 64 Кбайтами начинается область приватных данных и программ пользовательского процесса (данная область простирается до 2 Гбайт и является разной для разных процессов). Верхние 2 Гбайта – виртуальная память ядра. Она используется совместно всеми процессами, кроме таблиц страниц. Каждая виртуальная страница может находиться в одном из трёх состояний:
Недействительная страница (ссылка на такую страницу приводит к страничному прерыванию и нарушению доступа, т.е. такой страницы еще нет, она еще не загружена).
Зафиксированная страница (данное состояние возникает после того как на неё отображаются код или данные).
Зарезервированная страница (эта недействительная страница, но эти страница никогда не будут назначаться диспетчером памяти для других целей. Это используется для предотвращения излишнего роста из стека страниц).
Для поддержки виртуальной памяти используется механизм подкачки. Соответственно место на жестком диске - файл подкачки.
Windows использует следующую стратегию для выделения дискового пространства под страницы: зафиксированным страницам не выделяется место в файле подкачки до того момента когда их необходимо вытеснить в файл подкачки. Для тех страниц, которые никогда не вытесняются, дисковое пространство не выделяется.
Если суммарная виртуальная память меньше чем имеющаяся физическая, то файл подкачки не используется.
Для повышения производительности системы во время подкачки используются следующие механизмы:
страницы, которые подлежат вытеснению, группируются и затем сбрасываются на жёсткий диск большими частями за одну операцию ввода\вывода, при этом в файле подкачки выделяется сплошная часть дисковой памяти (Windows может поддерживать до 16 файлов подкачки, которые распределены по нескольким дискам, они имеют минимальный и максимальный размер); размер страницы чаще всего равен 4 Кбайта, однако в некоторых случаях 4 Мбайта;

40. Реализация управления памятью в OC WINDOWS Vista. Обработка страничных
прерываний.
При управлении памятью диспетчер памяти работает с процессами, поскольку процессы являются контейнерами ресурсов.
При создании процесса ему выделяется область ВАП, а также создаётся дескриптор VAD. Данный дескриптор содержит: диапазон отображаемых адресов, секция представления файла резервного хранения (место на жёстком диске) и так далее. При обработке страничных ошибок Windows различает 5 категорий:
страница не зафиксирована;
попытка обращения страницы с нарушением разрешения;
попытка модификации страницы;
необходимость в увеличении стека;
страница зафиксирована, но в данное время не отображена.
«Идея виртуальной памяти»: Изначально программа (процесс) загружаются в ОП не полностью. По мере работы программы (процесса), она подгружает необходимые части. В определенный момент может произойти следующая ситуация: физическая память переполнена и чтобы загрузить следующую необходимую часть программы, необходимо освободить часть памяти (ОП). В этот момент система решает какие из частей программы (процесса) являются менее важными. Их соответственно можно выгрузить на жесткий диск. Основная проблема заключается в том, чтобы определить какие из частей программы (процессов) являются менее важными.
Первая проблема: обмен между оперативной памятью и жестким диском происходит целыми страницами.
Другой проблемой является сам обмен между ОП и жестким диском. Частый обмен приводит к снижению эффективности системы. Медленная работа устройств ввода/вывода.
Основной идеей управления памятью в Windows Vista является концепция рабочего набора. Чтобы свести к минимуму взаимодействие с жестким диском применяется следующая стратегия: в памяти поддерживается определенное количество свободных страниц, которые можно использовать если есть запрос, от какого-либо процесса на подкачку страниц.

41. Алгоритм замещения страниц в OC WINDOWS Vista.
В системе поддерживается постоянное количество свободных страниц. Когда их количество становится низким, диспетчер памяти начинает готовить физические страницы: он удаляет их из процессов пользовательского режима и из системных процессов. Основная его задача (диспетчера) оставить в ОП только самые важные виртуальные страницы. Основная проблема: определить важность каждой страницы. Данная проблема решается с помощью концепции рабочего набора.
«Концепция рабочего набора» - каждый процесс имеет свой набор физических страниц (страничных блоков). В рабочий набор входят только отображаемые (те страницы, которые реально есть в памяти) страницы. Размер и состав рабочего набора может меняться.
Существуют две основные характеристики рабочего набора:
Минимальное количество страниц (от 20 до 50 страниц).
Максимальное количество страниц (от 45 до 345 страниц).
Все процессы начинают работу с одинаковым минимумом и максимумом. Однако, поскольку эти границы не являются жесткими, минимальное и максимальное количество может изменяться.
Рабочие наборы начинают действовать только тогда, когда количество доступной ОП становится низким, в противном случае процесс расходует память по своему усмотрению, то есть количество страниц в рабочем наборе может превышать максимум.
Существует абстракция – диспетчер рабочих наборов. В его задачу входит включение и выключение рабочих наборов, а также управление ими.
Существует три уровня активности диспетчера наборов:
Доступно большое количество памяти (сканирование страниц со сбросом битов доступа и использование их значений для определения возраста каждой страницы, оценка неиспользованных страниц в каждом рабочем наборе).
Недостаточное количество памяти (для всех процессов со значительным процентом неиспользованных страниц, добавление в рабочие наборы прекращается и начинается замена самых старых страниц).
Низкий уровень количества свободной памяти (усечение рабочих наборов ниже их максимума, путем удаления старых страниц).
Диспетчер рабочих наборов запускается каждую секунду. Он также регулирует объем выполняемых работ, чтобы не перегрузить систему. Отслеживает запись страниц на диск.

42. Управление физической памятью в OC WINDOWS Vista.
Управление физической памятью основывается на поддержке пяти списков страниц. Первый список модифицированных страниц. Второй -список чистых страниц. Третий – список свободных страниц. Четвертый – список обнуленных страниц. Пятый - список дефектных страниц ОП. На все страницы системы есть ссылки в элементах таблиц страниц или в одном из пяти этих списков, совокупность которых называется базой данных номеров страничных блоков.
Структура этой базы представляет собой таблицу, индексированную по номеру физического блока. Элементы таблицы имеют фиксированную длину. Название столбцов: «Состояние» (что из себя представляет данная страница), «Счетчик» (сколько таблиц страниц указывает на данную страницу, если счетчик равен 0, то страница не используется), «Рабочий набор» (страницы рабочих наборов указывают в каком элементе на них есть ссылки). «Таблица страниц» (указывает на таблицу страниц процесса), «Ссылка на следующую страницу» .
Страницы перемещаются из рабочих наборов в списки диспетчером рабочих наборов и прочими системными потоками.
Когда диспетчер рабочих наборов удаляет страницу из рабочего набора, эта страница попадает в нижнюю часть списка резервных или модифицированных страниц.
Если в следующий момент времени одна из этих страниц будет затребована, произойдёт страничное прерывание и страница снова вернётся в соответствующий рабочий набор. Возврат страниц происходит без операции ввода/вывода.
Процесс завершает работу и данная страница становится ему не нужна. Также освобождается место в файле подкачки, соответствующее данной странице.
Следующие переходы связаны с системными потоками.
Существует два системных потока:
Поток записи отображенных страниц.
Поток записи модифицированных страниц.
4. Эти потоки периодически проверяют количество чистых страниц. Если их мало, то потоки берут модифицированные страницы из верхней части списка. Записывают их на диск и переносят в список резервных страниц.
5. Данный переход осуществляется тогда, когда страница не связана с каким-либо процессом.
6. Данный переход происходит тогда, когда требуется страница.
7. Поток обнуления страниц с приоритетом ноль периодически просыпается и проверяет кол-во обнуленных страниц. Если их недостаточное количество, то поток обнуляет страницы в фоновом режиме.
8. Требуется обнуленная страница.
Данная схема обеспечивает эффективное управление физической памятью, сводит к минимуму обращение к жесткому диску. Однако требует некоторого усложнения работы системы и принятия определенных стратегических решений.

44. Файловая система FAT. Загрузочный сектор.
Формат загрузочного сектора зависит от операционной системы и ее версии. Загрузочный сектор является самым первым на логическом диске. Загрузочная запись состоит из двух частей:
1. Блок параметров диска;
2. Программа начальной загрузки ОС;
Первые два байта загрузочной записи – это команда безусловного перехода на системный загрузчик; Далее идет восьми байтовый системный идентификатор (Здесь находится фирма разработчик и версия ОС); Затем следуют параметры диска, а после него - загрузчик ОС;
Блок параметров диска содержит следующую информацию:
1. Размер сектора;
2. Число секторов в кластере;
3. Число зарезервированных секторов;
4. Количество копий FAT;
5. Максимальное количество элементов root;
6. Количество секторов в таблице FAT;
7. Число секторов на дорожке;
8. Метка тома;
9. Имя ФС;
10. Другие параметры;
Загрузочные записи различных операционных систем отличаются обычно структурой блока параметров. В некоторых есть дополнительные поля. Между загрузочным сектором и FAT могут находиться зарезервированные сектора, которые являются служебными для ФС или не используются.

45. Файловая система FAT. Таблица размещения файлов.
FAT – карта области данных. Область данных разбивается на кластеры.
Кластер – это один или несколько смежных секторов области данных. С другой стороны, это минимальная адресуемая единица дисковой памяти, выделяемая файлом. Т.е. файл или каталог занимает целое количество кластеров.
Для создания и записи на диск нового файла ОС отводит несколько свободных кластеров диска. Эти кластеры необязательно должны следовать друг за другом. Для каждого файла хранится список всех номеров кластеров, которые предоставлены данному файлу.
Разбиение области данных на кластеры вместо использования секторов позволяет:
- уменьшить размер таблицы FAT:
- уменьшить фрагментацию файлов;
- сокращение длины цепочек фалов;
Однако, слишком большой размер кластеров ведет к неэффективному использованию области данных, особенно в случае, большого количества маленьких файлов. Каждый элемент таблицы FAT соответствует одному кластеру диска и характеризует его состояние:
- свободен
- занят
- сбойный
Если кластер распределен к какому-либо файлу, то соответствующий элемент таблицы FAT содержит номер следующего кластера FAT. Последний кластер файла отмечается числом в диапазоне от 0xff8h до 0xfffh (FAT16) (0xfff8h до 0xffffh (FAT32)). Если кластер является свободным, то он содержит нулевое значение (0х000h(FAT16), 0х0000h(FAT32)). Кластер, непригодный для использования, отмечается числом 0xff7h(FAT16) , 0xfff7h(FAT32). Таким образом, таблица FAT кластеры, принадлежащие одному файлу, связываются в цепочки. Таблица FAT хранится сразу после загрузочной записи логического диска, ее точное расположение описано в специальном поле в загрузочном секторе, она храниться в двух идентичных экземплярах, которые следуют друг за другом и при разрушении первой копии используется вторая.
Поскольку таблица FAT интенсивно используется во время работы системы, то она загружается в ОП и остается там как можно дольше.
Основной недостаток FAT состоит в том, что при создании файла работает следующее правило, выделяется первый свободный кластере, что ведет к фрагментации диска и сложным цепочка файлов. За счет этого происходит замедление работы с файлами.

46. Файловая система NTFS. Структура тома.
Самым верхним в иерархии структуры NTFS является том (volume). Том соответствует логическому разделу на диске и создается, когда форматируется диск или его часть для NTFS. На одном диске может находиться несколько томов. Том состоит из ряда файлов и свободного пространства. Том NTFS содержит данные файловой системы, такие как битовые карты, системный загрузчик и т.д. Единицей управления дискового пространства NTFS является кластер или кластерный множитель. Размер кластера зависит от размера форм. В NTFS физическое местоположение на диске задается при помощи логического номера кластера LCN (Logical Cluster Number). LCN получается при нумерации всех кластеров от начала и до конца тома. Таблица MFT является сердцевиной структуры тома NTFS, логический MFT содержит по одному ряду для каждого файла тома, включая в ряд самого себя, также каждый том NTFS содержит загрузочный файл, файл мета данных, а также пользовательские файлы и каталоги.
47. Файловая система NTFS. Структура главной файловой таблицы MFT
MFT
MFT
Meta-Data
User’s files and catalogues
MFT реализована в виде массива файловой записи, каждый ряд MFT представляет из себя один файл, однако, если у файла много атрибутов или он сильно фрагментирован, то используется более одной файловой записи. В этом случае первая запись, в которой хранится местоположение остальных, называется базовой файловой записью. Файл на томе идентифицируется 64-разрядным значением – файловая ссылка. Файловая ссылка состоит из 2 частей: - номер файла (0-47) и - номер последовательности (47-63). Номер файла – номер позиции записи в MFT – 1. Номер последовательности учитывается каждый раз, когда данная позиция MFT используется повторно. Для проверки целостности внутренней структуры.

48. Файловая система NTFS. Файловая запись MFT для малого и большого файла.
В NTFS атрибуты обозначаются прописными буквами. Каждый атрибут хранится в файле как отдельный поток байт. NTFS не читает и не записывает в файл, а читает и записывает потоки для соответствующих атрибутов. Над атрибутами возможны следующие действия: создание, удаление, чтение, запись. Операции чтения и записи обычно применяются к безымянным атрибутам данных.
Обязательными атрибутами для каждого файла являются:
1. Стандартная информация (время создания, модификации, число каталогов и т.д.).
2. Имя файла.
3. Дескриптор защиты (используется для ограничения доступа и несанкционированной работы с данным файлом).
4. Данные (содержимое файла).
Атрибуты файлов в записях MFT расположены в порядке возрастания числовых кодов типа. Для малого файла все его атрибуты и их значения помещаются в одной файловой записи MFT. Если значение атрибута хранится в MFT, он называется резидентным атрибутом. В начале каждого атрибута расположен стандартный заголовок, содержащий информацию о данном атрибуте, которую NTFS использует для стандартной обработки. Если значение атрибута хранится непосредственно в MFT, время необходимое для доступа к нему значительно сокращается (обращение к диску только 1 раз). Атрибуты небольшого или небольшого файла могут быть резидентными (все хранятся в MFT).
Если какой-либо из атрибутов не помещается в MFT, то NTFS выделяет на диске область отдельную от MFT, которая называется отрезком и в которой хранится значение атрибутов большого размера. Если размер атрибута снова увеличивается, то в очередной раз выделяется новый отрезок. Атрибуты, значения которых не хранятся в MFT, называются нерезидентными атрибутами.

49. Файловая система NTFS. Файловая запись MFTдля малого и большого каталога.
В NTFS атрибуты обозначаются прописными буквами. Каждый атрибут хранится в файле как отдельный поток байт. NTFS не читает и не записывает в файл, а читает и записывает потоки для соответствующих атрибутов. Над атрибутами возможны следующие действия: создание, удаление, чтение, запись. Операции чтения и записи обычно применяются к безымянным атрибутам данных.
Обязательными атрибутами для каждого файла являются:
1. Стандартная информация (время создания, модификации, число каталогов и т.д.).
2. Имя файла.
3. Дескриптор защиты (используется для ограничения доступа и несанкционированной работы с данным файлом).
4. Данные (содержимое файла).
Атрибуты файлов в записях MFT расположены в порядке возрастания числовых кодов типа. Для малого файла все его атрибуты и их значения помещаются в одной файловой записи MFT. Если значение атрибута хранится в MFT, он называется резидентным атрибутом. В начале каждого атрибута расположен стандартный заголовок, содержащий информацию о данном атрибуте, которую NTFS использует для стандартной обработки. Если значение атрибута хранится непосредственно в MFT, время необходимое для доступа к нему значительно сокращается (обращение к диску только 1 раз). Атрибуты небольшого или небольшого файла могут быть резидентными (все хранятся в MFT).
Если какой-либо из атрибутов не помещается в MFT, то NTFS выделяет на диске область отдельную от MFT, которая называется отрезком и в которой хранится значение атрибутов большого размера. Если размер атрибута снова увеличивается, то в очередной раз выделяется новый отрезок. Атрибуты, значения которых не хранятся в MFT, называются нерезидентными атрибутами.

50. Файловая система NTFS. Файлы метаданных.
Четыре вида метаданных, которые могут быть прикреплены к файлу или каталогу :
1) object id - Идентификатор объекта это 64 байта, которые можно прикрепить к файлу или каталогу. Из них первые 16 байт позволяют однозначно идентифицировать файл в пределах тома и обращаться к нему не по имени, а по идентификатору. Остальные 48 байт могут содержать произвольные данные.
2)reparse poing - точка повторной обработки. В файл или каталог добавляются специальные данные, файл перестаёт быть обычным файлом и обработать его может только специальный драйвер фильтра файловой системы.
3)extended attributes - расширенные атрибуты файла, Здесь стоит упомянуть только то, что под Windows эта технология практически не применяется. Из известного мне программного обеспечения только Cygwin использует расширенные атрибуты для хранения POSIX прав доступа. У одного файла на NTFS могут быть или расширенные атрибуты, или буфер точки повторной обработки. Одновременная установка и того и другого невозможна. Максимальный размер всех расширенных атрибутов у одного файла составляет 64 Кб.
4)alternate data streams - дополнительные файловые потоки. Про них знает уже, наверное, каждый. Перечислю основные признаки этого вида метаданных: именованность (то есть у файла может быть несколько потоков, и у каждого своё имя), прямой доступ из файловой системы (их можно открывать, используя формат «имя файла, двоеточие, имя потока»), неограниченный размер, возможность запуска процесса прямо из потока (и возможность реализовать через это бесфайловый процесс).

Приложенные файлы

  • docx 513792
    Размер файла: 612 kB Загрузок: 0

Добавить комментарий