ЗНАЕТЕ ЛИ ВЫ?

Процессы (порождение, завершение, ожидание завершения)



1) Тяжелые

Процессом обычно называют экземпляр выполняемой программы.

Программа - статический набор команд, а процесс -набор ресурсов и данных, использующихся при выполнении программы.

ОС постоянно смотрит в таблицу процессов и смотрит, какой процесс выполнить.

Процессы создаются при включении ОС или при системном вызове создания процесса.

После выполнения процесса он завершится (также завершение возможно при: ошибка, конец исполнения инструкций(exit), уничтожение другими процессами(kill))

Ожидание может возникнуть, если процесс запросил память, которая не может быть предоставлена. Тогда процесс помещается в очередь ожидания.

Процесс может синхронизировать продолжение своего выполнения с моментом завершения работы потомка, используя pid=wait(adr).

У каждого процесса свое адресное пространство, регистры, стек, переменные и т.д.

Если сын умер, но отец еще не вызвал wait, то он становится zombie.

Если умер отец, то процесс init усыновляет сына.

 

2) Нити («легкие» процессы)

Нити не имеют собственной области памяти.

Нити существуют как составные элементы процессов (тогда как процессы независимы).

Процессы несут значительно больше информации о состоянии, тогда как несколько нитей внутри процесса совместно используют информацию о состоянии, а также память и другие вычислительные ресурсы

Процессы имеют отдельные адресные пространства, тогда как нити совместно используют их адресное пространство

pthread_create() – создать нить.

У каждой нити свой контекст (состояние регистров, РИ, РС), но общий стэк.

pthread_join(нить) – нить, вызвавшая эту функцию, не выполнится, пока не выполнится нить из параметра (она должна сказать pthread_exit() ).

Pthread_self – указать, какая я нить

Нити делают работу параллельно (кроме join).

 

3) Волокна (fiber)

Средство ОС для параллелизации (как нити).

Нити – полноценный поток исполнения, руководство нитями осуществляет ОС, тогда как волокна – это один поток исполнения, переключается процессом. Практически получается распараллеливание.

 

Смысл: нам нужна многопоточность, но делать много процессов не вариант, т.к. они занимают память, адреса и т.п….


 

Ядро ОС: задачи. Типы ядер: монолитное, микроядро, гибридное.

1) Задачи

Управление ОП, доставка сигналов между процессами (signal, pipe, fifo etc.), обеспечение приложениям доступа к ресурсам компьютера (ввод, вывод, память, аппаратура).

Ядро представляет собой наиболее низкий уровень абстракции для доступа приложений к ресурсам системы.

 

2) Монолитное ядро

Все части монолитного ядра работают в одном адресном пространстве (обращение к элементам данных, устройств, а также к памяти общие). Все компоненты ядра являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путём непосредственного вызова процедур.

Достоинства: Скорость работы, упрощённая разработка модулей.

Недостатки: Поскольку всё ядро работает в одном адресном пространстве, сбой в одном из компонентов может нарушить работоспособность всей системы.

3) Микроядро

Предоставляет только элементарные функции управления процессами и минимальный набор абстракций для работы с оборудованием.

Микроядро берет на себя работу с ОП (иначе, если бы её контролировали все процессы, могли бы быть ошибки).

Большая часть работы осуществляется с помощью специальных пользовательских процессов, называемых сервисами. Все драйверы и модули - в сервисных процессах, иногда с явной невозможностью загрузки любых модулей расширения в собственно микроядро, а также разработки таких расширений.

Достоинства: устойчивость к сбоям оборудования, ошибкам. Простое добавление новых компонентов. Не прерывая работы можно загружать и выгружать новые драйверы, файловые системы и т. д. Повышает надежность системы, поскольку ошибка на уровне непривилегированной программы менее опасна, чем отказ на уровне режима ядра.

Недостатки: Передача данных между процессами требует накладных расходов.

 

4) Гибридное ядро - модифицированные микроядра, позволяющие для ускорения работы запускать «несущественные» части в пространстве ядра.

Можно добавлять драйвера устройств двумя способами: в ядро и в пользовательское пространство.

