- •Создание процесса.
- •Завершение процесса
- •Приведем пример использования потоков.
- •Основным недостатком управления потоками в ядре является существенная цена системных запросов
- •Виртуальное адресное пространство
- •Виртуальное адресное пространство процесса.
- •Нечто странное и необъяснимое Как избежать состязания?
- •Если нам удастся избежать одновременного нахождения двух процессов в критических областях, мы сможем избежать состязаний.
- •14) Критические области. Взаимное исключение с активным ожиданием. Запрещение прерываний.
- •Переменные блокировки.
- •Строгое чередование
- •Опечатка
- •Алгоритм Петерсона
- •Команда tsl
- •Задачи алгоритмов планирования.
- •Список задач
- •Виртуальная память. Архитектурные средства поддержки виртуальной памяти
- •9.2.1 Страничная память
- •9.2.3 Таблица страниц
- •Идеальный алгоритм замещение страниц
- •Алгоритм nru
- •Алгоритм fifo
- •Алгоритм "часы"
- •Алгоритм lru (Least Recently Used - использовавшаяся реже всего)
Виртуальное адресное пространство
Виртуальное адресное пространство - это системе адресации , используемая в современных операционных системах - в частности - при работе операционной системы с процессами (/потоками). ] Такая система удобна по различным причинам - в том числе и потому, что позволяет изолировать "рабочие пространства" процессов друг от друга . Очередной адрес, создаваемый процессом для идентификации области памяти, а которой процесс хранит некоторые данные называется логическим (виртуальным) адресом и относится именно к виртуальному адресному пространству.
Каждый раз, когда программа запускается внутри операционной системы - операционная система (ОС) создаёт хотя бы один новый процесс и новое виртуальное адресное пространство (ВАП) для него.
Виртуальное адресное пространство зависит от:
архитектуры процессора;
операционной системы (которая может накладывать дополнительные ограничения)
Виртуальное адресное пространство не зависит от:
- объема реальной физической(оперативной) памяти, установленной в компьютере.
- объема жёсткого диска
Адреса команд и переменных в готовой машинной программе, подготовленной к выполнению системой программирования, как раз и являются виртуальными адресами.
Прилагательное «виртуальное» применительно к адресному пространству означает, что это общее число доступных приложению уникально адресуемых ячеек памяти, но не общий объём памяти, установленной в компьютере, или выделенной в конкретный момент времени данному приложению - в том числе - адреса в виртуальном пространстве не обязательно постоянно соответствуют одним и тем же адресам реальной физической памяти. Например - когда физической (оперативной) памяти не хватает, диспетчер памяти выгружает часть содержимого памяти на диск. При обращении потока по виртуальному адресу, соответствующему переписанным на диск данным, диспетчер памяти снова загружает эти данные с диска в память.
Виртуальное адресное пространство процесса.
Виртуальное адресное пространство процесса - это фактически всего лишь диапазон адресов, который может данный процесс использовать - при это, как было сказано выше ,
13) Критические области. Семафоры. Мьютексы. Мониторы
В некоторых операционных системах процессы, работающие совместно, могут сообща использовать некое общее хранилище данных. Каждый из процессов может считывать из общего хранилища данных и записывать туда информацию. Это хранилище представляет собой участок в основной памяти (возможно, в структуре данных ядра) или файл общего доступа. Местоположение совместно используемой памяти не влияет на суть взаимодействия и возникающие проблемы. Ситуации, в которых два (и более) процесса считывают или записывают данные одновременно и конечный результат зависит от того, какой из них был первым, называются состояниями состязания. Отладка программы, в которой возможно состояние состязания, вряд ли может доставить удовольствие. Результаты большинства тестовых прогонов будут хорошими, но изредка будет происходить
Нечто странное и необъяснимое Как избежать состязания?
Основным способом предотвращения проблем в этой и любой другой ситуации, связанной с совместным использованием памяти, файлов и чего-либо еще, является запрет одновременной записи и чтения разделенных данных более чем одним процессом. Говоря иными словами, необходимо взаимное исключение. Это означает, что в тот момент, когда один процесс использует разделенные данные, другому процессу это делать будет запрещено.
Некоторый промежуток времени процесс занят внутренними расчетами и другими задачами, не приводящими к состояниям состязания. В другие моменты времени процесс обращается к совместно используемым данным или выполняет какое-то другое действие, которое может привести к состязанию. Часть программы, в которой есть обращение к совместно используемым данным, называется критической областью или критической секцией.
