
- •М онолитные
- •Модульные
- •Ос с микроядром
- •Виртуальные машины
- •М онолитные ос
- •Ос с микроядром
- •Процессы и потоки в ос. Необходимость синхронизации при работе с общими ресурсами. Способы синхронизации.
- •Механизмы синхронизации. Понятие семафора (Semaphore) и основные операции с ним. Двоичный семафор.
- •Механизмы синхронизации. Понятие мьютекса (Mutex) и основные операции с ним. Пример использование мьютекса для синхронизации нитей.
Механизмы синхронизации. Понятие семафора (Semaphore) и основные операции с ним. Двоичный семафор.
Первый механизм синхронизации, изобрел его 1967 году Дэйкстра.
Семафоры представляют собой доступные ресурсы, которые могут быть приобретены несколькими потоками в одно и то же время, пока пул ресурсов не опустеет. Тогда дополнительные потоки должны ждать, пока требуемое количество ресурсов не будет снова доступно. Семафоры очень эффективны, поскольку они позволяют одновременный доступ к ресурсам. Dec и Inc семафора. Если семафор=0 и нужно dec, то в очередь и ожидание inc. Поставщик: while(true){s1.dec();putdata(); s2.inc();}. Покупатель: while(true){s2.dec(); getdata(); s1.inc();}.
Механизмы синхронизации. Понятие мьютекса (Mutex) и основные операции с ним. Пример использование мьютекса для синхронизации нитей.
Взаимоисключения (mutex, мьютекс) — это объект синхронизации, который устанавливается в особое сигнальное состояние, когда не занят каким-либо потоком. Только один поток владеет этим объектом в любой момент времени, одновременный доступ к общему ресурсу исключается. После всех необходимых действий мьютекс освобождается, предоставляя другим потокам доступ к общему ресурсу. Состояние описывается: владельцем и кратностью(целое >=0). Операции: Lock(), Unlock(). Достоинства: автоматич освобождение(если владелец «помер»),более быстр чем семафор.
Мьютекс используется для блокировки доступа к к-л уникальному ресурсу.
Синхронизация нитей в ОС Windows
В Windows реализована вытесняющая многозадачность - это значит, что в любой момент система может прервать выполнение одной нити и передать управление другой. Ранее, в Windows 3.1, использовался способ организации, называемый кооперативной многозадачностью: система ждала, пока нить сама не передаст ей управление и именно поэтому в случае зависания одного приложения приходилось перезагружать компьютер.
Все нити, принадлежащие одному процессу, разделяют некоторые общие ресурсы - такие, как адресное пространство оперативной памяти или открытые файлы. Эти ресурсы принадлежат всему процессу, а значит, и каждой его нити. Следовательно, каждая нить может работать с этими ресурсами без каких-либо ограничений. Но... Если одна нить еще не закончила работать с каким-либо общим ресурсом, а система переключилась на другую нить, использующую этот же ресурс, то результат работы этих нитей может чрезвычайно сильно отличаться от задуманного. Такие конфликты могут возникнуть и между нитями, принадлежащими различным процессам. Всегда, когда две или более нитей используют какой-либо общий ресурс, возникает эта проблема.
Именно поэтому необходим механизм, позволяющий потокам согласовывать свою работу с общими ресурсами. Этот механизм получил название механизма синхронизации нитей (thread synchronization).
Объектов синхронизации существует несколько, самые важные из них - это взаимоисключение (mutex), критическая секция (critical section), событие (event) и семафор (semaphore). Каждый из этих объектов реализует свой способ синхронизации. Также в качестве объектов синхронизации могут использоваться сами процессы и нити (когда одна нить ждет завершения другой нити или процесса); а также файлы, коммуникационные устройства, консольный ввод и уведомления об изменении.
Чтобы создать тот или иной объект синхронизации, производится вызов специальной функции WinAPI типа Create... (напр. CreateMutex). Этот вызов возвращает дескриптор объекта (HANDLE), который может использоваться всеми нитями, принадлежащими данному процессу.
Механизмы синхронизации. Сравнение мьютекса и двоичного семафора.
Мьютекс - это объект синхронизации, который устанавливается в особое сигнальное состояние, когда не занят каким-либо потоком. Только один поток владеет этим объектом в любой момент времени, одновременный доступ к общему ресурсу исключается. После всех необходимых действий мьютекс освобождается, предоставляя другим потокам доступ к общему ресурсу. Состояние описывается: владельцем и кратностью(целое >=0). Операции: Lock(), Unlock(). Достоинства: автоматич освобождение(если владелец «помер»),более быстр чем семафор.
Реализация мьютекса проста и эффективна, что делает его использование особенно полезным в случае потоков, действующих только в пространстве пользователя.
Двоичный семафор может принимать два значения: 0 (семафор закрыт) и 1 (семафор открыт). Двоичный семафор соответствует случаю, когда с разделяемым ресурсом в каждый момент времени может работать только одна программа.
Управление оперативной памятью. Способы защиты оперативной памяти процесса от случайного или злонамеренного вторжения из другого процесса. Сегментная организация памяти. Виртуальная память.
Существует два основных подхода к обеспечению защиты оперативной памяти процесса от несанкционированного доступа со стороны других процессов. Первый подход заключается в том, что при каждом обращении процессора к оперативной памяти осуществляется поверка корректности доступа. Альтернативный подход к обеспечению защиты оперативной памяти заключается в выделении каждому процессу индивидуального адресного пространства, аппаратно изолированно.
Два основных вида организации виртуальной памяти - сегментная и страничная организация.
При сегментной организации вся виртуальная память, используемая программой, разбивается на части, называемые сегментами. Это разбиение выполняется либо самим программистом (если он программирует на языке ассемблера), либо компилятором используемого языка программирования. Размеры сегментов могут быть различными, но в пределах максимального размера, используемого в данной архитектуре. Разбиение обычно производится на логически осмысленные части, такие, как сегмент данных, сегмент кода, сегмент стека и т.п.
Таким образом, при сегментной организации у программы нет единого линейного адресного пространства. Виртуальный адрес состоит из двух частей: селектора сегмента и смещения от начала сегмента. Селектор сегмента представляет некоторое число, которое обычно является индексом в таблице сегментов данного процесса. Такая таблица содержит для каждого сегмента его размер, режим доступа (только чтение или возможна запись), флаг присутствия сегмента в памяти. Если сегмент находится в памяти, то в таблице хранится его базовый адрес (адрес физической памяти, соответствующий началу сегмента). Отсутствие сегмента означает, что его данные временно вытеснены на диск и хранятся в файле подкачки (swap file).
При каждом обращении к виртуальному адресу аппаратными средствами выполняется преобразование пары «сегмент : смещение» в физический адрес. Селектор сегмента используется для доступа к соответствующей записи таблицы сегментов. Если данный сегмент присутствует в памяти, то его базовый адрес, прочитанный в таблице, складывается со смещением из виртуального адреса. Результат сложения представляет собой физический адрес, по которому и происходит обращение к памяти.
Виртуа́льная па́мять - технология, которая была разработана с целью увеличения общего объема памяти, организации множества адресных пространств памяти, их защиты и автоматизации процесса перемещения машинного кода и данных между основной памятью компьютера и вторичным хранилищем.
В настоящее время эта технология имеет аппаратную поддержку на всех современных процессорах.
В случае расположения данных на внешних запоминающих устройствах память может быть представлена, например, специальным разделом на жёстком диске (partition) или отдельным файлом на обычном разделе диска.
Также существует термин swap также означающий виртуальную память (точнее способ её представления), или же означает подкачку данных с диска.
Применение механизма виртуальной памяти позволяет:
упростить адресацию памяти клиентским программным обеспечением;
рационально управлять оперативной памятью компьютера (хранить в ней только активно используемые области памяти);
изолировать процессы друг от друга (процесс полагает, что монопольно владеет всей памятью);
В случае расположения данных виртуальной памяти на внешних запоминающих устройствах (например, жестких дисках), как чаще всего и происходит - доступ к памяти замедляется (по сравнению с оперативными запоминающими устройствами).
Управление оперативной памятью. Понятие виртуальной памяти. Поддержка ВП со стороны процессора (на примере процессора Intel x86). Перевод виртуального адреса в адрес реальной памяти.
Управление оперативной памятью в современных ОС. Виртуальная память процесса и ее отображение в реальную оперативную память компьютера. Файл подкачки.
Цели и задачи файловой системы ОС. Многоуровневая организация файловой системы. Логическая и физическая ФС.
Файл – массив байтов.
Фа́йловая систе́ма (англ. file system) — регламент, определяющий способ организации, хранения и именования данных на носителях информации. Она определяет формат физического хранения информации, которую принято группировать в виде файлов.
Конкретная файловая система определяет размер имени файла (папки), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов.
Основные функции любой файловой системы нацелены на решение следующих задач:
Создание и именование файлов;
программный интерфейс работы с файлами для приложений (доступ);
отображения логической модели файловой системы на физическую организацию хранилища данных (хранение);
организация устойчивости файловой системы к сбоям питания, ошибкам аппаратных и программных средств;
содержание параметров файла, необходимых для правильного его взаимодействия с другими объектами системы (ядро, приложения и пр.)
защита файлов одного пользователя от несанкционированного доступа другого пользователя, а также обеспечение совместной работы с файлами (многопольз.системы)
Потребность в ФС появилась с изобретением жестких дисков!
Трехуровневая организация ФС:
Логическая файловая система (ЛФС)
Физическая файловая система (ФФС) //FAT32, NTFS и т.д
Драйверы устройств
Определить права доступа к файлу - значит определить для каждого пользователя набор операций, которые он может применить к данному файлу. В разных файловых системах может быть определен свой список дифференцируемых операций доступа. Этот список может включать следующие операции:
создание файла,
уничтожение файла,
открытие файла,
закрытие файла,
чтение файла,
запись в файл,
дополнение файла,
поиск в файле,
получение атрибутов файла,
уст-е новых знач-й атрибутов,
переименование,
выполнение файла,
чтение каталога,
Программист имеет дело с логической организацией файла, представляя файл в виде определенным образом организованных логических записей. Логическая запись - это наименьший элемент данных, которым может оперировать программист при обмене с внешним устройством. Даже если физический обмен с устройством осуществляется большими единицами, операционная система обеспечивает программисту доступ к отдельной логической записи.
Записи могут быть фиксированной длины или переменной длины. Записи могут быть расположены в файле последовательно (последовательная организация) или в более сложном порядке, с использованием так называемых индексных таблиц, позволяющих обеспечить быстрый доступ к отдельной логической записи (индексно-последовательная организация). Для идентификации записи может быть использовано специальное поле записи, называемое ключом. В файловых системах ОС UNIX и MS-DOS файл имеет простейшую логическую структуру - последовательность однобайтовых записей.
Физическая организация файла описывает правила расположения файла на устройстве внешней памяти, в частности на диске. Файл состоит из физических записей - блоков. Блок - наименьшая единица данных, которой внешнее устройство обменивается с оперативной памятью.
Непрерывное размещение - простейший вариант физической организации, при котором файлу предоставляется последовательность блоков диска, образующих единый сплошной участок дисковой памяти. Для задания адреса файла в этом случае достаточно указать только номер начального блока. Другое достоинство этого метода - простота. Но имеются и два существенных недостатка. Во-первых, во время создания файла заранее не известна его длина, а значит не известно, сколько памяти надо зарезервировать для этого файла, во-вторых, при таком порядке размещения неизбежно возникает фрагментация, и пространство на диске используется не эффективно, так как отдельные участки маленького размера (минимально 1 блок) могут остаться не используемыми.
Следующий способ физической организации - размещение в виде связанного списка блоков дисковой памяти. При таком способе в начале каждого блока содержится указатель на следующий блок. В этом случае адрес файла также может быть задан одним числом - номером первого блока. В отличие от предыдущего способа, каждый блок может быть присоединен в цепочку какого-либо файла, следовательно фрагментация отсутствует. Файл может изменяться во время своего существования, наращивая число блоков. Недостатком является сложность реализации доступа к произвольно заданному месту файла: для того, чтобы прочитать пятый по порядку блок файла, необходимо последовательно прочитать четыре первых блока, прослеживая цепочку номеров блоков. Кроме того, при этом способе количество данных файла, содержащихся в одном блоке, не равно степени двойки (одно слово израсходовано на номер следующего блока), а многие программы читают данные блоками, размер которых равен степени двойки.
Практически всегда файлы на дисках объединяются в каталоги. В простейшем случае все файлы на данном диске хранятся в одном каталоге. Такая одноуровневая схема использовалась в CP/M и в первой версии MS-DOS 1.0. Иерархическая файловая система со вложенными друг в друга каталогами впервые появилась в Multics, затем в UNIX.
NTFS и HFS. В этих файловых системах каждый файл представляет собой набор атрибутов. Атрибутами считаются не только традиционные только для чтения, системный, но и имя файла, размер и даже содержимое. Таким образом, для NTFS и HFS то, что хранится в файле, — это всего лишь один из его атрибутов.
По предназначению файловые системы можно классифицировать на следующие категории:
Для носителей с произвольным доступом (например, жёсткий диск): FAT32, HPFS и др.
Для носителей с последовательным доступом (например, магнитные ленты): QIC
Для оптических носителей — CD и DVD: ISO9660, ISO9690, HFS, UDF и др.
Виртуальные файловые системы: AEFS и др.
Сетевые файловые системы: NFS, CIFS, SSHFS, GmailFS и др.
Для флэш-памяти: YAFFS, ExtremeFFS.
Управление виртуальной памятью в современных ОС. Алгоритмы подкачки и вытеснения
Логическая файловая система ОС Windows NT.
В Windows много всего скрыто, нет жестких ссылок, логические тома (f:\...\).
Каталоги на разных дисках могут образовывать несколько отдельных деревьев – DOS/Windows. На самом деле, в DOS/Windows системах также, как и в UNIX-подобных существует один корневой каталог со вложенными директориями, имеющими названия «c:», «d:» и т. д. В эти каталоги монтируются разделы жёсткого диска. То есть, c:\ — это всего лишь ссылка на file:///c:/. Однако, в отличие от UNIX-подобных файловых систем, в Windows запись в корневой каталог запрещена, как и просмотр его содержимого.
Файловые системы Windows: FAT16, FAT32, NTFS.
Windows NT в своей новой файловой системе NTFS устанавливает, что имя файла может содержать до 255 символов, не считая завершающего нулевого символа.
Требования к NTFS (New Technology File System):
Надежность и самосогласованность
Высокая скорость работы
Поддержка различных ЛФС
Структура таблиц. Таблицы в NTFS устроены существенно лучше; таких ограничений на размер не имеется, кроме того, они существенно устойчивей к сбоям - если компьютер зависает или "мигает" электричество, велика вероятность, что системе не потребуется восстанавливать целостность таблиц - они смогут корректно восстановиться благодаря дублированию информации.
Кроме того, в NTFS имеются встроенные средства для разграничения прав доступа и предоставления квот. Возможно, для персонального компьютера это и не так важно, но при разделении прав на работе может очень пригодиться. Единственная существенная проблема NTFS - то, что ее спецификации закрыты, поэтому в операционных системах, не принадлежащих Microsoft поддержка NTFS затруднена.
Логическая файловая система ОС UNIX.
Структура – дерево. Корневой каталог root ( /).
Каталоги на разных дисках могут объединяться в одно дерево, общее для всех дисков(UNIX-подобные системы). В UNIX-подобных файловых систем запись в корневой каталог разрешена, как и просмотр его содержимого.
В UNIX существует только один корневой каталог, а все остальные файлы и каталоги вложены в него. Чтобы получить доступ к файлам и каталогам на каком-нибудь диске, необходимо примонтировать этот диск командой mount. Эту команду может вызывать только root.
Метаинформация находится в специальной таблице.
Основные каталоги:
Bim – все системные программные утилиты
Urs – юзеры
Tmp – временные файлы
Dev – устройства
Etc – конфигурация ОС
В Unix основные понятия: процесс, пользователь, файл.
Типы файлов в Unix:
Обычный файл
Каталог
Символическая ссылка (symlink) – в имени файла содержится имя другого файла
Именованный канал (named pipe)
Файлы устройств (байтовые или блочные устройства)
Сокеты
Физическая организация файловой системы. Файловая система FAT.
Физическая организация файловой системы. Файловая система System V (s5fs).
Физическая организация файловой системы. Файловая система NTFS.
Управление вводом/выводом. Понятие аппаратного прерывания и его обработка.
Управление вводом/выводом. Синхронный и асинхронный ввод/вывод.
Управление безопасностью. Пользователь, его атрибуты и права доступа.
Управление безопасностью. Задача администрирования вычислительной системы и компьютерной сети.
Управление доступом к файлам в ОС UNIX.
Управление доступом к файлам в ОС Windows NT. Списки прав доступа.
Язык программирования Java. Виртуальная машина Java. Технология Java.
Платформа .NET. Основные идеи и положения. Языки программирования .NET.
Функциональные компоненты ОС. Управление файлами
Функциональные компоненты ОС. Управление процессами.
Функциональные компоненты ОС. Безопасность и защита данныx.
Функциональные компоненты ОС. Пользовательский интерфейс.
Функциональные компоненты ОС. Управление оперативной памятью.
Компьютерные сети. Сетевые ОС и их задачи.
Компьютерные сети. Протоколы TCP/IP. Интернет.
Переносимость программного обеспечения. Стандарты операционных систем.
Литература
Олифер В.Г., Олифер Н.А. Сетевые операционные системы. -СПб.: Питер, 2007.
Робачевский А.М. Операционная система UNIX, - СПб.: BHV – Санкт-Петербург, 2005.
Таненбаум Э. Современные операционные системы. – М.: Питер, 2008.