Смешанное ядро, в принципе, должно объединять преимущества монолитного ядра и микроядра: казалось бы, микроядро и монолитное ядро — крайности, а смешанное — золотая середина. В них возможно добавлять драйвера устройств двумя способами: и внутрь ядра, и в пользовательское пространство. Но на практике концепция смешанного ядра часто подчёркивает не только достоинства, но и недостатки обоих типов ядер.


 

Поддержка со стороны архитектуры для многозадачных систем

Защита памяти — способ управления правами доступа к отдельным регионам памяти. Используется большинством многозадачных операционных систем.

Цель: запрет процессу доступа к той памяти, которая не выделена для него.

Такие запреты повышают надежность работы программ и операционных систем, так как ошибка в одной программе не может повлиять на память других приложений.

Аппарат прерываний:

для управления внешними устройствами и получения возможности асинхронной работы с ними.

Синхронная работа осуществляется так — система говорит “Дай мне блок информации”, а затем стоит и ждет этого блока.

Работа асинхронна, если система говорит “Принеси мне блок информации” и продолжает свою работу, а когда приходит блок, она прерывается и принимает информацию. Такова схема прерываний. Одним из прерываний – прерывание по завершению обмена.

В момент возникновения прерывания действия в аппаратуре ВС следующие:

В некоторые специальные регистры заносится информация о выполняемой в данный момент программе (счетчик команд, регистр результата, указатель стека и несколько регистров общего назначения). Эти действия называются малым упрятыванием.

В некоторый специальный управляющий регистр, условно будем называть его регистром прерываний, помещается код возникшего прерывания.

Запускается программа обработки прерываний операционной системы.

Если это прерывание было фатальным (деление на ноль, например), то продолжать выполнение программы бессмысленно, и управление передается части операционной системы, которая эту программу выкинет. Если это прерывание не фатальное, происходит дополнительный анализ, который приводит к ответу на вопрос: можно ли оперативно обработать прерывание? Пример прерывания, которое всегда можно обработать оперативно — прерывание по таймеру.

Режим супервизора и обычный

В современных системах чаще всего используется аппаратно реализованное разделение системного (режим супервизора) и пользовательского уровней привилегий.

Процессор может работать в одном из двух режимов: пользовательском и системном.

Обычно такую архитектуру называют кольцами защиты: структуру привилегий изображают в виде двух концентрических кругов, где пользовательский круг является внешним и менее привилегированным, а системный - внутренним. В ряде современных систем количество колец может быть увеличено, например процессоры x86 имеют 4 уровня привилегий. 0 уровень – супервизор, 3 уровень – пользователь.

В системном режиме разрешено управление прерываниями процессора и доступ к регистрам. Команды доступа к адресному пространству процедуры ввода/вывода также обычно разрешены только в системном режиме.

Программа, исполняющаяся в системном режиме, имеет доступ к адресным пространствам пользовательских программ.

В пользовательском режиме процессор может исполнять только обычные команды обработки данных и не имеет доступа к системному адресному пространству.

Переключение из пользовательского режима в системный осуществляется специальной командой. Обычно такая команда сразу же передает управление одному из модулей ядра системы.

Управление памятью

1) Одиночное распределение:

ОП делится на 2 области. В одной находится ОС, другая предназначена для задач пользователя (предполагается однопроцессная система).

Необходимые аппаратные средства: Регистр границ (в нем граница между ОС и пользовательской частью ОП)

Если ЦП в режиме пользователя попытается обратиться в область ОС, то возникает прерывание.

В режиме ОС мы можем обращаться в любую точку ОП, если мы находимся в пользовательском режиме, то запрошенный адрес сравнивается с содержимым регистра границ, и, если он окажется меньше, т.е. мы хотим обратиться в часть ОП, занятую под ОС, то выдается прерывание.

Достоинства: простота.

Недостатки: часть памяти просто не используется (область памяти, занятая процессом, занята на все время выполнения процесса, большие участки памяти простаивают).

Ограничение на размеры процесса. Т.е. загрузить в эту систему процесс, превосходящий область памяти, мы не можем.

 

2) Страничное:

Память разделена на области (страницы) размера. Типичный размер 4кб. Страница – минимальная единица выделенной памяти (даже запрос на 1 байт потребует выделения страницы).

