
Процессы и потоки
Процесс – это программа в стадии выполнения.
Более мелкая единица работы – поток (thread).
Процесс состоит как минимум из одного потока.
Процессорное время разделяется между потоками, а все остальные ресурсы между процессами.
Процессы работают изолированно друг от друга. Потоки, все до одного процесса делят его адресное пространство между собой, т.е. могут работать одновременно с одними и теми же данными.
Создание процессов подразумевает создание одной или нескольких информационных структур, называется это описатель (дескриптор) HANDLER. Затем ос загружает код проги или часть кода проги в память.
Для потоков ос создает спец. структуру данных, которая называется контекст потока. В ней хранится инфо, необходимая для возобновления работы потока, если он был прерван.
Планирование и диспетчеризация потоков.
Планирование – это работа по определению того, в какой момент нужно прервать текущий поток и какому потоку предоставить выполняться.
Существует множество алгоритмов планирования. Оно мб динамическим, те выполняться каждый раз когда прерывается текущий поток, и мб статическим, это когда расписание создается заранее и изредка корректируется (например, расписание поездов)
Диспетчеризация – это переключение процессора с одного потока на другой.
Диспетчеризация состоит из трех шагов:
Сохранение контекста потока, который требуется сменить.
Загрузка контекста нового потока.
Запуск нового потока на выполнение.
Поток может находиться в одном из трех состояниях:
Выполнение: процессор выполняет команды данного потока.
Ожидание: поток заблокирован по своим внутренним причинам
Готовность: поток готов, но процессор занят выполнением другого потока.
Алгоритмы планирования бывают вытесняющие и невытесняющие. Вытесняющие алгоритмы используют принудительное прерывание потоков. в вытесняющих алгоритмах может использоваться:
Квантование (ед.времени) время разбивается на кванты равной длины, которые выделяются потоком
задается числом и определяет степень важности. Приоритет может динамически изменяться.
Смешанный алгоритм (и то и др)
Синхронизация процессов и потоков
Синхронизация – это согласование работы потоков.
Ос предоставляют несколько механизмов предназначенных для синхронизации:
Критическая секция – так называется фрагмент кода, который будет выполняться, если некоторый объект не занят, а если занят, текущий поток блокируется до его освобождения.
Симофор – это флаг занятости какого-либо ресурса, который устанавливается и сбрасывается автоматически.
Mutex
Сигналы
Подсистема управления памятью.
Типы адресов:
Символьные имена (имена переменных)
Виртуальные адреса (логические)
Физические адреса
Вся память, выделенная в программе, называется виртуальным адресным пространством.
Адресное пространство мб организованно по-разному:
Плоская модель (flat) – адрес задается одним числом
Модель «сегмент - смещение» (segment - offset) – смещение это адрес относительно начала сегмента, под сегментом понимается базовый адрес.
Номер сегмента хранится в спец.внутренних ячейках процессора (в сегментных регистрах) записывается туда программно.
Многокомпонентные модели
Существует 2 подхода к преобразованию виртуальных адресов в физические:
В момент загрузки проги в память все адреса, упоминаемые в командах, заменяются на физические
Прога загружается в неизменном виде, но при ее выполнении при каждом обращении к оперативной памяти виртуальный адрес заменяется на физический.
Вся память выделенная процессору, называется образом процесса.
Алгоритмы распределения памяти.
Алгоритмы делятся на 2 класса:
С использованием внешней памяти
Без использования внешней памяти
Алгоритмы без использования внешней памяти:
Распределение динамическими разделами
Распределение перемещаемыми разделами
При загрузке нового процесса фрагменты памяти могут перемещаться с изменением содержащихся в них адресов.
Алгоритмы с использованием внешней памяти делятся на три группы:
Страничное распределение
Страница – фрагмент памяти, фиксированного размера, сравнительно небольшой.
По номеру страницы легко найти адрес
Сегментное распределение
Сегмент – фрагмент памяти произвольного размера, для которого учитывается смысловое значение данных.
Сегментно-страничное распределение
Вся память делится на сегменты, а сегменты – на страницы. Сегмент мб размера, кратного странице.
Ос ведет таблицу размещения памяти и для каждого процесса свою собственную таблицу. При подмене адресов, которое осуществляется в момент обращения к ячейки памяти, учитывается данные из глав.таблицы размещения и собственной таблицей процессов.
Главная таблица размещения GDT и ее адрес находится в регистре процессора GDTR (регистр глобал. таблицы дескрипт). Таблица, принадлежащая процессору называется LDT, ее адрес загружается в регистр LDTR, когда процесс активен.
Виртуализация памяти может подходить на основе одного из двух подходов:
Подход – свопинг
Образы процессов выгружаются на диск и обратно целиком.
Подход – виртуальная память
Между памятью и диском перемещаются фрагменты образов.
Подсистема ввода/вывода
Основные компоненты это драйверы и файловая система.
Задачи по управлению файлами и устройствами:
Организация параллельной работы, устройств ввода/вывода и процессора.
DMA – прямой доступ к памяти.
Согласование скоростей обмена и кэширование данных.
Широко используется буферизация в оперативной памяти.
Разделение устройств и данных между процессами
Решается с помощью очередей и таблиц, которые поддерживает ос.
Обеспечение удобного логического интерфейса между устройствами и остальной частью системы.
Поддержка широкого спектра драйверов с возможностью простого включения нового драйвера в систему.
Динамическая загрузка и выгрузка драйверов.
Поддержка нескольких файловый систем.
Поддержка синхронных и асинхронных операций ввода/вывода.
Специальные файлы
Все устройства делятся на два класса: блочные и символьные. Символьные устройства работают по принципу потоков данных. У блочных устройств есть адресуемость.
Спец файл – это виртуальный объект, связанный с некоторым устройством ввода/вывода.
Интерфейс взаимодействия со спец.файлом такой же как и с обычным, т.е. чтение – запись.
Логическая организация файловой системы
Файл – это именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные.
Файловая система – часть ос включающая: 1) совокупность всех файлов на диске; 2) наборы структур данных, используемые для управления файлами; 3) комплекс системного по, реализующего различные операции над файлами.
Основные функции ФС:
Именование файлов (привязка имени к файлу)
Предоставление программного интерфейса для приложений (набор функций)
Отображение логической модели ФС на физическую организацию хранилища данных
Устойчивость к сбоям питания, ошибкам аппаратных и программных средств
Средства блокировки файла и его частей, согласование копий.
Защита файлов одного пользователя от несанкционированного доступа другого.
Типы файлов:
Обычные файлы (сборища инфо, зависят от проги, создающая этот файл)
Каталоги (инфо о др файлах в каталогах)
Специальные (фиктивные)
Имена файлов:
Простое символьное имя (само имя файла без указателя пути, идентифицирует файл в пределах каталога)
Полное имя (полный путь к файлу, цепочка простых символьных имен всех каталогов, в которых лежит этот файл)
Относительное имя (определяется через понятие «текущий каталог»)
В некоторых системах существуют псевдофайлы (псевдонимы), у которых короче путь.
Объединение файловых систем, находящихся на разных устройствах называется монтированием.
Атрибуты файлов:
Понятие файл вкл помимо данных и имени еще и атрибуты, это инфо о свойствах файлов.
Тип файла
Владелец файла (номер, идентификатор пользователя, создавшего файл)
Создатель файла
Инфо о разрешенных операциях
Времена создания, доступа, изменения
Текущий размер файла (храниться отдельно от содержимого)
Признак:
«R» - только для чтения,
«» - скрытый файл,
«» - архивный файл,
«» - системный файл,
Двоичный/символьный файл,
Временный файл
Атрибуты хранятся либо в каталогах либо в спец файлах.