Процесс обращается к памяти через виртуальные адреса (содержат номер страницы и смещение в ней). ЦП преобразует этот виртуальный адрес в физический. Если не удалось, возможно, что страница была откачана на ЖД (страница, к которой давно не обращались). Тогда она загрузится в ОП.

Таблица страниц хранит в себе виртуальные адреса страниц.

Недостатки: для 2 кб требуется выделение целой страницы – большой расход памяти

Преимущества: возможность изолировать процессы (создание для каждого процесса своего адресного пространства)

 

3) Сегментное:

Память делится на части произвольного размера — сегменты. Этот механизм позволяет, к примеру, разбить данные процесса на логические блоки. Для каждого сегмента могут быть назначены права доступа к нему.

Сегменты одной программы могут занимать в оперативной памяти несмежные участки.

Система создает таблицу сегментов процесса, в которой для каждого сегмента указывается физический адрес сегмента в ОП, размер сегмента, правила доступа.

Система с сегментной организацией функционирует аналогично системе со страничной организацией: время от времени происходят прерывания, связанные с отсутствием нужных сегментов в памяти, при необходимости освобождения памяти некоторые сегменты выгружаются, при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический. Кроме того, при обращении к памяти проверяется, разрешен ли доступ требуемого типа к данному сегменту.

Недостатки: более медленное по сравнению со страничной организацией преобразование адреса.

Преимущества: произвольный размер сегмента.

 

4) Сегментно-страничное:

Суть данного подхода состоит в следующем. Программа разбивается н сегменты, каждый из которых размещается на количестве страниц памяти.

Перемещение данных осуществляется страницами.

Разбиение на сегменты позволяет определять разные права доступа к разным частям программы.

С каждым процессом связана одна таблица сегментов и несколько таблиц страниц.

Первая компонента виртуального адреса содержит номер сегмента. Вторая компонента виртуального адреса состоит из двух полей: номера виртуальной страницы и смещения относительно начала страницы.

Недостатки: ещё большая задержка доступа к памяти. Задержка примерно втрое больше, чем при простой прямой адресации.

Достоинства: позволяет совместно использовать одни и те же сегменты в виртуальной памяти разными задачами, произвольный размер выделяемой памяти.

 

5) Своппинг

Неактивные участки памяти помещаются на ЖД, освобождая ОП для загрузки других фрагментов памяти. Они хранятся на ЖД в swap-файле или swap-разделы.

Когда приложение обратится к откаченной странице, произойдет исключительная ситуация. Обработчик этого события должен проверить, была ли ранее откачена запрошенная страница, и, если она есть в свопе, загрузить ее обратно в память.

 

mmap —системный вызов, позволяющий выполнить отображение файла или устройства на память. Создается несвопируемая страница, где происходит изменение файла. Затем, когда надо, он отгружается в ЖД.

Фактически, мы работаем с файлами как с памятью – удобно кодить, но та же проблема, что и у страниц – под файл в 2 байта выделяется новая страница.

Shared memory работает через mmap.


 

Файловые системы

Файловая система – порядок, определяющий способ хранения, именования и организации данных на ЖД.

FAT - «таблица размещения файлов»

В файловой системе FAT секторы диска объединяются в кластеры. Количество секторов в кластере равно степени двойки. Выбирают золотую середину размера кластеров (не слишком большие и не слишком маленькие во избежание потери памяти впустую и большой адресации).

ФС разделена на три смежные области:

- Зарезервированная область. Содержит служебные структуры, которые принадлежат загрузочной записи раздела

- Область таблицы FAT, содержащая массив индексных указателей ("ячеек"), соответствующих кластерам области данных.

- Область данных, где записано собственно содержимое файлов.

 

Таблица FAT – массив указателей на кластеры. N-й указатель соответствует кластеру с тем же номером. Значение индексного указателя соответствует состоянию соответствующего кластера. Состояния:

- кластер свободен – указатель обнулен;

- кластер занят файлом и не является последним кластером файла – значение указателя — это номер следующего кластера файла;

- кластер является последним кластером файла – указатель содержит метку

- кластер поврежден;

Папка/директория - файл, помеченный специальным атрибутом. Данными такого файла в любой версии является список файловых записей.

Содержимое папок: таблица

Размещение файлов: списком.

Объем ФС <=8ТБ Объем файла <=4ГБ

 

NTFS

Делит все полезное место на кластеры.

Диск NTFS условно делится на две части. Первые 12% диска отводятся под так называемую MFT зону - пространство, в которое растет метафайл MFT. Остальные 88% диска представляют собой обычное пространство для хранения файлов.

Каждый элемент системы представляет собой файл - даже служебная информация. Самый главный файл на NTFS называется MFT - общая таблица файлов. Именно он размещается в MFT зоне и представляет собой централизованный каталог всех остальных файлов диска и себя самого. MFT поделен на записи, и каждая запись соответствует какому либо файлу.

Хранение файла: обязательный элемент - запись в MFT. В этом месте хранится вся информация о файле, за исключением данных. Имя файла, размер, положение на диске отдельных фрагментов, и т.д. Если для информации не хватает одной записи MFT, то используются несколько, причем не обязательно подряд.

Каталог на NTFS представляет собой файл, хранящий ссылки на другие файлы и каталоги, создавая иерархическое строение данных на диске.

Журналирование: NTFS - отказоустойчивая система, которая вполне может привести себя в корректное состояние при практически любых реальных сбоях.

Содержимое папок: B-дерево. Размещение файлов списком.

UFS

Несколько блоков в начале раздела под загрузочную область.

суперблок, описывающий настройку некоторых параметров файловой системы. Хранит размеры всех блоков.

В ОП постоянно хранится копия суперблока.

Индексный дескриптор (inode) описывает файл, содержит его мета-данные, а также содержит массив указателей на данные файла.

Если нужно 16 указателей, то вместо 16-го мы делаем указатель на такой же inod и все продолжается.

Каталог файлов содержит только список файлов в директории и индексный дескриптор, связанный с каждым файлом. Все метаданные файла хранятся в индексном дескрипторе.

Содержимое папок: таблица

Размещение файлов: inode (B-дерево)

Журналируемая.

 

ExtFS2 — файловая система ядра Linux.

Быстрая и производительная. Устройство такое же, как в UFS.

В отличие от UFS, нет жуналируемости.

 

ExtFS3

Точно такая же, как ExtFS2, журналируемая.

 

FFS

Такая же, как UFS, но диски еще разделены на цилиндр-группы – секторы жесткого диска.

Когда мы добавляем файлы, файловая система размещает их таким образом, что они лежат в одной цилиндр-группе, чтобы уменьшить движение головки.

За счет того, что головка мало двигается, она очень производительная и быстрая.

 

ZFS — copy-on-write (при копировании области данных создается реальная копия только тогда, когда ось обращается к данным с целью записи) 128-битная файловая система. Поддерживает большие объёмы данных, объединяет концепции файловой системы и менеджера логических дисков (томов) и физических носителей.

Основное преимущество — полный контроль над физическими и логическими носителями. Зная расположения файла, ZFS обеспечивает высокую скорость доступа к ним, контроль их целостности. Переменный размер блока, параллельность чтения-записи, использование контрольных сумм.

Содержимое папок: Расширяемая хэш-таблица

Размещение файлов – это B-деревья, чтобы доступ к файлу был за логарифм.

Это транзакционная файловая система.

 

Btrfs —copy-on-write файловая система, основанная на структурах Б-деревьев

Содержимое папок: B-tree

Сравнение

Ограничения / возможности NTFS / ExtFS3 (журналируемые) FAT32 / ExtFS2 UFS FFS ZFS / BTRFS (транзакционные)
Пользовательские данные - - - - +
Системные данные + За счет журнала - - - + За счет транзакции
Фрагментация + / - - Чтобы пройти в конец, надо пройти весь список - + -
Скорость + - / + + + +
Размещение файлов Списком / см. UFS Список / см. UFS B-tree B-tree B-tree / B-tree
Содержимое папок B-tree / см. UFS Таблица / см. UFS Таблица Таблица Хеш-таблица / B-tree






Последнее изменение этой страницы: 2016-08-16; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.238.107.166 (0.021 с.)